@hyperlane-xyz/core 5.12.0 → 6.0.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/hooks/aggregation/StaticAggregationHook.sol +25 -0
- package/contracts/hooks/warp-route/RateLimitedHook.sol +54 -17
- package/contracts/token/HypERC20.sol +7 -2
- package/contracts/token/HypERC20Collateral.sol +7 -2
- package/contracts/token/HypNative.sol +6 -2
- package/contracts/token/extensions/FastHypERC20.sol +2 -1
- package/contracts/token/extensions/FastHypERC20Collateral.sol +2 -1
- package/contracts/token/extensions/HypERC4626.sol +2 -1
- package/contracts/token/extensions/HypERC4626Collateral.sol +2 -1
- package/contracts/token/extensions/HypERC4626OwnerCollateral.sol +2 -1
- package/contracts/token/extensions/HypFiatToken.sol +2 -1
- package/contracts/token/extensions/HypXERC20.sol +2 -1
- package/contracts/token/extensions/HypXERC20Lockbox.sol +8 -1
- package/contracts/token/libs/FastTokenRouter.sol +2 -1
- package/contracts/token/libs/FungibleTokenRouter.sol +32 -0
- package/contracts/token/libs/TokenRouter.sol +31 -3
- package/dist/buildArtifact.js +1 -1
- package/dist/buildArtifact.json +1 -1
- package/dist/contracts/hooks/warp-route/RateLimitedHook.d.ts +46 -31
- package/dist/contracts/hooks/warp-route/RateLimitedHook.d.ts.map +1 -1
- package/dist/contracts/token/HypERC20.d.ts +16 -1
- package/dist/contracts/token/HypERC20.d.ts.map +1 -1
- package/dist/contracts/token/HypERC20Collateral.d.ts +16 -1
- package/dist/contracts/token/HypERC20Collateral.d.ts.map +1 -1
- package/dist/contracts/token/HypNative.d.ts +16 -1
- package/dist/contracts/token/HypNative.d.ts.map +1 -1
- package/dist/contracts/token/extensions/FastHypERC20.d.ts +16 -1
- package/dist/contracts/token/extensions/FastHypERC20.d.ts.map +1 -1
- package/dist/contracts/token/extensions/FastHypERC20Collateral.d.ts +16 -1
- package/dist/contracts/token/extensions/FastHypERC20Collateral.d.ts.map +1 -1
- package/dist/contracts/token/extensions/HypERC4626.d.ts +16 -1
- package/dist/contracts/token/extensions/HypERC4626.d.ts.map +1 -1
- package/dist/contracts/token/extensions/HypERC4626Collateral.d.ts +16 -1
- package/dist/contracts/token/extensions/HypERC4626Collateral.d.ts.map +1 -1
- package/dist/contracts/token/extensions/HypERC4626OwnerCollateral.d.ts +16 -1
- package/dist/contracts/token/extensions/HypERC4626OwnerCollateral.d.ts.map +1 -1
- package/dist/contracts/token/extensions/HypFiatToken.d.ts +16 -1
- package/dist/contracts/token/extensions/HypFiatToken.d.ts.map +1 -1
- package/dist/contracts/token/extensions/HypXERC20.d.ts +16 -1
- package/dist/contracts/token/extensions/HypXERC20.d.ts.map +1 -1
- package/dist/contracts/token/extensions/HypXERC20Lockbox.d.ts +16 -1
- package/dist/contracts/token/extensions/HypXERC20Lockbox.d.ts.map +1 -1
- package/dist/contracts/token/extensions/index.d.ts +0 -1
- package/dist/contracts/token/extensions/index.d.ts.map +1 -1
- package/dist/contracts/token/libs/FastTokenRouter.d.ts +16 -1
- package/dist/contracts/token/libs/FastTokenRouter.d.ts.map +1 -1
- package/dist/contracts/token/{extensions/HypNativeScaled.d.ts → libs/FungibleTokenRouter.d.ts} +41 -70
- package/dist/contracts/token/libs/FungibleTokenRouter.d.ts.map +1 -0
- package/dist/contracts/token/libs/FungibleTokenRouter.js +2 -0
- package/dist/contracts/token/libs/FungibleTokenRouter.js.map +1 -0
- package/dist/contracts/token/libs/index.d.ts +1 -0
- package/dist/contracts/token/libs/index.d.ts.map +1 -1
- package/dist/factories/contracts/AttributeCheckpointFraud__factory.d.ts +1 -1
- package/dist/factories/contracts/AttributeCheckpointFraud__factory.js +1 -1
- package/dist/factories/contracts/CheckpointFraudProofs__factory.d.ts +1 -1
- package/dist/factories/contracts/CheckpointFraudProofs__factory.js +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/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/hooks/ArbL2ToL1Hook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/ArbL2ToL1Hook__factory.js +1 -1
- package/dist/factories/contracts/hooks/CCIPHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/CCIPHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/DefaultHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/DefaultHook__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/OPL2ToL1Hook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/OPL2ToL1Hook__factory.js +1 -1
- package/dist/factories/contracts/hooks/OPStackHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/OPStackHook__factory.js +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.js +1 -1
- package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.js +1 -1
- package/dist/factories/contracts/hooks/aggregation/StaticAggregationHookFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/aggregation/StaticAggregationHookFactory__factory.d.ts.map +1 -1
- package/dist/factories/contracts/hooks/aggregation/StaticAggregationHookFactory__factory.js +1 -1
- package/dist/factories/contracts/hooks/aggregation/StaticAggregationHookFactory__factory.js.map +1 -1
- package/dist/factories/contracts/hooks/aggregation/StaticAggregationHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/aggregation/StaticAggregationHook__factory.d.ts.map +1 -1
- package/dist/factories/contracts/hooks/aggregation/StaticAggregationHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/aggregation/StaticAggregationHook__factory.js.map +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/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.js +1 -1
- package/dist/factories/contracts/hooks/routing/AmountRoutingHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/routing/AmountRoutingHook__factory.js +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 +23 -9
- package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.d.ts.map +1 -1
- package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.js +29 -11
- package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.js.map +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/aggregation/StorageAggregationIsm.sol/StorageAggregationIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/aggregation/StorageAggregationIsm.sol/StorageAggregationIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/aggregation/StorageAggregationIsm.sol/StorageAggregationIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/aggregation/StorageAggregationIsm.sol/StorageAggregationIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.js +1 -1
- package/dist/factories/contracts/isms/hook/CCIPIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/CCIPIsm__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/OPL2ToL1Ism__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__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/PolygonPosIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.js +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.js +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/StorageMultisigIsm.sol/StorageMerkleRootMultisigIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMerkleRootMultisigIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMerkleRootMultisigIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMerkleRootMultisigIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMessageIdMultisigIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMessageIdMultisigIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMessageIdMultisigIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMessageIdMultisigIsm__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.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/DomainRoutingIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/routing/DomainRoutingIsm__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/isms/warp-route/AmountRoutingIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/warp-route/AmountRoutingIsm__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.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/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/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/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 +18 -4
- package/dist/factories/contracts/token/HypERC20Collateral__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/HypERC20Collateral__factory.js +24 -6
- package/dist/factories/contracts/token/HypERC20Collateral__factory.js.map +1 -1
- package/dist/factories/contracts/token/HypERC20__factory.d.ts +17 -3
- package/dist/factories/contracts/token/HypERC20__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/HypERC20__factory.js +23 -5
- package/dist/factories/contracts/token/HypERC20__factory.js.map +1 -1
- package/dist/factories/contracts/token/HypERC721Collateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/HypERC721Collateral__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/HypERC721Collateral__factory.js +1 -1
- package/dist/factories/contracts/token/HypERC721Collateral__factory.js.map +1 -1
- package/dist/factories/contracts/token/HypERC721__factory.d.ts +1 -1
- package/dist/factories/contracts/token/HypERC721__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/HypERC721__factory.js +1 -1
- package/dist/factories/contracts/token/HypERC721__factory.js.map +1 -1
- package/dist/factories/contracts/token/HypNative__factory.d.ts +18 -4
- package/dist/factories/contracts/token/HypNative__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/HypNative__factory.js +24 -6
- package/dist/factories/contracts/token/HypNative__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.d.ts +18 -4
- package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.js +24 -6
- package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20__factory.d.ts +17 -3
- package/dist/factories/contracts/token/extensions/FastHypERC20__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20__factory.js +23 -5
- package/dist/factories/contracts/token/extensions/FastHypERC20__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/HypERC4626Collateral__factory.d.ts +18 -4
- package/dist/factories/contracts/token/extensions/HypERC4626Collateral__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/HypERC4626Collateral__factory.js +24 -6
- package/dist/factories/contracts/token/extensions/HypERC4626Collateral__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/HypERC4626OwnerCollateral__factory.d.ts +18 -4
- package/dist/factories/contracts/token/extensions/HypERC4626OwnerCollateral__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/HypERC4626OwnerCollateral__factory.js +24 -6
- package/dist/factories/contracts/token/extensions/HypERC4626OwnerCollateral__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/HypERC4626__factory.d.ts +17 -3
- package/dist/factories/contracts/token/extensions/HypERC4626__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/HypERC4626__factory.js +23 -5
- package/dist/factories/contracts/token/extensions/HypERC4626__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/HypFiatToken__factory.d.ts +18 -4
- package/dist/factories/contracts/token/extensions/HypFiatToken__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/HypFiatToken__factory.js +24 -6
- package/dist/factories/contracts/token/extensions/HypFiatToken__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.d.ts +18 -4
- package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.js +24 -6
- package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20__factory.d.ts +18 -4
- package/dist/factories/contracts/token/extensions/HypXERC20__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20__factory.js +24 -6
- package/dist/factories/contracts/token/extensions/HypXERC20__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/WHypERC4626__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/WHypERC4626__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/index.d.ts +0 -1
- package/dist/factories/contracts/token/extensions/index.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/index.js +0 -1
- package/dist/factories/contracts/token/extensions/index.js.map +1 -1
- package/dist/factories/contracts/token/libs/FastTokenRouter__factory.d.ts +10 -0
- package/dist/factories/contracts/token/libs/FastTokenRouter__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/libs/FastTokenRouter__factory.js +13 -0
- package/dist/factories/contracts/token/libs/FastTokenRouter__factory.js.map +1 -1
- package/dist/factories/contracts/token/libs/FungibleTokenRouter__factory.d.ts +432 -0
- package/dist/factories/contracts/token/libs/FungibleTokenRouter__factory.d.ts.map +1 -0
- package/dist/factories/contracts/token/libs/FungibleTokenRouter__factory.js +565 -0
- package/dist/factories/contracts/token/libs/FungibleTokenRouter__factory.js.map +1 -0
- package/dist/factories/contracts/token/libs/index.d.ts +1 -0
- package/dist/factories/contracts/token/libs/index.d.ts.map +1 -1
- package/dist/factories/contracts/token/libs/index.js +1 -0
- package/dist/factories/contracts/token/libs/index.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/contracts/token/extensions/HypNativeScaled.sol +0 -78
- package/dist/contracts/token/extensions/HypNativeScaled.d.ts.map +0 -1
- package/dist/contracts/token/extensions/HypNativeScaled.js +0 -2
- package/dist/contracts/token/extensions/HypNativeScaled.js.map +0 -1
- package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.d.ts +0 -492
- package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.d.ts.map +0 -1
- package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.js +0 -650
- package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.js.map +0 -1
|
@@ -13,11 +13,23 @@ pragma solidity >=0.8.0;
|
|
|
13
13
|
@@@@@@@@@ @@@@@@@@@
|
|
14
14
|
@@@@@@@@@ @@@@@@@@*/
|
|
15
15
|
|
|
16
|
+
// ============ Internal Imports ============
|
|
17
|
+
import {StandardHookMetadata} from "../libs/StandardHookMetadata.sol";
|
|
18
|
+
import {Message} from "../../libs/Message.sol";
|
|
19
|
+
import {TypeCasts} from "../../libs/TypeCasts.sol";
|
|
16
20
|
import {AbstractPostDispatchHook} from "../libs/AbstractPostDispatchHook.sol";
|
|
17
21
|
import {IPostDispatchHook} from "../../interfaces/hooks/IPostDispatchHook.sol";
|
|
18
22
|
import {MetaProxy} from "../../libs/MetaProxy.sol";
|
|
19
23
|
|
|
24
|
+
// ============ External Imports ============
|
|
25
|
+
import {Address} from "@openzeppelin/contracts/utils/Address.sol";
|
|
26
|
+
|
|
20
27
|
contract StaticAggregationHook is AbstractPostDispatchHook {
|
|
28
|
+
using Message for bytes;
|
|
29
|
+
using TypeCasts for bytes32;
|
|
30
|
+
using StandardHookMetadata for bytes;
|
|
31
|
+
using Address for address payable;
|
|
32
|
+
|
|
21
33
|
// ============ External functions ============
|
|
22
34
|
|
|
23
35
|
/// @inheritdoc IPostDispatchHook
|
|
@@ -32,16 +44,29 @@ contract StaticAggregationHook is AbstractPostDispatchHook {
|
|
|
32
44
|
) internal override {
|
|
33
45
|
address[] memory _hooks = hooks(message);
|
|
34
46
|
uint256 count = _hooks.length;
|
|
47
|
+
uint256 valueRemaining = msg.value;
|
|
35
48
|
for (uint256 i = 0; i < count; i++) {
|
|
36
49
|
uint256 quote = IPostDispatchHook(_hooks[i]).quoteDispatch(
|
|
37
50
|
metadata,
|
|
38
51
|
message
|
|
39
52
|
);
|
|
53
|
+
require(
|
|
54
|
+
valueRemaining >= quote,
|
|
55
|
+
"StaticAggregationHook: insufficient value"
|
|
56
|
+
);
|
|
40
57
|
|
|
41
58
|
IPostDispatchHook(_hooks[i]).postDispatch{value: quote}(
|
|
42
59
|
metadata,
|
|
43
60
|
message
|
|
44
61
|
);
|
|
62
|
+
|
|
63
|
+
valueRemaining -= quote;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (valueRemaining > 0) {
|
|
67
|
+
payable(metadata.refundAddress(message.senderAddress())).sendValue(
|
|
68
|
+
valueRemaining
|
|
69
|
+
);
|
|
45
70
|
}
|
|
46
71
|
}
|
|
47
72
|
|
|
@@ -1,18 +1,47 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT
|
|
1
|
+
// SPDX-License-Identifier: MIT OR 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 {MailboxClient} from "contracts/client/MailboxClient.sol";
|
|
5
18
|
import {IPostDispatchHook} from "contracts/interfaces/hooks/IPostDispatchHook.sol";
|
|
6
19
|
import {Message} from "contracts/libs/Message.sol";
|
|
7
20
|
import {TokenMessage} from "contracts/token/libs/TokenMessage.sol";
|
|
8
21
|
import {RateLimited} from "contracts/libs/RateLimited.sol";
|
|
22
|
+
import {AbstractPostDispatchHook} from "../libs/AbstractPostDispatchHook.sol";
|
|
9
23
|
|
|
10
|
-
|
|
24
|
+
/*
|
|
25
|
+
* @title RateLimitedHook
|
|
26
|
+
* @author Abacus Works
|
|
27
|
+
* @notice A hook that rate limits the volume of token transfers to a destination using a bucket fill algorithm
|
|
28
|
+
*/
|
|
29
|
+
contract RateLimitedHook is
|
|
30
|
+
AbstractPostDispatchHook,
|
|
31
|
+
MailboxClient,
|
|
32
|
+
RateLimited
|
|
33
|
+
{
|
|
11
34
|
using Message for bytes;
|
|
12
35
|
using TokenMessage for bytes;
|
|
13
36
|
|
|
37
|
+
/// @notice The address that is authorized to call this hook
|
|
38
|
+
address public immutable sender;
|
|
39
|
+
/// @notice A mapping of message IDs to whether they have been validated
|
|
14
40
|
mapping(bytes32 messageId => bool validated) public messageValidated;
|
|
15
41
|
|
|
42
|
+
// ============ Modifiers ============
|
|
43
|
+
|
|
44
|
+
/// @notice Ensures that the message has not been validated yet
|
|
16
45
|
modifier validateMessageOnce(bytes calldata _message) {
|
|
17
46
|
bytes32 messageId = _message.id();
|
|
18
47
|
require(!messageValidated[messageId], "MessageAlreadyValidated");
|
|
@@ -20,40 +49,48 @@ contract RateLimitedHook is IPostDispatchHook, MailboxClient, RateLimited {
|
|
|
20
49
|
messageValidated[messageId] = true;
|
|
21
50
|
}
|
|
22
51
|
|
|
52
|
+
/// @notice Ensures that the message was sent by the authorized sender
|
|
53
|
+
modifier onlySender(bytes calldata _message) {
|
|
54
|
+
require(_message.senderAddress() == sender, "InvalidSender");
|
|
55
|
+
_;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// ============ Constructor ============
|
|
59
|
+
|
|
23
60
|
constructor(
|
|
24
61
|
address _mailbox,
|
|
25
|
-
uint256 _maxCapacity
|
|
26
|
-
|
|
62
|
+
uint256 _maxCapacity,
|
|
63
|
+
address _sender
|
|
64
|
+
) MailboxClient(_mailbox) RateLimited(_maxCapacity) {
|
|
65
|
+
require(_sender != address(0), "InvalidSender");
|
|
66
|
+
sender = _sender;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// ============ External Functions ============
|
|
27
70
|
|
|
28
71
|
/// @inheritdoc IPostDispatchHook
|
|
29
72
|
function hookType() external pure returns (uint8) {
|
|
30
73
|
return uint8(IPostDispatchHook.Types.RATE_LIMITED);
|
|
31
74
|
}
|
|
32
75
|
|
|
33
|
-
|
|
34
|
-
function supportsMetadata(bytes calldata) external pure returns (bool) {
|
|
35
|
-
return false;
|
|
36
|
-
}
|
|
76
|
+
// ============ Internal Functions ============
|
|
37
77
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
* @dev ensures that this gets called by the Mailbox
|
|
41
|
-
*/
|
|
42
|
-
function postDispatch(
|
|
78
|
+
/// @inheritdoc AbstractPostDispatchHook
|
|
79
|
+
function _postDispatch(
|
|
43
80
|
bytes calldata,
|
|
44
81
|
bytes calldata _message
|
|
45
|
-
)
|
|
82
|
+
) internal override onlySender(_message) validateMessageOnce(_message) {
|
|
46
83
|
require(_isLatestDispatched(_message.id()), "InvalidDispatchedMessage");
|
|
47
84
|
|
|
48
85
|
uint256 newAmount = _message.body().amount();
|
|
49
86
|
validateAndConsumeFilledLevel(newAmount);
|
|
50
87
|
}
|
|
51
88
|
|
|
52
|
-
/// @inheritdoc
|
|
53
|
-
function
|
|
89
|
+
/// @inheritdoc AbstractPostDispatchHook
|
|
90
|
+
function _quoteDispatch(
|
|
54
91
|
bytes calldata,
|
|
55
92
|
bytes calldata
|
|
56
|
-
)
|
|
93
|
+
) internal pure override returns (uint256) {
|
|
57
94
|
return 0;
|
|
58
95
|
}
|
|
59
96
|
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
pragma solidity >=0.8.0;
|
|
3
3
|
|
|
4
4
|
import {TokenRouter} from "./libs/TokenRouter.sol";
|
|
5
|
+
import {FungibleTokenRouter} from "./libs/FungibleTokenRouter.sol";
|
|
5
6
|
|
|
6
7
|
import {ERC20Upgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol";
|
|
7
8
|
|
|
@@ -10,10 +11,14 @@ import {ERC20Upgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC20/
|
|
|
10
11
|
* @author Abacus Works
|
|
11
12
|
* @dev Supply on each chain is not constant but the aggregate supply across all chains is.
|
|
12
13
|
*/
|
|
13
|
-
contract HypERC20 is ERC20Upgradeable,
|
|
14
|
+
contract HypERC20 is ERC20Upgradeable, FungibleTokenRouter {
|
|
14
15
|
uint8 private immutable _decimals;
|
|
15
16
|
|
|
16
|
-
constructor(
|
|
17
|
+
constructor(
|
|
18
|
+
uint8 __decimals,
|
|
19
|
+
uint256 _scale,
|
|
20
|
+
address _mailbox
|
|
21
|
+
) FungibleTokenRouter(_scale, _mailbox) {
|
|
17
22
|
_decimals = __decimals;
|
|
18
23
|
}
|
|
19
24
|
|
|
@@ -15,6 +15,7 @@ pragma solidity >=0.8.0;
|
|
|
15
15
|
|
|
16
16
|
// ============ Internal Imports ============
|
|
17
17
|
import {TokenRouter} from "./libs/TokenRouter.sol";
|
|
18
|
+
import {FungibleTokenRouter} from "./libs/FungibleTokenRouter.sol";
|
|
18
19
|
import {TokenMessage} from "./libs/TokenMessage.sol";
|
|
19
20
|
import {MailboxClient} from "../client/MailboxClient.sol";
|
|
20
21
|
|
|
@@ -27,7 +28,7 @@ import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol
|
|
|
27
28
|
* @title Hyperlane ERC20 Token Collateral that wraps an existing ERC20 with remote transfer functionality.
|
|
28
29
|
* @author Abacus Works
|
|
29
30
|
*/
|
|
30
|
-
contract HypERC20Collateral is
|
|
31
|
+
contract HypERC20Collateral is FungibleTokenRouter {
|
|
31
32
|
using SafeERC20 for IERC20;
|
|
32
33
|
|
|
33
34
|
IERC20 public immutable wrappedToken;
|
|
@@ -36,7 +37,11 @@ contract HypERC20Collateral is TokenRouter {
|
|
|
36
37
|
* @notice Constructor
|
|
37
38
|
* @param erc20 Address of the token to keep as collateral
|
|
38
39
|
*/
|
|
39
|
-
constructor(
|
|
40
|
+
constructor(
|
|
41
|
+
address erc20,
|
|
42
|
+
uint256 _scale,
|
|
43
|
+
address _mailbox
|
|
44
|
+
) FungibleTokenRouter(_scale, _mailbox) {
|
|
40
45
|
require(Address.isContract(erc20), "HypERC20Collateral: invalid token");
|
|
41
46
|
wrappedToken = IERC20(erc20);
|
|
42
47
|
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
pragma solidity >=0.8.0;
|
|
3
3
|
|
|
4
4
|
import {TokenRouter} from "./libs/TokenRouter.sol";
|
|
5
|
+
import {FungibleTokenRouter} from "./libs/FungibleTokenRouter.sol";
|
|
5
6
|
import {TokenMessage} from "./libs/TokenMessage.sol";
|
|
6
7
|
import {Address} from "@openzeppelin/contracts/utils/Address.sol";
|
|
7
8
|
|
|
@@ -10,7 +11,7 @@ import {Address} from "@openzeppelin/contracts/utils/Address.sol";
|
|
|
10
11
|
* @author Abacus Works
|
|
11
12
|
* @dev Supply on each chain is not constant but the aggregate supply across all chains is.
|
|
12
13
|
*/
|
|
13
|
-
contract HypNative is
|
|
14
|
+
contract HypNative is FungibleTokenRouter {
|
|
14
15
|
/**
|
|
15
16
|
* @dev Emitted when native tokens are donated to the contract.
|
|
16
17
|
* @param sender The address of the sender.
|
|
@@ -18,7 +19,10 @@ contract HypNative is TokenRouter {
|
|
|
18
19
|
*/
|
|
19
20
|
event Donation(address indexed sender, uint256 amount);
|
|
20
21
|
|
|
21
|
-
constructor(
|
|
22
|
+
constructor(
|
|
23
|
+
uint256 _scale,
|
|
24
|
+
address _mailbox
|
|
25
|
+
) FungibleTokenRouter(_scale, _mailbox) {}
|
|
22
26
|
|
|
23
27
|
/**
|
|
24
28
|
* @notice Initializes the Hyperlane router
|
|
@@ -15,8 +15,9 @@ import {ERC20Upgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC20/
|
|
|
15
15
|
contract FastHypERC20 is FastTokenRouter, HypERC20 {
|
|
16
16
|
constructor(
|
|
17
17
|
uint8 __decimals,
|
|
18
|
+
uint256 _scale,
|
|
18
19
|
address _mailbox
|
|
19
|
-
) HypERC20(__decimals, _mailbox) {}
|
|
20
|
+
) HypERC20(__decimals, _scale, _mailbox) {}
|
|
20
21
|
|
|
21
22
|
/**
|
|
22
23
|
* @dev delegates transfer logic to `_transferTo`.
|
|
@@ -21,8 +21,9 @@ contract FastHypERC20Collateral is FastTokenRouter, HypERC20Collateral {
|
|
|
21
21
|
*/
|
|
22
22
|
constructor(
|
|
23
23
|
address erc20,
|
|
24
|
+
uint256 _scale,
|
|
24
25
|
address _mailbox
|
|
25
|
-
) HypERC20Collateral(erc20, _mailbox) {}
|
|
26
|
+
) HypERC20Collateral(erc20, _scale, _mailbox) {}
|
|
26
27
|
|
|
27
28
|
/**
|
|
28
29
|
* @dev delegates transfer logic to `_transferTo`.
|
|
@@ -44,9 +44,10 @@ contract HypERC4626 is HypERC20 {
|
|
|
44
44
|
|
|
45
45
|
constructor(
|
|
46
46
|
uint8 _decimals,
|
|
47
|
+
uint256 _scale,
|
|
47
48
|
address _mailbox,
|
|
48
49
|
uint32 _collateralDomain
|
|
49
|
-
) HypERC20(_decimals, _mailbox) {
|
|
50
|
+
) HypERC20(_decimals, _scale, _mailbox) {
|
|
50
51
|
collateralDomain = _collateralDomain;
|
|
51
52
|
exchangeRate = 1e10;
|
|
52
53
|
_disableInitializers();
|
|
@@ -42,8 +42,9 @@ contract HypERC4626Collateral is HypERC20Collateral {
|
|
|
42
42
|
|
|
43
43
|
constructor(
|
|
44
44
|
ERC4626 _vault,
|
|
45
|
+
uint256 _scale,
|
|
45
46
|
address _mailbox
|
|
46
|
-
) HypERC20Collateral(_vault.asset(), _mailbox) {
|
|
47
|
+
) HypERC20Collateral(_vault.asset(), _scale, _mailbox) {
|
|
47
48
|
vault = _vault;
|
|
48
49
|
}
|
|
49
50
|
|
|
@@ -37,8 +37,9 @@ contract HypERC4626OwnerCollateral is HypERC20Collateral {
|
|
|
37
37
|
|
|
38
38
|
constructor(
|
|
39
39
|
ERC4626 _vault,
|
|
40
|
+
uint256 _scale,
|
|
40
41
|
address _mailbox
|
|
41
|
-
) HypERC20Collateral(_vault.asset(), _mailbox) {
|
|
42
|
+
) HypERC20Collateral(_vault.asset(), _scale, _mailbox) {
|
|
42
43
|
vault = _vault;
|
|
43
44
|
}
|
|
44
45
|
|
|
@@ -8,8 +8,9 @@ import {HypERC20Collateral} from "../HypERC20Collateral.sol";
|
|
|
8
8
|
contract HypFiatToken is HypERC20Collateral {
|
|
9
9
|
constructor(
|
|
10
10
|
address _fiatToken,
|
|
11
|
+
uint256 _scale,
|
|
11
12
|
address _mailbox
|
|
12
|
-
) HypERC20Collateral(_fiatToken, _mailbox) {}
|
|
13
|
+
) HypERC20Collateral(_fiatToken, _scale, _mailbox) {}
|
|
13
14
|
|
|
14
15
|
function _transferFromSender(
|
|
15
16
|
uint256 _amount
|
|
@@ -7,8 +7,9 @@ import {HypERC20Collateral} from "../HypERC20Collateral.sol";
|
|
|
7
7
|
contract HypXERC20 is HypERC20Collateral {
|
|
8
8
|
constructor(
|
|
9
9
|
address _xerc20,
|
|
10
|
+
uint256 _scale,
|
|
10
11
|
address _mailbox
|
|
11
|
-
) HypERC20Collateral(_xerc20, _mailbox) {
|
|
12
|
+
) HypERC20Collateral(_xerc20, _scale, _mailbox) {
|
|
12
13
|
_disableInitializers();
|
|
13
14
|
}
|
|
14
15
|
|
|
@@ -13,8 +13,15 @@ contract HypXERC20Lockbox is HypERC20Collateral {
|
|
|
13
13
|
|
|
14
14
|
constructor(
|
|
15
15
|
address _lockbox,
|
|
16
|
+
uint256 _scale,
|
|
16
17
|
address _mailbox
|
|
17
|
-
)
|
|
18
|
+
)
|
|
19
|
+
HypERC20Collateral(
|
|
20
|
+
address(IXERC20Lockbox(_lockbox).ERC20()),
|
|
21
|
+
_scale,
|
|
22
|
+
_mailbox
|
|
23
|
+
)
|
|
24
|
+
{
|
|
18
25
|
lockbox = IXERC20Lockbox(_lockbox);
|
|
19
26
|
xERC20 = lockbox.XERC20();
|
|
20
27
|
approveLockbox();
|
|
@@ -5,12 +5,13 @@ import {TypeCasts} from "../../libs/TypeCasts.sol";
|
|
|
5
5
|
|
|
6
6
|
import {TokenMessage} from "./TokenMessage.sol";
|
|
7
7
|
import {TokenRouter} from "./TokenRouter.sol";
|
|
8
|
+
import {FungibleTokenRouter} from "./FungibleTokenRouter.sol";
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* @title Common FastTokenRouter functionality for ERC20 Tokens with remote transfer support.
|
|
11
12
|
* @author Abacus Works
|
|
12
13
|
*/
|
|
13
|
-
abstract contract FastTokenRouter is
|
|
14
|
+
abstract contract FastTokenRouter is FungibleTokenRouter {
|
|
14
15
|
using TypeCasts for bytes32;
|
|
15
16
|
using TokenMessage for bytes;
|
|
16
17
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
pragma solidity >=0.8.0;
|
|
3
|
+
|
|
4
|
+
import {TokenRouter} from "./TokenRouter.sol";
|
|
5
|
+
|
|
6
|
+
abstract contract FungibleTokenRouter is TokenRouter {
|
|
7
|
+
uint256 public immutable scale;
|
|
8
|
+
|
|
9
|
+
constructor(uint256 _scale, address _mailbox) TokenRouter(_mailbox) {
|
|
10
|
+
scale = _scale;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @dev Scales local amount to message amount (up by scale factor).
|
|
15
|
+
* @inheritdoc TokenRouter
|
|
16
|
+
*/
|
|
17
|
+
function _outboundAmount(
|
|
18
|
+
uint256 _localAmount
|
|
19
|
+
) internal view virtual override returns (uint256 _messageAmount) {
|
|
20
|
+
_messageAmount = _localAmount * scale;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @dev Scales message amount to local amount (down by scale factor).
|
|
25
|
+
* @inheritdoc TokenRouter
|
|
26
|
+
*/
|
|
27
|
+
function _inboundAmount(
|
|
28
|
+
uint256 _messageAmount
|
|
29
|
+
) internal view virtual override returns (uint256 _localAmount) {
|
|
30
|
+
_localAmount = _messageAmount / scale;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -116,9 +116,11 @@ abstract contract TokenRouter is GasRouter {
|
|
|
116
116
|
address _hook
|
|
117
117
|
) internal virtual returns (bytes32 messageId) {
|
|
118
118
|
bytes memory _tokenMetadata = _transferFromSender(_amountOrId);
|
|
119
|
+
|
|
120
|
+
uint256 outboundAmount = _outboundAmount(_amountOrId);
|
|
119
121
|
bytes memory _tokenMessage = TokenMessage.format(
|
|
120
122
|
_recipient,
|
|
121
|
-
|
|
123
|
+
outboundAmount,
|
|
122
124
|
_tokenMetadata
|
|
123
125
|
);
|
|
124
126
|
|
|
@@ -130,7 +132,29 @@ abstract contract TokenRouter is GasRouter {
|
|
|
130
132
|
_hook
|
|
131
133
|
);
|
|
132
134
|
|
|
133
|
-
emit SentTransferRemote(_destination, _recipient,
|
|
135
|
+
emit SentTransferRemote(_destination, _recipient, outboundAmount);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* @dev Should return the amount of tokens to be encoded in the message amount (eg for scaling `_localAmount`).
|
|
140
|
+
* @param _localAmount The amount of tokens transferred on this chain in local denomination.
|
|
141
|
+
* @return _messageAmount The amount of tokens to be encoded in the message body.
|
|
142
|
+
*/
|
|
143
|
+
function _outboundAmount(
|
|
144
|
+
uint256 _localAmount
|
|
145
|
+
) internal view virtual returns (uint256 _messageAmount) {
|
|
146
|
+
_messageAmount = _localAmount;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* @dev Should return the amount of tokens to be decoded from the message amount.
|
|
151
|
+
* @param _messageAmount The amount of tokens received in the message body.
|
|
152
|
+
* @return _localAmount The amount of tokens to be transferred on this chain in local denomination.
|
|
153
|
+
*/
|
|
154
|
+
function _inboundAmount(
|
|
155
|
+
uint256 _messageAmount
|
|
156
|
+
) internal view virtual returns (uint256 _localAmount) {
|
|
157
|
+
_localAmount = _messageAmount;
|
|
134
158
|
}
|
|
135
159
|
|
|
136
160
|
/**
|
|
@@ -179,7 +203,11 @@ abstract contract TokenRouter is GasRouter {
|
|
|
179
203
|
bytes32 recipient = _message.recipient();
|
|
180
204
|
uint256 amount = _message.amount();
|
|
181
205
|
bytes calldata metadata = _message.metadata();
|
|
182
|
-
_transferTo(
|
|
206
|
+
_transferTo(
|
|
207
|
+
recipient.bytes32ToAddress(),
|
|
208
|
+
_inboundAmount(amount),
|
|
209
|
+
metadata
|
|
210
|
+
);
|
|
183
211
|
emit ReceivedTransferRemote(_origin, recipient, amount);
|
|
184
212
|
}
|
|
185
213
|
|