@hyperlane-xyz/core 5.5.0 → 5.6.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/contracts/PackageVersioned.sol +1 -1
- package/contracts/client/GasRouter.sol +16 -0
- package/contracts/libs/TypeCasts.sol +4 -0
- package/contracts/token/HypERC20Collateral.sol +16 -0
- package/contracts/token/extensions/HypERC4626.sol +66 -29
- package/contracts/token/extensions/HypERC4626Collateral.sol +8 -8
- package/contracts/token/extensions/WHypERC4626.sol +113 -0
- package/dist/buildArtifact.js +1 -1
- package/dist/buildArtifact.json +1 -1
- package/dist/contracts/client/GasRouter.d.ts +11 -0
- package/dist/contracts/client/GasRouter.d.ts.map +1 -1
- package/dist/contracts/test/TestGasRouter.d.ts +11 -0
- package/dist/contracts/test/TestGasRouter.d.ts.map +1 -1
- package/dist/contracts/token/HypERC20.d.ts +11 -0
- package/dist/contracts/token/HypERC20.d.ts.map +1 -1
- package/dist/contracts/token/HypERC20Collateral.d.ts +11 -0
- package/dist/contracts/token/HypERC20Collateral.d.ts.map +1 -1
- package/dist/contracts/token/HypERC721.d.ts +11 -0
- package/dist/contracts/token/HypERC721.d.ts.map +1 -1
- package/dist/contracts/token/HypERC721Collateral.d.ts +11 -0
- package/dist/contracts/token/HypERC721Collateral.d.ts.map +1 -1
- package/dist/contracts/token/HypNative.d.ts +11 -0
- package/dist/contracts/token/HypNative.d.ts.map +1 -1
- package/dist/contracts/token/extensions/FastHypERC20.d.ts +11 -0
- package/dist/contracts/token/extensions/FastHypERC20.d.ts.map +1 -1
- package/dist/contracts/token/extensions/FastHypERC20Collateral.d.ts +11 -0
- package/dist/contracts/token/extensions/FastHypERC20Collateral.d.ts.map +1 -1
- package/dist/contracts/token/extensions/HypERC4626.d.ts +37 -11
- package/dist/contracts/token/extensions/HypERC4626.d.ts.map +1 -1
- package/dist/contracts/token/extensions/HypERC4626Collateral.d.ts +26 -15
- package/dist/contracts/token/extensions/HypERC4626Collateral.d.ts.map +1 -1
- package/dist/contracts/token/extensions/HypERC4626OwnerCollateral.d.ts +11 -0
- package/dist/contracts/token/extensions/HypERC4626OwnerCollateral.d.ts.map +1 -1
- package/dist/contracts/token/extensions/HypERC721URICollateral.d.ts +11 -0
- package/dist/contracts/token/extensions/HypERC721URICollateral.d.ts.map +1 -1
- package/dist/contracts/token/extensions/HypERC721URIStorage.d.ts +11 -0
- package/dist/contracts/token/extensions/HypERC721URIStorage.d.ts.map +1 -1
- package/dist/contracts/token/extensions/HypFiatToken.d.ts +11 -0
- package/dist/contracts/token/extensions/HypFiatToken.d.ts.map +1 -1
- package/dist/contracts/token/extensions/HypNativeScaled.d.ts +11 -0
- package/dist/contracts/token/extensions/HypNativeScaled.d.ts.map +1 -1
- package/dist/contracts/token/extensions/HypXERC20.d.ts +11 -0
- package/dist/contracts/token/extensions/HypXERC20.d.ts.map +1 -1
- package/dist/contracts/token/extensions/HypXERC20Lockbox.d.ts +11 -0
- package/dist/contracts/token/extensions/HypXERC20Lockbox.d.ts.map +1 -1
- package/dist/contracts/token/extensions/WHypERC4626.d.ts +466 -0
- package/dist/contracts/token/extensions/WHypERC4626.d.ts.map +1 -0
- package/dist/contracts/token/extensions/WHypERC4626.js +2 -0
- package/dist/contracts/token/extensions/WHypERC4626.js.map +1 -0
- package/dist/contracts/token/extensions/index.d.ts +1 -0
- package/dist/contracts/token/extensions/index.d.ts.map +1 -1
- package/dist/contracts/token/libs/FastTokenRouter.d.ts +11 -0
- package/dist/contracts/token/libs/FastTokenRouter.d.ts.map +1 -1
- package/dist/contracts/token/libs/TokenRouter.d.ts +11 -0
- package/dist/contracts/token/libs/TokenRouter.d.ts.map +1 -1
- package/dist/factories/contracts/AttributeCheckpointFraud__factory.d.ts +1 -1
- package/dist/factories/contracts/AttributeCheckpointFraud__factory.d.ts.map +1 -1
- package/dist/factories/contracts/AttributeCheckpointFraud__factory.js +1 -1
- package/dist/factories/contracts/AttributeCheckpointFraud__factory.js.map +1 -1
- package/dist/factories/contracts/CheckpointFraudProofs__factory.d.ts +1 -1
- package/dist/factories/contracts/CheckpointFraudProofs__factory.d.ts.map +1 -1
- package/dist/factories/contracts/CheckpointFraudProofs__factory.js +1 -1
- package/dist/factories/contracts/CheckpointFraudProofs__factory.js.map +1 -1
- package/dist/factories/contracts/Mailbox__factory.d.ts +1 -1
- package/dist/factories/contracts/Mailbox__factory.d.ts.map +1 -1
- package/dist/factories/contracts/Mailbox__factory.js +1 -1
- package/dist/factories/contracts/Mailbox__factory.js.map +1 -1
- package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.d.ts +1 -1
- package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.js +1 -1
- package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.d.ts +1 -1
- package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.js +1 -1
- package/dist/factories/contracts/client/GasRouter__factory.d.ts +15 -0
- package/dist/factories/contracts/client/GasRouter__factory.d.ts.map +1 -1
- package/dist/factories/contracts/client/GasRouter__factory.js +19 -0
- package/dist/factories/contracts/client/GasRouter__factory.js.map +1 -1
- package/dist/factories/contracts/hooks/ArbL2ToL1Hook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/ArbL2ToL1Hook__factory.d.ts.map +1 -1
- package/dist/factories/contracts/hooks/ArbL2ToL1Hook__factory.js +1 -1
- package/dist/factories/contracts/hooks/ArbL2ToL1Hook__factory.js.map +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/OPL2ToL1Hook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/OPL2ToL1Hook__factory.d.ts.map +1 -1
- package/dist/factories/contracts/hooks/OPL2ToL1Hook__factory.js +1 -1
- package/dist/factories/contracts/hooks/OPL2ToL1Hook__factory.js.map +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/PolygonPosHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/PolygonPosHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/ProtocolFee__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/ProtocolFee__factory.d.ts.map +1 -1
- package/dist/factories/contracts/hooks/ProtocolFee__factory.js +1 -1
- package/dist/factories/contracts/hooks/ProtocolFee__factory.js.map +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.d.ts.map +1 -1
- package/dist/factories/contracts/hooks/igp/InterchainGasPaymaster__factory.js +1 -1
- package/dist/factories/contracts/hooks/igp/InterchainGasPaymaster__factory.js.map +1 -1
- package/dist/factories/contracts/hooks/igp/StorageGasOracle__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/igp/StorageGasOracle__factory.js +1 -1
- package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.js +1 -1
- package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.d.ts.map +1 -1
- package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.js +1 -1
- package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.js.map +1 -1
- 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/hooks/warp-route/RateLimitedHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.js +1 -1
- package/dist/factories/contracts/isms/NoopIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/NoopIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/PausableIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/PausableIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/TrustedRelayerIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/TrustedRelayerIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/aggregation/StaticAggregationIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/aggregation/StaticAggregationIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/aggregation/StaticAggregationIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/aggregation/StaticAggregationIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.d.ts.map +1 -1
- package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.js +1 -1
- package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.js.map +1 -1
- package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.d.ts.map +1 -1
- package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.js +1 -1
- package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.js.map +1 -1
- package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__factory.d.ts.map +1 -1
- package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__factory.js +1 -1
- package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__factory.js.map +1 -1
- package/dist/factories/contracts/isms/hook/OPStackIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/OPStackIsm__factory.d.ts.map +1 -1
- package/dist/factories/contracts/isms/hook/OPStackIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/hook/OPStackIsm__factory.js.map +1 -1
- package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.d.ts.map +1 -1
- package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.js.map +1 -1
- package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.d.ts.map +1 -1
- package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.js +1 -1
- package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.js.map +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsm__factory.js +1 -1
- 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/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.d.ts.map +1 -1
- package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.js.map +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.d.ts.map +1 -1
- package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory__factory.js.map +1 -1
- package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.d.ts.map +1 -1
- package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.js.map +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/isms/warp-route/RateLimitedIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/warp-route/RateLimitedIsm__factory.d.ts.map +1 -1
- package/dist/factories/contracts/isms/warp-route/RateLimitedIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/warp-route/RateLimitedIsm__factory.js.map +1 -1
- package/dist/factories/contracts/libs/EnumerableMapEnrollment__factory.d.ts +1 -1
- package/dist/factories/contracts/libs/EnumerableMapEnrollment__factory.js +1 -1
- package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts +1 -1
- package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts.map +1 -1
- package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js +1 -1
- 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.d.ts.map +1 -1
- package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js +1 -1
- package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js.map +1 -1
- package/dist/factories/contracts/middleware/libs/OwnableMulticall__factory.d.ts +1 -1
- package/dist/factories/contracts/middleware/libs/OwnableMulticall__factory.d.ts.map +1 -1
- package/dist/factories/contracts/middleware/libs/OwnableMulticall__factory.js +1 -1
- package/dist/factories/contracts/middleware/libs/OwnableMulticall__factory.js.map +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts.map +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js.map +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.d.ts.map +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.js +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.js.map +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.d.ts.map +1 -1
- package/dist/factories/contracts/mock/MockMailbox__factory.js +1 -1
- package/dist/factories/contracts/mock/MockMailbox__factory.js.map +1 -1
- package/dist/factories/contracts/mock/MockOptimism.sol/MockOptimismMessenger__factory.d.ts +1 -1
- package/dist/factories/contracts/mock/MockOptimism.sol/MockOptimismMessenger__factory.d.ts.map +1 -1
- package/dist/factories/contracts/mock/MockOptimism.sol/MockOptimismMessenger__factory.js +1 -1
- package/dist/factories/contracts/mock/MockOptimism.sol/MockOptimismMessenger__factory.js.map +1 -1
- package/dist/factories/contracts/mock/MockOptimism.sol/MockOptimismPortal__factory.d.ts +1 -1
- package/dist/factories/contracts/mock/MockOptimism.sol/MockOptimismPortal__factory.d.ts.map +1 -1
- package/dist/factories/contracts/mock/MockOptimism.sol/MockOptimismPortal__factory.js +1 -1
- package/dist/factories/contracts/mock/MockOptimism.sol/MockOptimismPortal__factory.js.map +1 -1
- package/dist/factories/contracts/mock/MockPortalBridge__factory.d.ts +1 -1
- package/dist/factories/contracts/mock/MockPortalBridge__factory.js +1 -1
- package/dist/factories/contracts/test/TestGasRouter__factory.d.ts +16 -1
- package/dist/factories/contracts/test/TestGasRouter__factory.d.ts.map +1 -1
- package/dist/factories/contracts/test/TestGasRouter__factory.js +20 -1
- package/dist/factories/contracts/test/TestGasRouter__factory.js.map +1 -1
- package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.d.ts.map +1 -1
- package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.js +1 -1
- package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.js.map +1 -1
- package/dist/factories/contracts/test/TestMailbox__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestMailbox__factory.d.ts.map +1 -1
- package/dist/factories/contracts/test/TestMailbox__factory.js +1 -1
- package/dist/factories/contracts/test/TestMailbox__factory.js.map +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/TestMessage__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestMessage__factory.d.ts.map +1 -1
- package/dist/factories/contracts/test/TestMessage__factory.js +1 -1
- package/dist/factories/contracts/test/TestMessage__factory.js.map +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.d.ts.map +1 -1
- package/dist/factories/contracts/test/TestQuery__factory.js +1 -1
- package/dist/factories/contracts/test/TestQuery__factory.js.map +1 -1
- package/dist/factories/contracts/test/TestRemoteChallenger__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestRemoteChallenger__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/avs/TestHyperlaneServiceManager__factory.d.ts +1 -1
- package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.js +1 -1
- package/dist/factories/contracts/token/HypERC20Collateral__factory.d.ts +16 -1
- package/dist/factories/contracts/token/HypERC20Collateral__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/HypERC20Collateral__factory.js +20 -1
- package/dist/factories/contracts/token/HypERC20Collateral__factory.js.map +1 -1
- package/dist/factories/contracts/token/HypERC20__factory.d.ts +16 -1
- package/dist/factories/contracts/token/HypERC20__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/HypERC20__factory.js +20 -1
- package/dist/factories/contracts/token/HypERC20__factory.js.map +1 -1
- package/dist/factories/contracts/token/HypERC721Collateral__factory.d.ts +16 -1
- package/dist/factories/contracts/token/HypERC721Collateral__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/HypERC721Collateral__factory.js +20 -1
- package/dist/factories/contracts/token/HypERC721Collateral__factory.js.map +1 -1
- package/dist/factories/contracts/token/HypERC721__factory.d.ts +16 -1
- package/dist/factories/contracts/token/HypERC721__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/HypERC721__factory.js +20 -1
- package/dist/factories/contracts/token/HypERC721__factory.js.map +1 -1
- package/dist/factories/contracts/token/HypNative__factory.d.ts +16 -1
- package/dist/factories/contracts/token/HypNative__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/HypNative__factory.js +20 -1
- package/dist/factories/contracts/token/HypNative__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.d.ts +16 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.js +20 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20__factory.d.ts +16 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20__factory.js +20 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/HypERC4626Collateral__factory.d.ts +24 -1
- package/dist/factories/contracts/token/extensions/HypERC4626Collateral__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/HypERC4626Collateral__factory.js +30 -1
- package/dist/factories/contracts/token/extensions/HypERC4626Collateral__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/HypERC4626OwnerCollateral__factory.d.ts +16 -1
- package/dist/factories/contracts/token/extensions/HypERC4626OwnerCollateral__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/HypERC4626OwnerCollateral__factory.js +20 -1
- package/dist/factories/contracts/token/extensions/HypERC4626OwnerCollateral__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/HypERC4626__factory.d.ts +28 -3
- package/dist/factories/contracts/token/extensions/HypERC4626__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/HypERC4626__factory.js +35 -3
- package/dist/factories/contracts/token/extensions/HypERC4626__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.d.ts +16 -1
- package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.js +20 -1
- package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.d.ts +16 -1
- package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.js +20 -1
- package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/HypFiatToken__factory.d.ts +16 -1
- package/dist/factories/contracts/token/extensions/HypFiatToken__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/HypFiatToken__factory.js +20 -1
- package/dist/factories/contracts/token/extensions/HypFiatToken__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.d.ts +16 -1
- package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.js +20 -1
- package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.d.ts +16 -1
- package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.js +20 -1
- package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20__factory.d.ts +16 -1
- package/dist/factories/contracts/token/extensions/HypXERC20__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20__factory.js +20 -1
- package/dist/factories/contracts/token/extensions/HypXERC20__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/WHypERC4626__factory.d.ts +339 -0
- package/dist/factories/contracts/token/extensions/WHypERC4626__factory.d.ts.map +1 -0
- package/dist/factories/contracts/token/extensions/WHypERC4626__factory.js +458 -0
- package/dist/factories/contracts/token/extensions/WHypERC4626__factory.js.map +1 -0
- package/dist/factories/contracts/token/extensions/index.d.ts +1 -0
- package/dist/factories/contracts/token/extensions/index.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/index.js +1 -0
- package/dist/factories/contracts/token/extensions/index.js.map +1 -1
- package/dist/factories/contracts/token/libs/FastTokenRouter__factory.d.ts +15 -0
- package/dist/factories/contracts/token/libs/FastTokenRouter__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/libs/FastTokenRouter__factory.js +19 -0
- package/dist/factories/contracts/token/libs/FastTokenRouter__factory.js.map +1 -1
- package/dist/factories/contracts/token/libs/TokenRouter__factory.d.ts +15 -0
- package/dist/factories/contracts/token/libs/TokenRouter__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/libs/TokenRouter__factory.js +19 -0
- package/dist/factories/contracts/token/libs/TokenRouter__factory.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,10 +1,25 @@
|
|
|
1
1
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
2
|
pragma solidity >=0.6.11;
|
|
3
3
|
|
|
4
|
+
/*@@@@@@@ @@@@@@@@@
|
|
5
|
+
@@@@@@@@@ @@@@@@@@@
|
|
6
|
+
@@@@@@@@@ @@@@@@@@@
|
|
7
|
+
@@@@@@@@@ @@@@@@@@@
|
|
8
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
9
|
+
@@@@@ HYPERLANE @@@@@@@
|
|
10
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
11
|
+
@@@@@@@@@ @@@@@@@@@
|
|
12
|
+
@@@@@@@@@ @@@@@@@@@
|
|
13
|
+
@@@@@@@@@ @@@@@@@@@
|
|
14
|
+
@@@@@@@@@ @@@@@@@@*/
|
|
15
|
+
|
|
16
|
+
// ============ Internal Imports ============
|
|
4
17
|
import {Router} from "./Router.sol";
|
|
5
18
|
import {StandardHookMetadata} from "../hooks/libs/StandardHookMetadata.sol";
|
|
6
19
|
|
|
7
20
|
abstract contract GasRouter is Router {
|
|
21
|
+
event GasSet(uint32 domain, uint256 gas);
|
|
22
|
+
|
|
8
23
|
// ============ Mutable Storage ============
|
|
9
24
|
mapping(uint32 => uint256) public destinationGas;
|
|
10
25
|
|
|
@@ -56,6 +71,7 @@ abstract contract GasRouter is Router {
|
|
|
56
71
|
|
|
57
72
|
function _setDestinationGas(uint32 domain, uint256 gas) internal {
|
|
58
73
|
destinationGas[domain] = gas;
|
|
74
|
+
emit GasSet(domain, gas);
|
|
59
75
|
}
|
|
60
76
|
|
|
61
77
|
function _GasRouter_dispatch(
|
|
@@ -9,6 +9,10 @@ library TypeCasts {
|
|
|
9
9
|
|
|
10
10
|
// alignment preserving cast
|
|
11
11
|
function bytes32ToAddress(bytes32 _buf) internal pure returns (address) {
|
|
12
|
+
require(
|
|
13
|
+
uint256(_buf) <= uint256(type(uint160).max),
|
|
14
|
+
"TypeCasts: bytes32ToAddress overflow"
|
|
15
|
+
);
|
|
12
16
|
return address(uint160(uint256(_buf)));
|
|
13
17
|
}
|
|
14
18
|
}
|
|
@@ -1,10 +1,25 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
pragma solidity >=0.8.0;
|
|
3
3
|
|
|
4
|
+
/*@@@@@@@ @@@@@@@@@
|
|
5
|
+
@@@@@@@@@ @@@@@@@@@
|
|
6
|
+
@@@@@@@@@ @@@@@@@@@
|
|
7
|
+
@@@@@@@@@ @@@@@@@@@
|
|
8
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
9
|
+
@@@@@ HYPERLANE @@@@@@@
|
|
10
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
11
|
+
@@@@@@@@@ @@@@@@@@@
|
|
12
|
+
@@@@@@@@@ @@@@@@@@@
|
|
13
|
+
@@@@@@@@@ @@@@@@@@@
|
|
14
|
+
@@@@@@@@@ @@@@@@@@*/
|
|
15
|
+
|
|
16
|
+
// ============ Internal Imports ============
|
|
4
17
|
import {TokenRouter} from "./libs/TokenRouter.sol";
|
|
5
18
|
import {TokenMessage} from "./libs/TokenMessage.sol";
|
|
6
19
|
import {MailboxClient} from "../client/MailboxClient.sol";
|
|
7
20
|
|
|
21
|
+
// ============ External Imports ============
|
|
22
|
+
import {Address} from "@openzeppelin/contracts/utils/Address.sol";
|
|
8
23
|
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
|
|
9
24
|
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
|
10
25
|
|
|
@@ -22,6 +37,7 @@ contract HypERC20Collateral is TokenRouter {
|
|
|
22
37
|
* @param erc20 Address of the token to keep as collateral
|
|
23
38
|
*/
|
|
24
39
|
constructor(address erc20, address _mailbox) TokenRouter(_mailbox) {
|
|
40
|
+
require(Address.isContract(erc20), "HypERC20Collateral: invalid token");
|
|
25
41
|
wrappedToken = IERC20(erc20);
|
|
26
42
|
}
|
|
27
43
|
|
|
@@ -22,10 +22,13 @@ import {TokenRouter} from "../libs/TokenRouter.sol";
|
|
|
22
22
|
|
|
23
23
|
// ============ External Imports ============
|
|
24
24
|
import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
|
|
25
|
+
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
|
|
26
|
+
import {ERC20Upgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol";
|
|
25
27
|
|
|
26
28
|
/**
|
|
27
29
|
* @title Hyperlane ERC20 Rebasing Token
|
|
28
30
|
* @author Abacus Works
|
|
31
|
+
* @notice This contract implements a rebasing token that reflects yields from the origin chain
|
|
29
32
|
*/
|
|
30
33
|
contract HypERC4626 is HypERC20 {
|
|
31
34
|
using Math for uint256;
|
|
@@ -49,6 +52,67 @@ contract HypERC4626 is HypERC20 {
|
|
|
49
52
|
_disableInitializers();
|
|
50
53
|
}
|
|
51
54
|
|
|
55
|
+
// ============ Public Functions ============
|
|
56
|
+
|
|
57
|
+
/// Override transfer to handle underlying amounts while using shares internally
|
|
58
|
+
/// @inheritdoc ERC20Upgradeable
|
|
59
|
+
/// @dev the Transfer event emitted from ERC20Upgradeable will be in terms of shares not assets, so it may be misleading
|
|
60
|
+
function transfer(
|
|
61
|
+
address to,
|
|
62
|
+
uint256 amount
|
|
63
|
+
) public virtual override returns (bool) {
|
|
64
|
+
_transfer(_msgSender(), to, assetsToShares(amount));
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/// Override transferFrom to handle underlying amounts while using shares internally
|
|
69
|
+
/// @inheritdoc ERC20Upgradeable
|
|
70
|
+
function transferFrom(
|
|
71
|
+
address sender,
|
|
72
|
+
address recipient,
|
|
73
|
+
uint256 amount
|
|
74
|
+
) public virtual override returns (bool) {
|
|
75
|
+
address spender = _msgSender();
|
|
76
|
+
uint256 shares = assetsToShares(amount);
|
|
77
|
+
_spendAllowance(sender, spender, amount);
|
|
78
|
+
_transfer(sender, recipient, shares);
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/// Override totalSupply to return the total assets instead of shares. This reflects the actual circulating supply in terms of assets, accounting for rebasing
|
|
83
|
+
/// @inheritdoc ERC20Upgradeable
|
|
84
|
+
function totalSupply() public view virtual override returns (uint256) {
|
|
85
|
+
return sharesToAssets(totalShares());
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/// This returns the balance of the account in terms of assets, accounting for rebasing
|
|
89
|
+
/// @inheritdoc ERC20Upgradeable
|
|
90
|
+
function balanceOf(
|
|
91
|
+
address account
|
|
92
|
+
) public view virtual override returns (uint256) {
|
|
93
|
+
return sharesToAssets(shareBalanceOf(account));
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/// This function provides the total supply in terms of shares
|
|
97
|
+
function totalShares() public view returns (uint256) {
|
|
98
|
+
return super.totalSupply();
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/// This returns the balance of the account in terms of shares
|
|
102
|
+
function shareBalanceOf(address account) public view returns (uint256) {
|
|
103
|
+
return super.balanceOf(account);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
function assetsToShares(uint256 _amount) public view returns (uint256) {
|
|
107
|
+
return _amount.mulDiv(PRECISION, exchangeRate);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function sharesToAssets(uint256 _shares) public view returns (uint256) {
|
|
111
|
+
return _shares.mulDiv(exchangeRate, PRECISION);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// ============ Internal Functions ============
|
|
115
|
+
|
|
52
116
|
/// Override to send shares instead of assets from synthetic
|
|
53
117
|
/// @inheritdoc TokenRouter
|
|
54
118
|
function _transferRemote(
|
|
@@ -78,6 +142,8 @@ contract HypERC4626 is HypERC20 {
|
|
|
78
142
|
emit SentTransferRemote(_destination, _recipient, _amountOrId);
|
|
79
143
|
}
|
|
80
144
|
|
|
145
|
+
/// override _handle to update exchange rate
|
|
146
|
+
/// @inheritdoc TokenRouter
|
|
81
147
|
function _handle(
|
|
82
148
|
uint32 _origin,
|
|
83
149
|
bytes32 _sender,
|
|
@@ -97,33 +163,4 @@ contract HypERC4626 is HypERC20 {
|
|
|
97
163
|
}
|
|
98
164
|
super._handle(_origin, _sender, _message);
|
|
99
165
|
}
|
|
100
|
-
|
|
101
|
-
// Override to send shares locally instead of assets
|
|
102
|
-
function transfer(
|
|
103
|
-
address to,
|
|
104
|
-
uint256 amount
|
|
105
|
-
) public virtual override returns (bool) {
|
|
106
|
-
address owner = _msgSender();
|
|
107
|
-
_transfer(owner, to, assetsToShares(amount));
|
|
108
|
-
return true;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
function shareBalanceOf(address account) public view returns (uint256) {
|
|
112
|
-
return super.balanceOf(account);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
function balanceOf(
|
|
116
|
-
address account
|
|
117
|
-
) public view virtual override returns (uint256) {
|
|
118
|
-
uint256 _balance = super.balanceOf(account);
|
|
119
|
-
return sharesToAssets(_balance);
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
function assetsToShares(uint256 _amount) public view returns (uint256) {
|
|
123
|
-
return _amount.mulDiv(PRECISION, exchangeRate);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
function sharesToAssets(uint256 _shares) public view returns (uint256) {
|
|
127
|
-
return _shares.mulDiv(exchangeRate, PRECISION);
|
|
128
|
-
}
|
|
129
166
|
}
|
|
@@ -66,11 +66,7 @@ contract HypERC4626Collateral is HypERC20Collateral {
|
|
|
66
66
|
// Can't override _transferFromSender only because we need to pass shares in the token message
|
|
67
67
|
_transferFromSender(_amount);
|
|
68
68
|
uint256 _shares = _depositIntoVault(_amount);
|
|
69
|
-
uint256 _exchangeRate =
|
|
70
|
-
vault.totalAssets(),
|
|
71
|
-
vault.totalSupply(),
|
|
72
|
-
Math.Rounding.Down
|
|
73
|
-
);
|
|
69
|
+
uint256 _exchangeRate = vault.convertToAssets(PRECISION);
|
|
74
70
|
|
|
75
71
|
rateUpdateNonce++;
|
|
76
72
|
bytes memory _tokenMetadata = abi.encode(
|
|
@@ -121,15 +117,19 @@ contract HypERC4626Collateral is HypERC20Collateral {
|
|
|
121
117
|
* @dev Update the exchange rate on the synthetic token by accounting for additional yield accrued to the underlying vault
|
|
122
118
|
* @param _destinationDomain domain of the vault
|
|
123
119
|
*/
|
|
124
|
-
function rebase(
|
|
120
|
+
function rebase(
|
|
121
|
+
uint32 _destinationDomain,
|
|
122
|
+
bytes calldata _hookMetadata,
|
|
123
|
+
address _hook
|
|
124
|
+
) public payable {
|
|
125
125
|
// force a rebase with an empty transfer to 0x1
|
|
126
126
|
_transferRemote(
|
|
127
127
|
_destinationDomain,
|
|
128
128
|
NULL_RECIPIENT,
|
|
129
129
|
0,
|
|
130
130
|
msg.value,
|
|
131
|
-
|
|
132
|
-
|
|
131
|
+
_hookMetadata,
|
|
132
|
+
_hook
|
|
133
133
|
);
|
|
134
134
|
}
|
|
135
135
|
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
+
pragma solidity >=0.8.0;
|
|
3
|
+
|
|
4
|
+
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
|
|
5
|
+
import {HypERC4626} from "./HypERC4626.sol";
|
|
6
|
+
import {PackageVersioned} from "../../PackageVersioned.sol";
|
|
7
|
+
|
|
8
|
+
/*@@@@@@@ @@@@@@@@@
|
|
9
|
+
@@@@@@@@@ @@@@@@@@@
|
|
10
|
+
@@@@@@@@@ @@@@@@@@@
|
|
11
|
+
@@@@@@@@@ @@@@@@@@@
|
|
12
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
13
|
+
@@@@@ HYPERLANE @@@@@@@
|
|
14
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
15
|
+
@@@@@@@@@ @@@@@@@@@
|
|
16
|
+
@@@@@@@@@ @@@@@@@@@
|
|
17
|
+
@@@@@@@@@ @@@@@@@@@
|
|
18
|
+
@@@@@@@@@ @@@@@@@@*/
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @title WHypERC4626
|
|
22
|
+
* @author Abacus Works
|
|
23
|
+
* @notice A wrapper for HypERC4626 that allows for wrapping and unwrapping of underlying rebasing tokens
|
|
24
|
+
*/
|
|
25
|
+
contract WHypERC4626 is ERC20, PackageVersioned {
|
|
26
|
+
HypERC4626 public immutable underlying;
|
|
27
|
+
|
|
28
|
+
constructor(
|
|
29
|
+
HypERC4626 _underlying,
|
|
30
|
+
string memory name,
|
|
31
|
+
string memory symbol
|
|
32
|
+
) ERC20(name, symbol) {
|
|
33
|
+
underlying = _underlying;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/*
|
|
37
|
+
* @notice Wraps an amount of underlying tokens into wrapped tokens
|
|
38
|
+
* @param _underlyingAmount The amount of underlying tokens to wrap
|
|
39
|
+
* @return The amount of wrapped tokens
|
|
40
|
+
*/
|
|
41
|
+
function wrap(uint256 _underlyingAmount) external returns (uint256) {
|
|
42
|
+
require(
|
|
43
|
+
_underlyingAmount > 0,
|
|
44
|
+
"WHypERC4626: wrap amount must be greater than 0"
|
|
45
|
+
);
|
|
46
|
+
uint256 wrappedAmount = underlying.assetsToShares(_underlyingAmount);
|
|
47
|
+
_mint(msg.sender, wrappedAmount);
|
|
48
|
+
underlying.transferFrom(msg.sender, address(this), _underlyingAmount);
|
|
49
|
+
return wrappedAmount;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/*
|
|
53
|
+
* @notice Unwraps an amount of wrapped tokens into underlying tokens
|
|
54
|
+
* @param _wrappedAmount The amount of wrapped tokens to unwrap
|
|
55
|
+
* @return The amount of underlying tokens
|
|
56
|
+
*/
|
|
57
|
+
function unwrap(uint256 _wrappedAmount) external returns (uint256) {
|
|
58
|
+
require(
|
|
59
|
+
_wrappedAmount > 0,
|
|
60
|
+
"WHypERC4626: unwrap amount must be greater than 0"
|
|
61
|
+
);
|
|
62
|
+
uint256 underlyingAmount = underlying.sharesToAssets(_wrappedAmount);
|
|
63
|
+
_burn(msg.sender, _wrappedAmount);
|
|
64
|
+
underlying.transfer(msg.sender, underlyingAmount);
|
|
65
|
+
return underlyingAmount;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/*
|
|
69
|
+
* @notice Gets the amount of wrapped tokens for a given amount of underlying tokens
|
|
70
|
+
* @param _underlyingAmount The amount of underlying tokens
|
|
71
|
+
* @return The amount of wrapped tokens
|
|
72
|
+
*/
|
|
73
|
+
function getWrappedAmount(
|
|
74
|
+
uint256 _underlyingAmount
|
|
75
|
+
) external view returns (uint256) {
|
|
76
|
+
return underlying.assetsToShares(_underlyingAmount);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/*
|
|
80
|
+
* @notice Gets the amount of underlying tokens for a given amount of wrapped tokens
|
|
81
|
+
* @param _wrappedAmount The amount of wrapped tokens
|
|
82
|
+
* @return The amount of underlying tokens
|
|
83
|
+
*/
|
|
84
|
+
function getUnderlyingAmount(
|
|
85
|
+
uint256 _wrappedAmount
|
|
86
|
+
) external view returns (uint256) {
|
|
87
|
+
return underlying.sharesToAssets(_wrappedAmount);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/*
|
|
91
|
+
* @notice Gets the amount of wrapped tokens for 1 unit of underlying tokens
|
|
92
|
+
* @return The amount of wrapped tokens
|
|
93
|
+
*/
|
|
94
|
+
function wrappedPerUnderlying() external view returns (uint256) {
|
|
95
|
+
return underlying.assetsToShares(1 * 10 ** underlying.decimals());
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/*
|
|
99
|
+
* @notice Gets the amount of underlying tokens for 1 unit of wrapped tokens
|
|
100
|
+
* @return The amount of underlying tokens
|
|
101
|
+
*/
|
|
102
|
+
function underlyingPerWrapped() external view returns (uint256) {
|
|
103
|
+
return underlying.sharesToAssets(1 * 10 ** decimals());
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/*
|
|
107
|
+
* @notice Gets the decimals of the wrapped token
|
|
108
|
+
* @return The decimals of the wrapped token
|
|
109
|
+
*/
|
|
110
|
+
function decimals() public view override returns (uint8) {
|
|
111
|
+
return underlying.decimals();
|
|
112
|
+
}
|
|
113
|
+
}
|