@hyperlane-xyz/core 5.0.0-beta.2 → 5.1.0
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/AttributeCheckpointFraud.sol +140 -0
- package/contracts/CheckpointFraudProofs.sol +143 -0
- package/contracts/client/Router.sol +4 -2
- package/contracts/hooks/OPL2ToL1Hook.sol +84 -0
- package/contracts/hooks/igp/InterchainGasPaymaster.sol +8 -8
- package/contracts/hooks/routing/DomainRoutingHook.sol +8 -7
- package/contracts/interfaces/IInterchainSecurityModule.sol +4 -1
- package/contracts/interfaces/hooks/IPostDispatchHook.sol +2 -1
- package/contracts/interfaces/isms/IWeightedMultisigIsm.sol +39 -0
- package/contracts/interfaces/optimism/ICrossDomainMessenger.sol +2 -0
- package/contracts/interfaces/optimism/IOptimismPortal.sol +28 -0
- package/contracts/isms/hook/OPL2ToL1Ism.sol +109 -0
- package/contracts/isms/libs/MerkleRootMultisigIsmMetadata.sol +16 -0
- package/contracts/isms/libs/MessageIdMultisigIsmMetadata.sol +16 -0
- package/contracts/isms/multisig/AbstractMerkleRootMultisigIsm.sol +14 -9
- package/contracts/isms/multisig/AbstractMessageIdMultisigIsm.sol +13 -8
- package/contracts/isms/multisig/AbstractMultisigIsm.sol +47 -20
- package/contracts/isms/multisig/AbstractWeightedMultisigIsm.sol +100 -0
- package/contracts/isms/multisig/StaticMultisigIsm.sol +10 -2
- package/contracts/isms/multisig/WeightedMultisigIsm.sol +67 -0
- package/contracts/isms/routing/DomainRoutingIsm.sol +4 -2
- package/contracts/libs/CheckpointLib.sol +41 -9
- package/contracts/libs/Merkle.sol +33 -3
- package/contracts/libs/OPL2ToL1Metadata.sol +62 -0
- package/contracts/libs/StaticWeightedValidatorSetFactory.sol +97 -0
- package/contracts/mock/MockArbBridge.sol +78 -0
- package/contracts/mock/MockERC4626YieldSharing.sol +80 -0
- package/contracts/mock/MockHyperlaneEnvironment.sol +2 -2
- package/contracts/mock/MockOptimism.sol +61 -0
- package/contracts/test/ERC20Test.sol +4 -0
- package/contracts/test/ERC4626/ERC4626Test.sol +1 -0
- package/contracts/token/extensions/HypERC4626.sol +102 -0
- package/contracts/token/extensions/HypERC4626Collateral.sol +111 -0
- package/contracts/token/extensions/{HypERC20CollateralVaultDeposit.sol → HypERC4626OwnerCollateral.sol} +3 -2
- package/dist/buildArtifact.js +1 -1
- package/dist/buildArtifact.json +1 -1
- package/dist/contracts/AttributeCheckpointFraud.d.ts +356 -0
- package/dist/contracts/AttributeCheckpointFraud.d.ts.map +1 -0
- package/dist/contracts/AttributeCheckpointFraud.js +2 -0
- package/dist/contracts/AttributeCheckpointFraud.js.map +1 -0
- package/dist/contracts/CheckpointFraudProofs.d.ts +200 -0
- package/dist/contracts/CheckpointFraudProofs.d.ts.map +1 -0
- package/dist/contracts/CheckpointFraudProofs.js +2 -0
- package/dist/contracts/CheckpointFraudProofs.js.map +1 -0
- package/dist/contracts/hooks/OPL2ToL1Hook.d.ts +396 -0
- package/dist/contracts/hooks/OPL2ToL1Hook.d.ts.map +1 -0
- package/dist/contracts/hooks/OPL2ToL1Hook.js +2 -0
- package/dist/contracts/hooks/OPL2ToL1Hook.js.map +1 -0
- package/dist/contracts/hooks/index.d.ts +1 -0
- package/dist/contracts/hooks/index.d.ts.map +1 -1
- package/dist/contracts/index.d.ts +2 -0
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/interfaces/isms/IWeightedMultisigIsm.sol/IStaticWeightedMultisigIsm.d.ts +142 -0
- package/dist/contracts/interfaces/isms/IWeightedMultisigIsm.sol/IStaticWeightedMultisigIsm.d.ts.map +1 -0
- package/dist/contracts/interfaces/isms/IWeightedMultisigIsm.sol/IStaticWeightedMultisigIsm.js +2 -0
- package/dist/contracts/interfaces/isms/IWeightedMultisigIsm.sol/IStaticWeightedMultisigIsm.js.map +1 -0
- package/dist/contracts/interfaces/isms/IWeightedMultisigIsm.sol/index.d.ts +2 -0
- package/dist/contracts/interfaces/isms/IWeightedMultisigIsm.sol/index.d.ts.map +1 -0
- package/dist/contracts/interfaces/isms/IWeightedMultisigIsm.sol/index.js +2 -0
- package/dist/contracts/interfaces/isms/IWeightedMultisigIsm.sol/index.js.map +1 -0
- package/dist/contracts/interfaces/isms/index.d.ts +2 -0
- package/dist/contracts/interfaces/isms/index.d.ts.map +1 -1
- package/dist/contracts/interfaces/optimism/ICrossDomainMessenger.sol/ICrossDomainMessenger.d.ts +16 -1
- package/dist/contracts/interfaces/optimism/ICrossDomainMessenger.sol/ICrossDomainMessenger.d.ts.map +1 -1
- package/dist/contracts/interfaces/optimism/ICrossDomainMessenger.sol/IL1CrossDomainMessenger.d.ts +16 -1
- package/dist/contracts/interfaces/optimism/ICrossDomainMessenger.sol/IL1CrossDomainMessenger.d.ts.map +1 -1
- package/dist/contracts/interfaces/optimism/ICrossDomainMessenger.sol/IL2CrossDomainMessenger.d.ts +16 -1
- package/dist/contracts/interfaces/optimism/ICrossDomainMessenger.sol/IL2CrossDomainMessenger.d.ts.map +1 -1
- package/dist/contracts/interfaces/optimism/IOptimismPortal.d.ts +91 -0
- package/dist/contracts/interfaces/optimism/IOptimismPortal.d.ts.map +1 -0
- package/dist/contracts/interfaces/optimism/IOptimismPortal.js +2 -0
- package/dist/contracts/interfaces/optimism/IOptimismPortal.js.map +1 -0
- package/dist/contracts/interfaces/optimism/index.d.ts +1 -0
- package/dist/contracts/interfaces/optimism/index.d.ts.map +1 -1
- package/dist/contracts/isms/hook/OPL2ToL1Ism.d.ts +273 -0
- package/dist/contracts/isms/hook/OPL2ToL1Ism.d.ts.map +1 -0
- package/dist/contracts/isms/hook/OPL2ToL1Ism.js +2 -0
- package/dist/contracts/isms/hook/OPL2ToL1Ism.js.map +1 -0
- package/dist/contracts/isms/hook/index.d.ts +1 -0
- package/dist/contracts/isms/hook/index.d.ts.map +1 -1
- package/dist/contracts/isms/multisig/AbstractMerkleRootMultisigIsm.d.ts +16 -46
- package/dist/contracts/isms/multisig/AbstractMerkleRootMultisigIsm.d.ts.map +1 -1
- package/dist/contracts/isms/multisig/AbstractMessageIdMultisigIsm.d.ts +16 -46
- package/dist/contracts/isms/multisig/AbstractMessageIdMultisigIsm.d.ts.map +1 -1
- package/dist/contracts/isms/multisig/AbstractMultisigIsm.sol/AbstractMultisig.d.ts +50 -0
- package/dist/contracts/isms/multisig/AbstractMultisigIsm.sol/AbstractMultisig.d.ts.map +1 -0
- package/dist/contracts/isms/multisig/AbstractMultisigIsm.sol/AbstractMultisig.js +2 -0
- package/dist/contracts/isms/multisig/AbstractMultisigIsm.sol/AbstractMultisig.js.map +1 -0
- package/dist/contracts/isms/multisig/{AbstractMultisigIsm.d.ts → AbstractMultisigIsm.sol/AbstractMultisigIsm.d.ts} +17 -17
- package/dist/contracts/isms/multisig/AbstractMultisigIsm.sol/AbstractMultisigIsm.d.ts.map +1 -0
- package/dist/contracts/isms/multisig/AbstractMultisigIsm.sol/AbstractMultisigIsm.js.map +1 -0
- package/dist/contracts/isms/multisig/AbstractMultisigIsm.sol/index.d.ts +3 -0
- package/dist/contracts/isms/multisig/AbstractMultisigIsm.sol/index.d.ts.map +1 -0
- package/dist/contracts/isms/multisig/AbstractMultisigIsm.sol/index.js +2 -0
- package/dist/contracts/isms/multisig/AbstractMultisigIsm.sol/index.js.map +1 -0
- package/dist/contracts/isms/multisig/AbstractWeightedMultisigIsm.sol/AbstractStaticWeightedMultisigIsm.d.ts +138 -0
- package/dist/contracts/isms/multisig/AbstractWeightedMultisigIsm.sol/AbstractStaticWeightedMultisigIsm.d.ts.map +1 -0
- package/dist/contracts/isms/multisig/AbstractWeightedMultisigIsm.sol/AbstractStaticWeightedMultisigIsm.js +2 -0
- package/dist/contracts/isms/multisig/AbstractWeightedMultisigIsm.sol/AbstractStaticWeightedMultisigIsm.js.map +1 -0
- package/dist/contracts/isms/multisig/AbstractWeightedMultisigIsm.sol/index.d.ts +2 -0
- package/dist/contracts/isms/multisig/AbstractWeightedMultisigIsm.sol/index.d.ts.map +1 -0
- package/dist/contracts/isms/multisig/AbstractWeightedMultisigIsm.sol/index.js +2 -0
- package/dist/contracts/isms/multisig/AbstractWeightedMultisigIsm.sol/index.js.map +1 -0
- package/dist/contracts/isms/multisig/StaticMultisigIsm.sol/AbstractMetaProxyMultisigIsm.d.ts +16 -16
- package/dist/contracts/isms/multisig/StaticMultisigIsm.sol/AbstractMetaProxyMultisigIsm.d.ts.map +1 -1
- package/dist/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsm.d.ts +16 -1
- package/dist/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsm.d.ts.map +1 -1
- package/dist/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsm.d.ts +16 -1
- package/dist/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsm.d.ts.map +1 -1
- package/dist/contracts/isms/multisig/WeightedMultisigIsm.sol/AbstractMetaProxyWeightedMultisigIsm.d.ts +138 -0
- package/dist/contracts/isms/multisig/WeightedMultisigIsm.sol/AbstractMetaProxyWeightedMultisigIsm.d.ts.map +1 -0
- package/dist/contracts/isms/multisig/WeightedMultisigIsm.sol/AbstractMetaProxyWeightedMultisigIsm.js +2 -0
- package/dist/contracts/isms/multisig/WeightedMultisigIsm.sol/AbstractMetaProxyWeightedMultisigIsm.js.map +1 -0
- package/dist/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsm.d.ts +138 -0
- package/dist/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsm.d.ts.map +1 -0
- package/dist/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsm.js +2 -0
- package/dist/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsm.js.map +1 -0
- package/dist/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsmFactory.d.ts +106 -0
- package/dist/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsmFactory.d.ts.map +1 -0
- package/dist/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsmFactory.js +2 -0
- package/dist/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsmFactory.js.map +1 -0
- package/dist/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsm.d.ts +138 -0
- package/dist/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsm.d.ts.map +1 -0
- package/dist/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsm.js +2 -0
- package/dist/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsm.js.map +1 -0
- package/dist/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsmFactory.d.ts +106 -0
- package/dist/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsmFactory.d.ts.map +1 -0
- package/dist/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsmFactory.js +2 -0
- package/dist/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsmFactory.js.map +1 -0
- package/dist/contracts/isms/multisig/WeightedMultisigIsm.sol/index.d.ts +6 -0
- package/dist/contracts/isms/multisig/WeightedMultisigIsm.sol/index.d.ts.map +1 -0
- package/dist/contracts/isms/multisig/WeightedMultisigIsm.sol/index.js +2 -0
- package/dist/contracts/isms/multisig/WeightedMultisigIsm.sol/index.js.map +1 -0
- package/dist/contracts/isms/multisig/index.d.ts +6 -1
- package/dist/contracts/isms/multisig/index.d.ts.map +1 -1
- package/dist/contracts/libs/StaticWeightedValidatorSetFactory.d.ts +106 -0
- package/dist/contracts/libs/StaticWeightedValidatorSetFactory.d.ts.map +1 -0
- package/dist/contracts/libs/StaticWeightedValidatorSetFactory.js +2 -0
- package/dist/contracts/libs/StaticWeightedValidatorSetFactory.js.map +1 -0
- package/dist/contracts/libs/index.d.ts +1 -0
- package/dist/contracts/libs/index.d.ts.map +1 -1
- package/dist/contracts/mock/MockArbBridge.sol/MockArbBridge.d.ts +162 -0
- package/dist/contracts/mock/MockArbBridge.sol/MockArbBridge.d.ts.map +1 -0
- package/dist/contracts/mock/MockArbBridge.sol/MockArbBridge.js +2 -0
- package/dist/contracts/mock/MockArbBridge.sol/MockArbBridge.js.map +1 -0
- package/dist/contracts/mock/MockArbBridge.sol/MockArbSys.d.ts +96 -0
- package/dist/contracts/mock/MockArbBridge.sol/MockArbSys.d.ts.map +1 -0
- package/dist/contracts/mock/MockArbBridge.sol/MockArbSys.js +2 -0
- package/dist/contracts/mock/MockArbBridge.sol/MockArbSys.js.map +1 -0
- package/dist/contracts/mock/MockArbBridge.sol/index.d.ts +3 -0
- package/dist/contracts/mock/MockArbBridge.sol/index.d.ts.map +1 -0
- package/dist/contracts/mock/MockArbBridge.sol/index.js +2 -0
- package/dist/contracts/mock/MockArbBridge.sol/index.js.map +1 -0
- package/dist/contracts/mock/MockERC4626YieldSharing.d.ts +853 -0
- package/dist/contracts/mock/MockERC4626YieldSharing.d.ts.map +1 -0
- package/dist/contracts/mock/MockERC4626YieldSharing.js +2 -0
- package/dist/contracts/mock/MockERC4626YieldSharing.js.map +1 -0
- package/dist/contracts/mock/MockHyperlaneEnvironment.d.ts +31 -1
- package/dist/contracts/mock/MockHyperlaneEnvironment.d.ts.map +1 -1
- package/dist/contracts/mock/MockOptimism.sol/MockOptimismMessenger.d.ts +218 -0
- package/dist/contracts/mock/MockOptimism.sol/MockOptimismMessenger.d.ts.map +1 -0
- package/dist/contracts/mock/MockOptimism.sol/MockOptimismMessenger.js +2 -0
- package/dist/contracts/mock/MockOptimism.sol/MockOptimismMessenger.js.map +1 -0
- package/dist/contracts/mock/MockOptimism.sol/MockOptimismPortal.d.ts +91 -0
- package/dist/contracts/mock/MockOptimism.sol/MockOptimismPortal.d.ts.map +1 -0
- package/dist/contracts/mock/MockOptimism.sol/MockOptimismPortal.js +2 -0
- package/dist/contracts/mock/MockOptimism.sol/MockOptimismPortal.js.map +1 -0
- package/dist/contracts/mock/MockOptimism.sol/index.d.ts +3 -0
- package/dist/contracts/mock/MockOptimism.sol/index.d.ts.map +1 -0
- package/dist/contracts/mock/MockOptimism.sol/index.js +2 -0
- package/dist/contracts/mock/MockOptimism.sol/index.js.map +1 -0
- package/dist/contracts/mock/index.d.ts +5 -0
- package/dist/contracts/mock/index.d.ts.map +1 -1
- package/dist/contracts/test/ERC20Test.sol/ERC20Test.d.ts +32 -1
- package/dist/contracts/test/ERC20Test.sol/ERC20Test.d.ts.map +1 -1
- package/dist/contracts/test/ERC20Test.sol/FiatTokenTest.d.ts +32 -1
- package/dist/contracts/test/ERC20Test.sol/FiatTokenTest.d.ts.map +1 -1
- package/dist/contracts/test/ERC20Test.sol/XERC20Test.d.ts +32 -1
- package/dist/contracts/test/ERC20Test.sol/XERC20Test.d.ts.map +1 -1
- package/dist/contracts/token/extensions/HypERC4626.d.ts +979 -0
- package/dist/contracts/token/extensions/HypERC4626.d.ts.map +1 -0
- package/dist/contracts/token/extensions/HypERC4626.js +2 -0
- package/dist/contracts/token/extensions/HypERC4626.js.map +1 -0
- package/dist/contracts/token/extensions/HypERC4626Collateral.d.ts +718 -0
- package/dist/contracts/token/extensions/HypERC4626Collateral.d.ts.map +1 -0
- package/dist/contracts/token/extensions/HypERC4626Collateral.js +2 -0
- package/dist/contracts/token/extensions/HypERC4626Collateral.js.map +1 -0
- package/dist/contracts/token/extensions/{HypERC20CollateralVaultDeposit.d.ts → HypERC4626OwnerCollateral.d.ts} +4 -4
- package/dist/contracts/token/extensions/HypERC4626OwnerCollateral.d.ts.map +1 -0
- package/dist/contracts/token/extensions/HypERC4626OwnerCollateral.js +2 -0
- package/dist/contracts/token/extensions/HypERC4626OwnerCollateral.js.map +1 -0
- package/dist/contracts/token/extensions/index.d.ts +3 -1
- package/dist/contracts/token/extensions/index.d.ts.map +1 -1
- package/dist/factories/contracts/AttributeCheckpointFraud__factory.d.ts +296 -0
- package/dist/factories/contracts/AttributeCheckpointFraud__factory.d.ts.map +1 -0
- package/dist/factories/contracts/AttributeCheckpointFraud__factory.js +394 -0
- package/dist/factories/contracts/AttributeCheckpointFraud__factory.js.map +1 -0
- package/dist/factories/contracts/CheckpointFraudProofs__factory.d.ts +239 -0
- package/dist/factories/contracts/CheckpointFraudProofs__factory.d.ts.map +1 -0
- package/dist/factories/contracts/CheckpointFraudProofs__factory.js +325 -0
- package/dist/factories/contracts/CheckpointFraudProofs__factory.js.map +1 -0
- package/dist/factories/contracts/Mailbox__factory.d.ts +1 -1
- package/dist/factories/contracts/Mailbox__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/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 +252 -0
- package/dist/factories/contracts/hooks/OPL2ToL1Hook__factory.d.ts.map +1 -0
- package/dist/factories/contracts/hooks/OPL2ToL1Hook__factory.js +339 -0
- package/dist/factories/contracts/hooks/OPL2ToL1Hook__factory.js.map +1 -0
- 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.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/index.d.ts +1 -0
- package/dist/factories/contracts/hooks/index.d.ts.map +1 -1
- package/dist/factories/contracts/hooks/index.js +1 -0
- package/dist/factories/contracts/hooks/index.js.map +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/DestinationRecipientRoutingHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/routing/DestinationRecipientRoutingHook__factory.d.ts.map +1 -1
- package/dist/factories/contracts/hooks/routing/DestinationRecipientRoutingHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/routing/DestinationRecipientRoutingHook__factory.js.map +1 -1
- package/dist/factories/contracts/hooks/routing/DomainRoutingHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/routing/DomainRoutingHook__factory.d.ts.map +1 -1
- package/dist/factories/contracts/hooks/routing/DomainRoutingHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/routing/DomainRoutingHook__factory.js.map +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/index.d.ts +2 -0
- package/dist/factories/contracts/index.d.ts.map +1 -1
- package/dist/factories/contracts/index.js +2 -0
- package/dist/factories/contracts/index.js.map +1 -1
- package/dist/factories/contracts/interfaces/isms/IWeightedMultisigIsm.sol/IStaticWeightedMultisigIsm__factory.d.ts +64 -0
- package/dist/factories/contracts/interfaces/isms/IWeightedMultisigIsm.sol/IStaticWeightedMultisigIsm__factory.d.ts.map +1 -0
- package/dist/factories/contracts/interfaces/isms/IWeightedMultisigIsm.sol/IStaticWeightedMultisigIsm__factory.js +89 -0
- package/dist/factories/contracts/interfaces/isms/IWeightedMultisigIsm.sol/IStaticWeightedMultisigIsm__factory.js.map +1 -0
- package/dist/factories/contracts/interfaces/isms/IWeightedMultisigIsm.sol/index.d.ts +2 -0
- package/dist/factories/contracts/interfaces/isms/IWeightedMultisigIsm.sol/index.d.ts.map +1 -0
- package/dist/factories/contracts/interfaces/isms/IWeightedMultisigIsm.sol/index.js +5 -0
- package/dist/factories/contracts/interfaces/isms/IWeightedMultisigIsm.sol/index.js.map +1 -0
- package/dist/factories/contracts/interfaces/isms/index.d.ts +1 -0
- package/dist/factories/contracts/interfaces/isms/index.d.ts.map +1 -1
- package/dist/factories/contracts/interfaces/isms/index.js +1 -0
- package/dist/factories/contracts/interfaces/isms/index.js.map +1 -1
- package/dist/factories/contracts/interfaces/optimism/ICrossDomainMessenger.sol/ICrossDomainMessenger__factory.d.ts +10 -0
- package/dist/factories/contracts/interfaces/optimism/ICrossDomainMessenger.sol/ICrossDomainMessenger__factory.d.ts.map +1 -1
- package/dist/factories/contracts/interfaces/optimism/ICrossDomainMessenger.sol/ICrossDomainMessenger__factory.js +13 -0
- package/dist/factories/contracts/interfaces/optimism/ICrossDomainMessenger.sol/ICrossDomainMessenger__factory.js.map +1 -1
- package/dist/factories/contracts/interfaces/optimism/ICrossDomainMessenger.sol/IL1CrossDomainMessenger__factory.d.ts +10 -0
- package/dist/factories/contracts/interfaces/optimism/ICrossDomainMessenger.sol/IL1CrossDomainMessenger__factory.d.ts.map +1 -1
- package/dist/factories/contracts/interfaces/optimism/ICrossDomainMessenger.sol/IL1CrossDomainMessenger__factory.js +13 -0
- package/dist/factories/contracts/interfaces/optimism/ICrossDomainMessenger.sol/IL1CrossDomainMessenger__factory.js.map +1 -1
- package/dist/factories/contracts/interfaces/optimism/ICrossDomainMessenger.sol/IL2CrossDomainMessenger__factory.d.ts +10 -0
- package/dist/factories/contracts/interfaces/optimism/ICrossDomainMessenger.sol/IL2CrossDomainMessenger__factory.d.ts.map +1 -1
- package/dist/factories/contracts/interfaces/optimism/ICrossDomainMessenger.sol/IL2CrossDomainMessenger__factory.js +13 -0
- package/dist/factories/contracts/interfaces/optimism/ICrossDomainMessenger.sol/IL2CrossDomainMessenger__factory.js.map +1 -1
- package/dist/factories/contracts/interfaces/optimism/IOptimismPortal__factory.d.ts +44 -0
- package/dist/factories/contracts/interfaces/optimism/IOptimismPortal__factory.d.ts.map +1 -0
- package/dist/factories/contracts/interfaces/optimism/IOptimismPortal__factory.js +61 -0
- package/dist/factories/contracts/interfaces/optimism/IOptimismPortal__factory.js.map +1 -0
- package/dist/factories/contracts/interfaces/optimism/index.d.ts +1 -0
- package/dist/factories/contracts/interfaces/optimism/index.d.ts.map +1 -1
- package/dist/factories/contracts/interfaces/optimism/index.js +1 -0
- package/dist/factories/contracts/interfaces/optimism/index.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/hook/ArbL2ToL1Ism__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__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 +169 -0
- package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__factory.d.ts.map +1 -0
- package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__factory.js +234 -0
- package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__factory.js.map +1 -0
- 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/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 +1 -0
- package/dist/factories/contracts/isms/hook/index.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.js +1 -1
- package/dist/factories/contracts/isms/multisig/AbstractMerkleRootMultisigIsm__factory.d.ts +4 -36
- package/dist/factories/contracts/isms/multisig/AbstractMerkleRootMultisigIsm__factory.d.ts.map +1 -1
- package/dist/factories/contracts/isms/multisig/AbstractMerkleRootMultisigIsm__factory.js +4 -46
- package/dist/factories/contracts/isms/multisig/AbstractMerkleRootMultisigIsm__factory.js.map +1 -1
- package/dist/factories/contracts/isms/multisig/AbstractMessageIdMultisigIsm__factory.d.ts +4 -36
- package/dist/factories/contracts/isms/multisig/AbstractMessageIdMultisigIsm__factory.d.ts.map +1 -1
- package/dist/factories/contracts/isms/multisig/AbstractMessageIdMultisigIsm__factory.js +4 -46
- package/dist/factories/contracts/isms/multisig/AbstractMessageIdMultisigIsm__factory.js.map +1 -1
- package/dist/factories/contracts/isms/multisig/{AbstractMultisigIsm__factory.d.ts → AbstractMultisigIsm.sol/AbstractMultisigIsm__factory.d.ts} +10 -6
- package/dist/factories/contracts/isms/multisig/AbstractMultisigIsm.sol/AbstractMultisigIsm__factory.d.ts.map +1 -0
- package/dist/factories/contracts/isms/multisig/{AbstractMultisigIsm__factory.js → AbstractMultisigIsm.sol/AbstractMultisigIsm__factory.js} +11 -5
- package/dist/factories/contracts/isms/multisig/AbstractMultisigIsm.sol/AbstractMultisigIsm__factory.js.map +1 -0
- package/dist/factories/contracts/isms/multisig/AbstractMultisigIsm.sol/AbstractMultisig__factory.d.ts +23 -0
- package/dist/factories/contracts/isms/multisig/AbstractMultisigIsm.sol/AbstractMultisig__factory.d.ts.map +1 -0
- package/dist/factories/contracts/isms/multisig/AbstractMultisigIsm.sol/AbstractMultisig__factory.js +35 -0
- package/dist/factories/contracts/isms/multisig/AbstractMultisigIsm.sol/AbstractMultisig__factory.js.map +1 -0
- package/dist/factories/contracts/isms/multisig/AbstractMultisigIsm.sol/index.d.ts +3 -0
- package/dist/factories/contracts/isms/multisig/AbstractMultisigIsm.sol/index.d.ts.map +1 -0
- package/dist/factories/contracts/isms/multisig/AbstractMultisigIsm.sol/index.js +6 -0
- package/dist/factories/contracts/isms/multisig/AbstractMultisigIsm.sol/index.js.map +1 -0
- package/dist/factories/contracts/isms/multisig/AbstractWeightedMultisigIsm.sol/AbstractStaticWeightedMultisigIsm__factory.d.ts +88 -0
- package/dist/factories/contracts/isms/multisig/AbstractWeightedMultisigIsm.sol/AbstractStaticWeightedMultisigIsm__factory.d.ts.map +1 -0
- package/dist/factories/contracts/isms/multisig/AbstractWeightedMultisigIsm.sol/AbstractStaticWeightedMultisigIsm__factory.js +121 -0
- package/dist/factories/contracts/isms/multisig/AbstractWeightedMultisigIsm.sol/AbstractStaticWeightedMultisigIsm__factory.js.map +1 -0
- package/dist/factories/contracts/isms/multisig/AbstractWeightedMultisigIsm.sol/index.d.ts +2 -0
- package/dist/factories/contracts/isms/multisig/AbstractWeightedMultisigIsm.sol/index.d.ts.map +1 -0
- package/dist/factories/contracts/isms/multisig/AbstractWeightedMultisigIsm.sol/index.js +5 -0
- package/dist/factories/contracts/isms/multisig/AbstractWeightedMultisigIsm.sol/index.js.map +1 -0
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/AbstractMetaProxyMultisigIsm__factory.d.ts +9 -5
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/AbstractMetaProxyMultisigIsm__factory.d.ts.map +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/AbstractMetaProxyMultisigIsm__factory.js +11 -5
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/AbstractMetaProxyMultisigIsm__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.d.ts.map +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsmFactory__factory.js.map +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsm__factory.d.ts +15 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsm__factory.d.ts.map +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsm__factory.js +20 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsm__factory.js.map +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.d.ts.map +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsmFactory__factory.js.map +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsm__factory.d.ts +15 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsm__factory.d.ts.map +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsm__factory.js +20 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsm__factory.js.map +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/AbstractMetaProxyWeightedMultisigIsm__factory.d.ts +88 -0
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/AbstractMetaProxyWeightedMultisigIsm__factory.d.ts.map +1 -0
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/AbstractMetaProxyWeightedMultisigIsm__factory.js +121 -0
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/AbstractMetaProxyWeightedMultisigIsm__factory.js.map +1 -0
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsmFactory__factory.d.ts +85 -0
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsmFactory__factory.d.ts.map +1 -0
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsmFactory__factory.js +124 -0
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsmFactory__factory.js.map +1 -0
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsm__factory.d.ts +100 -0
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsm__factory.d.ts.map +1 -0
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsm__factory.js +144 -0
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsm__factory.js.map +1 -0
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsmFactory__factory.d.ts +85 -0
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsmFactory__factory.d.ts.map +1 -0
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsmFactory__factory.js +124 -0
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsmFactory__factory.js.map +1 -0
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsm__factory.d.ts +100 -0
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsm__factory.d.ts.map +1 -0
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsm__factory.js +144 -0
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsm__factory.js.map +1 -0
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/index.d.ts +6 -0
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/index.d.ts.map +1 -0
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/index.js +9 -0
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/index.js.map +1 -0
- package/dist/factories/contracts/isms/multisig/index.d.ts +3 -1
- package/dist/factories/contracts/isms/multisig/index.d.ts.map +1 -1
- package/dist/factories/contracts/isms/multisig/index.js +3 -1
- package/dist/factories/contracts/isms/multisig/index.js.map +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.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.js +1 -1
- package/dist/factories/contracts/libs/StaticWeightedValidatorSetFactory__factory.d.ts +73 -0
- package/dist/factories/contracts/libs/StaticWeightedValidatorSetFactory__factory.d.ts.map +1 -0
- package/dist/factories/contracts/libs/StaticWeightedValidatorSetFactory__factory.js +101 -0
- package/dist/factories/contracts/libs/StaticWeightedValidatorSetFactory__factory.js.map +1 -0
- package/dist/factories/contracts/libs/index.d.ts +1 -0
- package/dist/factories/contracts/libs/index.d.ts.map +1 -1
- package/dist/factories/contracts/libs/index.js +1 -0
- package/dist/factories/contracts/libs/index.js.map +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/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.d.ts.map +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.js +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.js.map +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/MockArbBridge.sol/MockArbBridge__factory.d.ts +111 -0
- package/dist/factories/contracts/mock/MockArbBridge.sol/MockArbBridge__factory.d.ts.map +1 -0
- package/dist/factories/contracts/mock/MockArbBridge.sol/MockArbBridge__factory.js +154 -0
- package/dist/factories/contracts/mock/MockArbBridge.sol/MockArbBridge__factory.js.map +1 -0
- package/dist/factories/contracts/mock/MockArbBridge.sol/MockArbSys__factory.d.ts +89 -0
- package/dist/factories/contracts/mock/MockArbBridge.sol/MockArbSys__factory.d.ts.map +1 -0
- package/dist/factories/contracts/mock/MockArbBridge.sol/MockArbSys__factory.js +124 -0
- package/dist/factories/contracts/mock/MockArbBridge.sol/MockArbSys__factory.js.map +1 -0
- package/dist/factories/contracts/mock/MockArbBridge.sol/index.d.ts +3 -0
- package/dist/factories/contracts/mock/MockArbBridge.sol/index.d.ts.map +1 -0
- package/dist/factories/contracts/mock/MockArbBridge.sol/index.js +6 -0
- package/dist/factories/contracts/mock/MockArbBridge.sol/index.js.map +1 -0
- package/dist/factories/contracts/mock/MockERC4626YieldSharing__factory.d.ts +643 -0
- package/dist/factories/contracts/mock/MockERC4626YieldSharing__factory.d.ts.map +1 -0
- package/dist/factories/contracts/mock/MockERC4626YieldSharing__factory.js +855 -0
- package/dist/factories/contracts/mock/MockERC4626YieldSharing__factory.js.map +1 -0
- package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts +21 -1
- package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts.map +1 -1
- package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js +27 -1
- package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js.map +1 -1
- package/dist/factories/contracts/mock/MockMailbox__factory.d.ts +1 -1
- package/dist/factories/contracts/mock/MockMailbox__factory.js +1 -1
- package/dist/factories/contracts/mock/MockOptimism.sol/MockOptimismMessenger__factory.d.ts +119 -0
- package/dist/factories/contracts/mock/MockOptimism.sol/MockOptimismMessenger__factory.d.ts.map +1 -0
- package/dist/factories/contracts/mock/MockOptimism.sol/MockOptimismMessenger__factory.js +165 -0
- package/dist/factories/contracts/mock/MockOptimism.sol/MockOptimismMessenger__factory.js.map +1 -0
- package/dist/factories/contracts/mock/MockOptimism.sol/MockOptimismPortal__factory.d.ts +60 -0
- package/dist/factories/contracts/mock/MockOptimism.sol/MockOptimismPortal__factory.d.ts.map +1 -0
- package/dist/factories/contracts/mock/MockOptimism.sol/MockOptimismPortal__factory.js +89 -0
- package/dist/factories/contracts/mock/MockOptimism.sol/MockOptimismPortal__factory.js.map +1 -0
- package/dist/factories/contracts/mock/MockOptimism.sol/index.d.ts +3 -0
- package/dist/factories/contracts/mock/MockOptimism.sol/index.d.ts.map +1 -0
- package/dist/factories/contracts/mock/MockOptimism.sol/index.js +6 -0
- package/dist/factories/contracts/mock/MockOptimism.sol/index.js.map +1 -0
- package/dist/factories/contracts/mock/index.d.ts +3 -0
- package/dist/factories/contracts/mock/index.d.ts.map +1 -1
- package/dist/factories/contracts/mock/index.js +3 -0
- package/dist/factories/contracts/mock/index.js.map +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/ERC20Test__factory.d.ts +15 -1
- package/dist/factories/contracts/test/ERC20Test.sol/ERC20Test__factory.d.ts.map +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/ERC20Test__factory.js +19 -1
- package/dist/factories/contracts/test/ERC20Test.sol/ERC20Test__factory.js.map +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/FiatTokenTest__factory.d.ts +15 -1
- package/dist/factories/contracts/test/ERC20Test.sol/FiatTokenTest__factory.d.ts.map +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/FiatTokenTest__factory.js +19 -1
- package/dist/factories/contracts/test/ERC20Test.sol/FiatTokenTest__factory.js.map +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/XERC20LockboxTest__factory.d.ts +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/XERC20LockboxTest__factory.d.ts.map +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/XERC20LockboxTest__factory.js +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/XERC20LockboxTest__factory.js.map +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/XERC20Test__factory.d.ts +15 -1
- package/dist/factories/contracts/test/ERC20Test.sol/XERC20Test__factory.d.ts.map +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/XERC20Test__factory.js +19 -1
- package/dist/factories/contracts/test/ERC20Test.sol/XERC20Test__factory.js.map +1 -1
- package/dist/factories/contracts/test/ERC4626/ERC4626Test__factory.d.ts +1 -1
- package/dist/factories/contracts/test/ERC4626/ERC4626Test__factory.js +1 -1
- package/dist/factories/contracts/test/LightTestRecipient__factory.d.ts +1 -1
- package/dist/factories/contracts/test/LightTestRecipient__factory.js +1 -1
- package/dist/factories/contracts/test/TestGasRouter__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestGasRouter__factory.d.ts.map +1 -1
- package/dist/factories/contracts/test/TestGasRouter__factory.js +1 -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/TestIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestIsm__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/TestMerkle__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestMerkle__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/TestRecipient__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestRecipient__factory.js +1 -1
- package/dist/factories/contracts/test/TestRouter__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestRouter__factory.d.ts.map +1 -1
- package/dist/factories/contracts/test/TestRouter__factory.js +1 -1
- package/dist/factories/contracts/test/TestRouter__factory.js.map +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/token/HypERC20Collateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/HypERC20Collateral__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/HypERC20Collateral__factory.js +1 -1
- package/dist/factories/contracts/token/HypERC20Collateral__factory.js.map +1 -1
- package/dist/factories/contracts/token/HypERC20__factory.d.ts +1 -1
- package/dist/factories/contracts/token/HypERC20__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/HypERC20__factory.js +1 -1
- 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.js +1 -1
- package/dist/factories/contracts/token/HypNative__factory.d.ts +1 -1
- package/dist/factories/contracts/token/HypNative__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/HypNative__factory.js +1 -1
- package/dist/factories/contracts/token/HypNative__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/HypERC4626Collateral__factory.d.ts +469 -0
- package/dist/factories/contracts/token/extensions/HypERC4626Collateral__factory.d.ts.map +1 -0
- package/dist/factories/contracts/token/extensions/HypERC4626Collateral__factory.js +621 -0
- package/dist/factories/contracts/token/extensions/HypERC4626Collateral__factory.js.map +1 -0
- package/dist/factories/contracts/token/extensions/{HypERC20CollateralVaultDeposit__factory.d.ts → HypERC4626OwnerCollateral__factory.d.ts} +11 -11
- package/dist/factories/contracts/token/extensions/HypERC4626OwnerCollateral__factory.d.ts.map +1 -0
- package/dist/factories/contracts/token/extensions/{HypERC20CollateralVaultDeposit__factory.js → HypERC4626OwnerCollateral__factory.js} +3 -3
- package/dist/factories/contracts/token/extensions/HypERC4626OwnerCollateral__factory.js.map +1 -0
- package/dist/factories/contracts/token/extensions/HypERC4626__factory.d.ts +699 -0
- package/dist/factories/contracts/token/extensions/HypERC4626__factory.d.ts.map +1 -0
- package/dist/factories/contracts/token/extensions/HypERC4626__factory.js +923 -0
- package/dist/factories/contracts/token/extensions/HypERC4626__factory.js.map +1 -0
- 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.js +1 -1
- package/dist/factories/contracts/token/extensions/HypFiatToken__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypFiatToken__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/HypFiatToken__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypFiatToken__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20__factory.js.map +1 -1
- package/dist/factories/contracts/token/extensions/index.d.ts +3 -1
- package/dist/factories/contracts/token/extensions/index.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/index.js +3 -1
- package/dist/factories/contracts/token/extensions/index.js.map +1 -1
- package/dist/index.d.ts +46 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -2
- package/dist/index.js.map +1 -1
- package/package.json +5 -4
- package/dist/contracts/isms/multisig/AbstractMultisigIsm.d.ts.map +0 -1
- package/dist/contracts/isms/multisig/AbstractMultisigIsm.js.map +0 -1
- package/dist/contracts/token/extensions/HypERC20CollateralVaultDeposit.d.ts.map +0 -1
- package/dist/contracts/token/extensions/HypERC20CollateralVaultDeposit.js +0 -2
- package/dist/contracts/token/extensions/HypERC20CollateralVaultDeposit.js.map +0 -1
- package/dist/factories/contracts/isms/multisig/AbstractMultisigIsm__factory.d.ts.map +0 -1
- package/dist/factories/contracts/isms/multisig/AbstractMultisigIsm__factory.js.map +0 -1
- package/dist/factories/contracts/token/extensions/HypERC20CollateralVaultDeposit__factory.d.ts.map +0 -1
- package/dist/factories/contracts/token/extensions/HypERC20CollateralVaultDeposit__factory.js.map +0 -1
- /package/dist/contracts/isms/multisig/{AbstractMultisigIsm.js → AbstractMultisigIsm.sol/AbstractMultisigIsm.js} +0 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
+
pragma solidity >=0.8.0;
|
|
3
|
+
|
|
4
|
+
import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
|
|
5
|
+
import {Address} from "@openzeppelin/contracts/utils/Address.sol";
|
|
6
|
+
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
|
|
7
|
+
|
|
8
|
+
import {TREE_DEPTH} from "./libs/Merkle.sol";
|
|
9
|
+
import {CheckpointLib, Checkpoint} from "./libs/CheckpointLib.sol";
|
|
10
|
+
import {CheckpointFraudProofs} from "./CheckpointFraudProofs.sol";
|
|
11
|
+
|
|
12
|
+
enum FraudType {
|
|
13
|
+
Whitelist,
|
|
14
|
+
Premature,
|
|
15
|
+
MessageId,
|
|
16
|
+
Root
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
struct Attribution {
|
|
20
|
+
FraudType fraudType;
|
|
21
|
+
// for comparison with staking epoch
|
|
22
|
+
uint48 timestamp;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @title AttributeCheckpointFraud
|
|
27
|
+
* @dev The AttributeCheckpointFraud contract is used to attribute fraud to a specific ECDSA checkpoint signer.
|
|
28
|
+
*/
|
|
29
|
+
contract AttributeCheckpointFraud is Ownable {
|
|
30
|
+
using CheckpointLib for Checkpoint;
|
|
31
|
+
using Address for address;
|
|
32
|
+
|
|
33
|
+
CheckpointFraudProofs public immutable checkpointFraudProofs =
|
|
34
|
+
new CheckpointFraudProofs();
|
|
35
|
+
|
|
36
|
+
mapping(address => bool) public merkleTreeWhitelist;
|
|
37
|
+
|
|
38
|
+
mapping(address signer => mapping(bytes32 digest => Attribution))
|
|
39
|
+
internal _attributions;
|
|
40
|
+
|
|
41
|
+
function _recover(
|
|
42
|
+
Checkpoint calldata checkpoint,
|
|
43
|
+
bytes calldata signature
|
|
44
|
+
) internal pure returns (address signer, bytes32 digest) {
|
|
45
|
+
digest = checkpoint.digest();
|
|
46
|
+
signer = ECDSA.recover(digest, signature);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function _attribute(
|
|
50
|
+
bytes calldata signature,
|
|
51
|
+
Checkpoint calldata checkpoint,
|
|
52
|
+
FraudType fraudType
|
|
53
|
+
) internal {
|
|
54
|
+
(address signer, bytes32 digest) = _recover(checkpoint, signature);
|
|
55
|
+
require(
|
|
56
|
+
_attributions[signer][digest].timestamp == 0,
|
|
57
|
+
"fraud already attributed to signer for digest"
|
|
58
|
+
);
|
|
59
|
+
_attributions[signer][digest] = Attribution({
|
|
60
|
+
fraudType: fraudType,
|
|
61
|
+
timestamp: uint48(block.timestamp)
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function attributions(
|
|
66
|
+
Checkpoint calldata checkpoint,
|
|
67
|
+
bytes calldata signature
|
|
68
|
+
) external view returns (Attribution memory) {
|
|
69
|
+
(address signer, bytes32 digest) = _recover(checkpoint, signature);
|
|
70
|
+
return _attributions[signer][digest];
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function whitelist(address merkleTree) external onlyOwner {
|
|
74
|
+
require(
|
|
75
|
+
merkleTree.isContract(),
|
|
76
|
+
"merkle tree must be a valid contract"
|
|
77
|
+
);
|
|
78
|
+
merkleTreeWhitelist[merkleTree] = true;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function attributeWhitelist(
|
|
82
|
+
Checkpoint calldata checkpoint,
|
|
83
|
+
bytes calldata signature
|
|
84
|
+
) external {
|
|
85
|
+
require(
|
|
86
|
+
checkpointFraudProofs.isLocal(checkpoint),
|
|
87
|
+
"checkpoint must be local"
|
|
88
|
+
);
|
|
89
|
+
|
|
90
|
+
require(
|
|
91
|
+
!merkleTreeWhitelist[checkpoint.merkleTreeAddress()],
|
|
92
|
+
"merkle tree is whitelisted"
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
_attribute(signature, checkpoint, FraudType.Whitelist);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
function attributePremature(
|
|
99
|
+
Checkpoint calldata checkpoint,
|
|
100
|
+
bytes calldata signature
|
|
101
|
+
) external {
|
|
102
|
+
require(
|
|
103
|
+
checkpointFraudProofs.isPremature(checkpoint),
|
|
104
|
+
"checkpoint must be premature"
|
|
105
|
+
);
|
|
106
|
+
|
|
107
|
+
_attribute(signature, checkpoint, FraudType.Premature);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function attributeMessageId(
|
|
111
|
+
Checkpoint calldata checkpoint,
|
|
112
|
+
bytes32[TREE_DEPTH] calldata proof,
|
|
113
|
+
bytes32 actualMessageId,
|
|
114
|
+
bytes calldata signature
|
|
115
|
+
) external {
|
|
116
|
+
require(
|
|
117
|
+
checkpointFraudProofs.isFraudulentMessageId(
|
|
118
|
+
checkpoint,
|
|
119
|
+
proof,
|
|
120
|
+
actualMessageId
|
|
121
|
+
),
|
|
122
|
+
"checkpoint must have fraudulent message ID"
|
|
123
|
+
);
|
|
124
|
+
|
|
125
|
+
_attribute(signature, checkpoint, FraudType.MessageId);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function attributeRoot(
|
|
129
|
+
Checkpoint calldata checkpoint,
|
|
130
|
+
bytes32[TREE_DEPTH] calldata proof,
|
|
131
|
+
bytes calldata signature
|
|
132
|
+
) external {
|
|
133
|
+
require(
|
|
134
|
+
checkpointFraudProofs.isFraudulentRoot(checkpoint, proof),
|
|
135
|
+
"checkpoint must have fraudulent root"
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
_attribute(signature, checkpoint, FraudType.Root);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
+
pragma solidity >=0.8.0;
|
|
3
|
+
|
|
4
|
+
import {Address} from "@openzeppelin/contracts/utils/Address.sol";
|
|
5
|
+
|
|
6
|
+
import {TypeCasts} from "./libs/TypeCasts.sol";
|
|
7
|
+
import {Checkpoint, CheckpointLib} from "./libs/CheckpointLib.sol";
|
|
8
|
+
import {MerkleLib, TREE_DEPTH} from "./libs/Merkle.sol";
|
|
9
|
+
import {MerkleTreeHook} from "./hooks/MerkleTreeHook.sol";
|
|
10
|
+
import {IMailbox} from "./interfaces/IMailbox.sol";
|
|
11
|
+
|
|
12
|
+
struct StoredIndex {
|
|
13
|
+
uint32 index;
|
|
14
|
+
bool exists;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
contract CheckpointFraudProofs {
|
|
18
|
+
using CheckpointLib for Checkpoint;
|
|
19
|
+
using Address for address;
|
|
20
|
+
|
|
21
|
+
mapping(address merkleTree => mapping(bytes32 root => StoredIndex index))
|
|
22
|
+
public storedCheckpoints;
|
|
23
|
+
|
|
24
|
+
function storedCheckpointContainsMessage(
|
|
25
|
+
address merkleTree,
|
|
26
|
+
uint32 index,
|
|
27
|
+
bytes32 messageId,
|
|
28
|
+
bytes32[TREE_DEPTH] calldata proof
|
|
29
|
+
) public view returns (bool) {
|
|
30
|
+
bytes32 root = MerkleLib.branchRoot(messageId, proof, index);
|
|
31
|
+
StoredIndex storage storedIndex = storedCheckpoints[merkleTree][root];
|
|
32
|
+
return storedIndex.exists && storedIndex.index >= index;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
modifier onlyMessageInStoredCheckpoint(
|
|
36
|
+
Checkpoint calldata checkpoint,
|
|
37
|
+
bytes32[TREE_DEPTH] calldata proof,
|
|
38
|
+
bytes32 messageId
|
|
39
|
+
) {
|
|
40
|
+
require(
|
|
41
|
+
storedCheckpointContainsMessage(
|
|
42
|
+
checkpoint.merkleTreeAddress(),
|
|
43
|
+
checkpoint.index,
|
|
44
|
+
messageId,
|
|
45
|
+
proof
|
|
46
|
+
),
|
|
47
|
+
"message must be member of stored checkpoint"
|
|
48
|
+
);
|
|
49
|
+
_;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function isLocal(
|
|
53
|
+
Checkpoint calldata checkpoint
|
|
54
|
+
) public view returns (bool) {
|
|
55
|
+
address merkleTree = checkpoint.merkleTreeAddress();
|
|
56
|
+
return
|
|
57
|
+
merkleTree.isContract() &&
|
|
58
|
+
MerkleTreeHook(merkleTree).localDomain() == checkpoint.origin;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
modifier onlyLocal(Checkpoint calldata checkpoint) {
|
|
62
|
+
require(isLocal(checkpoint), "must be local checkpoint");
|
|
63
|
+
_;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* @notice Stores the latest checkpoint of the provided merkle tree hook
|
|
68
|
+
* @param merkleTree Address of the merkle tree hook to store the latest checkpoint of.
|
|
69
|
+
* @dev Must be called before proving fraud to circumvent race on message insertion and merkle proof construction.
|
|
70
|
+
*/
|
|
71
|
+
function storeLatestCheckpoint(
|
|
72
|
+
address merkleTree
|
|
73
|
+
) external returns (bytes32 root, uint32 index) {
|
|
74
|
+
(root, index) = MerkleTreeHook(merkleTree).latestCheckpoint();
|
|
75
|
+
storedCheckpoints[merkleTree][root] = StoredIndex(index, true);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* @notice Checks whether the provided checkpoint is premature (fraud).
|
|
80
|
+
* @param checkpoint Checkpoint to check.
|
|
81
|
+
* @dev Checks whether checkpoint.index is greater than or equal to mailbox count
|
|
82
|
+
* @return Whether the provided checkpoint is premature.
|
|
83
|
+
*/
|
|
84
|
+
function isPremature(
|
|
85
|
+
Checkpoint calldata checkpoint
|
|
86
|
+
) public view onlyLocal(checkpoint) returns (bool) {
|
|
87
|
+
// count is the number of messages in the mailbox (i.e. the latest index + 1)
|
|
88
|
+
uint32 count = MerkleTreeHook(checkpoint.merkleTreeAddress()).count();
|
|
89
|
+
|
|
90
|
+
// index >= count is equivalent to index > latest index
|
|
91
|
+
return checkpoint.index >= count;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* @notice Checks whether the provided checkpoint has a fraudulent message ID.
|
|
96
|
+
* @param checkpoint Checkpoint to check.
|
|
97
|
+
* @param proof Merkle proof of the actual message ID at checkpoint.index on checkpoint.merkleTree
|
|
98
|
+
* @param actualMessageId Actual message ID at checkpoint.index on checkpoint.merkleTree
|
|
99
|
+
* @dev Must produce proof of inclusion for actualMessageID against some stored checkpoint.
|
|
100
|
+
* @return Whether the provided checkpoint has a fraudulent message ID.
|
|
101
|
+
*/
|
|
102
|
+
function isFraudulentMessageId(
|
|
103
|
+
Checkpoint calldata checkpoint,
|
|
104
|
+
bytes32[TREE_DEPTH] calldata proof,
|
|
105
|
+
bytes32 actualMessageId
|
|
106
|
+
)
|
|
107
|
+
public
|
|
108
|
+
view
|
|
109
|
+
onlyLocal(checkpoint)
|
|
110
|
+
onlyMessageInStoredCheckpoint(checkpoint, proof, actualMessageId)
|
|
111
|
+
returns (bool)
|
|
112
|
+
{
|
|
113
|
+
return actualMessageId != checkpoint.messageId;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* @notice Checks whether the provided checkpoint has a fraudulent root.
|
|
118
|
+
* @param checkpoint Checkpoint to check.
|
|
119
|
+
* @param proof Merkle proof of the checkpoint.messageId at checkpoint.index on checkpoint.merkleTree
|
|
120
|
+
* @dev Must produce proof of inclusion for checkpoint.messageId against some stored checkpoint.
|
|
121
|
+
* @return Whether the provided checkpoint has a fraudulent message ID.
|
|
122
|
+
*/
|
|
123
|
+
function isFraudulentRoot(
|
|
124
|
+
Checkpoint calldata checkpoint,
|
|
125
|
+
bytes32[TREE_DEPTH] calldata proof
|
|
126
|
+
)
|
|
127
|
+
public
|
|
128
|
+
view
|
|
129
|
+
onlyLocal(checkpoint)
|
|
130
|
+
onlyMessageInStoredCheckpoint(checkpoint, proof, checkpoint.messageId)
|
|
131
|
+
returns (bool)
|
|
132
|
+
{
|
|
133
|
+
// proof of checkpoint.messageId at checkpoint.index is the list of siblings from the leaf node to some stored root
|
|
134
|
+
// once verifying the proof, we can reconstruct the specific root at checkpoint.index by replacing siblings greater
|
|
135
|
+
// than the index (right subtrees) with zeroes
|
|
136
|
+
bytes32 root = MerkleLib.reconstructRoot(
|
|
137
|
+
checkpoint.messageId,
|
|
138
|
+
proof,
|
|
139
|
+
checkpoint.index
|
|
140
|
+
);
|
|
141
|
+
return root != checkpoint.root;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
@@ -153,8 +153,10 @@ abstract contract Router is MailboxClient, IMessageRecipient {
|
|
|
153
153
|
uint32 _domain
|
|
154
154
|
) internal view returns (bytes32) {
|
|
155
155
|
(bool contained, bytes32 _router) = _routers.tryGet(_domain);
|
|
156
|
-
|
|
157
|
-
|
|
156
|
+
if (contained) {
|
|
157
|
+
return _router;
|
|
158
|
+
}
|
|
159
|
+
revert(_domainNotFoundError(_domain));
|
|
158
160
|
}
|
|
159
161
|
|
|
160
162
|
function _domainNotFoundError(
|
|
@@ -0,0 +1,84 @@
|
|
|
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
|
+
import {AbstractPostDispatchHook, AbstractMessageIdAuthHook} from "./libs/AbstractMessageIdAuthHook.sol";
|
|
18
|
+
import {StandardHookMetadata} from "./libs/StandardHookMetadata.sol";
|
|
19
|
+
import {TypeCasts} from "../libs/TypeCasts.sol";
|
|
20
|
+
import {IPostDispatchHook} from "../interfaces/hooks/IPostDispatchHook.sol";
|
|
21
|
+
|
|
22
|
+
// ============ External Imports ============
|
|
23
|
+
import {ICrossDomainMessenger} from "../interfaces/optimism/ICrossDomainMessenger.sol";
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @title OPL2ToL1Hook
|
|
27
|
+
* @notice Message hook to inform the OPL2ToL1Ism of messages published through
|
|
28
|
+
* the native Optimism bridge.
|
|
29
|
+
* @notice This works only for L2 -> L1 messages and has the 7 day delay as specified by the OptimismPortal contract.
|
|
30
|
+
*/
|
|
31
|
+
contract OPL2ToL1Hook is AbstractMessageIdAuthHook {
|
|
32
|
+
using StandardHookMetadata for bytes;
|
|
33
|
+
|
|
34
|
+
// ============ Constants ============
|
|
35
|
+
|
|
36
|
+
// precompile contract on L2 for sending messages to L1
|
|
37
|
+
ICrossDomainMessenger public immutable l2Messenger;
|
|
38
|
+
// Immutable quote amount
|
|
39
|
+
uint32 public immutable GAS_QUOTE;
|
|
40
|
+
|
|
41
|
+
// ============ Constructor ============
|
|
42
|
+
|
|
43
|
+
constructor(
|
|
44
|
+
address _mailbox,
|
|
45
|
+
uint32 _destinationDomain,
|
|
46
|
+
bytes32 _ism,
|
|
47
|
+
address _l2Messenger,
|
|
48
|
+
uint32 _gasQuote
|
|
49
|
+
) AbstractMessageIdAuthHook(_mailbox, _destinationDomain, _ism) {
|
|
50
|
+
GAS_QUOTE = _gasQuote;
|
|
51
|
+
l2Messenger = ICrossDomainMessenger(_l2Messenger);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/// @inheritdoc IPostDispatchHook
|
|
55
|
+
function hookType() external pure override returns (uint8) {
|
|
56
|
+
return uint8(IPostDispatchHook.Types.OP_L2_TO_L1);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/// @inheritdoc AbstractPostDispatchHook
|
|
60
|
+
function _quoteDispatch(
|
|
61
|
+
bytes calldata,
|
|
62
|
+
bytes calldata
|
|
63
|
+
) internal view override returns (uint256) {
|
|
64
|
+
return GAS_QUOTE;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// ============ Internal functions ============
|
|
68
|
+
|
|
69
|
+
/// @inheritdoc AbstractMessageIdAuthHook
|
|
70
|
+
function _sendMessageId(
|
|
71
|
+
bytes calldata metadata,
|
|
72
|
+
bytes memory payload
|
|
73
|
+
) internal override {
|
|
74
|
+
require(
|
|
75
|
+
msg.value >= metadata.msgValue(0) + GAS_QUOTE,
|
|
76
|
+
"OPL2ToL1Hook: insufficient msg.value"
|
|
77
|
+
);
|
|
78
|
+
l2Messenger.sendMessage{value: metadata.msgValue(0)}(
|
|
79
|
+
TypeCasts.bytes32ToAddress(ism),
|
|
80
|
+
payload,
|
|
81
|
+
GAS_QUOTE
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -228,14 +228,14 @@ contract InterchainGasPaymaster is
|
|
|
228
228
|
IGasOracle _gasOracle = destinationGasConfigs[_destinationDomain]
|
|
229
229
|
.gasOracle;
|
|
230
230
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
231
|
+
if (address(_gasOracle) == address(0)) {
|
|
232
|
+
revert(
|
|
233
|
+
string.concat(
|
|
234
|
+
"Configured IGP doesn't support domain ",
|
|
235
|
+
Strings.toString(_destinationDomain)
|
|
236
|
+
)
|
|
237
|
+
);
|
|
238
|
+
}
|
|
239
239
|
return _gasOracle.getExchangeRateAndGasPrice(_destinationDomain);
|
|
240
240
|
}
|
|
241
241
|
|
|
@@ -90,12 +90,13 @@ contract DomainRoutingHook is AbstractPostDispatchHook, MailboxClient {
|
|
|
90
90
|
bytes calldata message
|
|
91
91
|
) internal view virtual returns (IPostDispatchHook hook) {
|
|
92
92
|
hook = hooks[message.destination()];
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
93
|
+
if (address(hook) == address(0)) {
|
|
94
|
+
revert(
|
|
95
|
+
string.concat(
|
|
96
|
+
"No hook configured for destination: ",
|
|
97
|
+
message.destination().toString()
|
|
98
|
+
)
|
|
99
|
+
);
|
|
100
|
+
}
|
|
100
101
|
}
|
|
101
102
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
+
pragma solidity >=0.6.11;
|
|
3
|
+
|
|
4
|
+
/*@@@@@@@ @@@@@@@@@
|
|
5
|
+
@@@@@@@@@ @@@@@@@@@
|
|
6
|
+
@@@@@@@@@ @@@@@@@@@
|
|
7
|
+
@@@@@@@@@ @@@@@@@@@
|
|
8
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
9
|
+
@@@@@ HYPERLANE @@@@@@@
|
|
10
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
11
|
+
@@@@@@@@@ @@@@@@@@@
|
|
12
|
+
@@@@@@@@@ @@@@@@@@@
|
|
13
|
+
@@@@@@@@@ @@@@@@@@@
|
|
14
|
+
@@@@@@@@@ @@@@@@@@*/
|
|
15
|
+
|
|
16
|
+
import {IInterchainSecurityModule} from "../IInterchainSecurityModule.sol";
|
|
17
|
+
|
|
18
|
+
interface IStaticWeightedMultisigIsm is IInterchainSecurityModule {
|
|
19
|
+
// ============ Structs ============
|
|
20
|
+
|
|
21
|
+
// ValidatorInfo contains the signing address and weight of a validator
|
|
22
|
+
struct ValidatorInfo {
|
|
23
|
+
address signingAddress;
|
|
24
|
+
uint96 weight;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @notice Returns the validators and threshold weight for this ISM.
|
|
29
|
+
* @param _message The message to be verified
|
|
30
|
+
* @return validators The validators and their weights
|
|
31
|
+
* @return thresholdWeight The threshold weight required to pass verification
|
|
32
|
+
*/
|
|
33
|
+
function validatorsAndThresholdWeight(
|
|
34
|
+
bytes calldata _message
|
|
35
|
+
)
|
|
36
|
+
external
|
|
37
|
+
view
|
|
38
|
+
returns (ValidatorInfo[] memory validators, uint96 thresholdWeight);
|
|
39
|
+
}
|
|
@@ -30,6 +30,8 @@ interface ICrossDomainMessenger {
|
|
|
30
30
|
function xDomainMessageSender() external view returns (address);
|
|
31
31
|
|
|
32
32
|
function OTHER_MESSENGER() external view returns (address);
|
|
33
|
+
|
|
34
|
+
function PORTAL() external view returns (address);
|
|
33
35
|
}
|
|
34
36
|
|
|
35
37
|
interface IL1CrossDomainMessenger is ICrossDomainMessenger {}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.0;
|
|
3
|
+
|
|
4
|
+
// author: OP Labs
|
|
5
|
+
// copied from https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts-bedrock
|
|
6
|
+
interface IOptimismPortal {
|
|
7
|
+
/// @notice Struct representing a withdrawal transaction.
|
|
8
|
+
/// @custom:field nonce Nonce of the withdrawal transaction
|
|
9
|
+
/// @custom:field sender Address of the sender of the transaction.
|
|
10
|
+
/// @custom:field target Address of the recipient of the transaction.
|
|
11
|
+
/// @custom:field value Value to send to the recipient.
|
|
12
|
+
/// @custom:field gasLimit Gas limit of the transaction.
|
|
13
|
+
/// @custom:field data Data of the transaction.
|
|
14
|
+
struct WithdrawalTransaction {
|
|
15
|
+
uint256 nonce;
|
|
16
|
+
address sender;
|
|
17
|
+
address target;
|
|
18
|
+
uint256 value;
|
|
19
|
+
uint256 gasLimit;
|
|
20
|
+
bytes data;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/// @notice Finalizes a withdrawal transaction.
|
|
24
|
+
/// @param _tx Withdrawal transaction to finalize.
|
|
25
|
+
function finalizeWithdrawalTransaction(
|
|
26
|
+
WithdrawalTransaction memory _tx
|
|
27
|
+
) external;
|
|
28
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
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 {TypeCasts} from "../../libs/TypeCasts.sol";
|
|
20
|
+
import {Message} from "../../libs/Message.sol";
|
|
21
|
+
import {OPL2ToL1Metadata} from "../../libs/OPL2ToL1Metadata.sol";
|
|
22
|
+
import {AbstractMessageIdAuthorizedIsm} from "./AbstractMessageIdAuthorizedIsm.sol";
|
|
23
|
+
|
|
24
|
+
// ============ External Imports ============
|
|
25
|
+
|
|
26
|
+
import {ICrossDomainMessenger} from "../../interfaces/optimism/ICrossDomainMessenger.sol";
|
|
27
|
+
import {IOptimismPortal} from "../../interfaces/optimism/IOptimismPortal.sol";
|
|
28
|
+
import {CrossChainEnabledOptimism} from "@openzeppelin/contracts/crosschain/optimism/CrossChainEnabledOptimism.sol";
|
|
29
|
+
import {Address} from "@openzeppelin/contracts/utils/Address.sol";
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @title OPL2ToL1Ism
|
|
33
|
+
* @notice Uses the native Optimism bridge to verify interchain messages from L2 to L1.
|
|
34
|
+
*/
|
|
35
|
+
contract OPL2ToL1Ism is
|
|
36
|
+
CrossChainEnabledOptimism,
|
|
37
|
+
AbstractMessageIdAuthorizedIsm
|
|
38
|
+
{
|
|
39
|
+
using TypeCasts for address;
|
|
40
|
+
using Message for bytes;
|
|
41
|
+
using OPL2ToL1Metadata for bytes;
|
|
42
|
+
|
|
43
|
+
// ============ Constants ============
|
|
44
|
+
|
|
45
|
+
// module type for the ISM
|
|
46
|
+
uint8 public constant moduleType =
|
|
47
|
+
uint8(IInterchainSecurityModule.Types.OP_L2_TO_L1);
|
|
48
|
+
// OptimismPortal contract on L1 to finalize withdrawal from L1
|
|
49
|
+
IOptimismPortal public immutable portal;
|
|
50
|
+
|
|
51
|
+
// ============ Constructor ============
|
|
52
|
+
|
|
53
|
+
constructor(address _messenger) CrossChainEnabledOptimism(_messenger) {
|
|
54
|
+
address _portal = ICrossDomainMessenger(_messenger).PORTAL();
|
|
55
|
+
require(
|
|
56
|
+
Address.isContract(_portal),
|
|
57
|
+
"OPL2ToL1Ism: invalid OptimismPortal contract"
|
|
58
|
+
);
|
|
59
|
+
portal = IOptimismPortal(_portal);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// ============ External Functions ============
|
|
63
|
+
|
|
64
|
+
/// @inheritdoc IInterchainSecurityModule
|
|
65
|
+
function verify(
|
|
66
|
+
bytes calldata metadata,
|
|
67
|
+
bytes calldata message
|
|
68
|
+
) external override returns (bool) {
|
|
69
|
+
bool verified = isVerified(message);
|
|
70
|
+
if (!verified) {
|
|
71
|
+
_verifyWithPortalCall(metadata, message);
|
|
72
|
+
}
|
|
73
|
+
releaseValueToRecipient(message);
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// ============ Internal function ============
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* @notice Verify message directly using the portal.finalizeWithdrawal function.
|
|
81
|
+
* @dev This is a fallback in case the message is not verified by the stateful verify function first.
|
|
82
|
+
*/
|
|
83
|
+
function _verifyWithPortalCall(
|
|
84
|
+
bytes calldata metadata,
|
|
85
|
+
bytes calldata message
|
|
86
|
+
) internal {
|
|
87
|
+
require(
|
|
88
|
+
metadata.checkCalldataLength(),
|
|
89
|
+
"OPL2ToL1Ism: invalid data length"
|
|
90
|
+
);
|
|
91
|
+
require(
|
|
92
|
+
metadata.messageId() == message.id(),
|
|
93
|
+
"OPL2ToL1Ism: invalid message id"
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
IOptimismPortal.WithdrawalTransaction memory withdrawal = abi.decode(
|
|
97
|
+
metadata,
|
|
98
|
+
(IOptimismPortal.WithdrawalTransaction)
|
|
99
|
+
);
|
|
100
|
+
// if the finalizeWithdrawalTransaction call is successful, the message is verified
|
|
101
|
+
portal.finalizeWithdrawalTransaction(withdrawal);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/// @inheritdoc AbstractMessageIdAuthorizedIsm
|
|
105
|
+
function _isAuthorized() internal view override returns (bool) {
|
|
106
|
+
return
|
|
107
|
+
_crossChainSender() == TypeCasts.bytes32ToAddress(authorizedHook);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
@@ -109,4 +109,20 @@ library MerkleRootMultisigIsmMetadata {
|
|
|
109
109
|
uint256 _end = _start + SIGNATURE_LENGTH;
|
|
110
110
|
return _metadata[_start:_end];
|
|
111
111
|
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* @notice Returns the number of signatures in the metadata.
|
|
115
|
+
* @param _metadata ABI encoded Merkle Root Multisig ISM metadata.
|
|
116
|
+
* @return The number of signatures in the metadata.
|
|
117
|
+
*/
|
|
118
|
+
function signatureCount(
|
|
119
|
+
bytes calldata _metadata
|
|
120
|
+
) internal pure returns (uint256) {
|
|
121
|
+
uint256 signatures = _metadata.length - SIGNATURES_OFFSET;
|
|
122
|
+
require(
|
|
123
|
+
signatures % SIGNATURE_LENGTH == 0,
|
|
124
|
+
"Invalid signatures length"
|
|
125
|
+
);
|
|
126
|
+
return signatures / SIGNATURE_LENGTH;
|
|
127
|
+
}
|
|
112
128
|
}
|
|
@@ -68,4 +68,20 @@ library MessageIdMultisigIsmMetadata {
|
|
|
68
68
|
uint256 _end = _start + SIGNATURE_LENGTH;
|
|
69
69
|
return _metadata[_start:_end];
|
|
70
70
|
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* @notice Returns the number of signatures in the metadata.
|
|
74
|
+
* @param _metadata ABI encoded MessageId Multisig ISM metadata.
|
|
75
|
+
* @return The number of signatures in the metadata.
|
|
76
|
+
*/
|
|
77
|
+
function signatureCount(
|
|
78
|
+
bytes calldata _metadata
|
|
79
|
+
) internal pure returns (uint256) {
|
|
80
|
+
uint256 signatures = _metadata.length - SIGNATURES_OFFSET;
|
|
81
|
+
require(
|
|
82
|
+
signatures % SIGNATURE_LENGTH == 0,
|
|
83
|
+
"Invalid signatures length"
|
|
84
|
+
);
|
|
85
|
+
return signatures / SIGNATURE_LENGTH;
|
|
86
|
+
}
|
|
71
87
|
}
|