@hyperlane-xyz/core 1.3.2 → 1.3.4
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/interfaces/IInterchainSecurityModule.sol +1 -1
- package/contracts/interfaces/{IAggregationIsm.sol → isms/IAggregationIsm.sol} +1 -1
- package/contracts/interfaces/isms/IRoutingIsm.sol +17 -0
- package/contracts/isms/aggregation/AbstractAggregationIsm.sol +2 -2
- package/contracts/isms/routing/AbstractRoutingIsm.sol +45 -0
- package/contracts/isms/routing/DomainRoutingIsm.sol +105 -0
- package/contracts/isms/routing/DomainRoutingIsmFactory.sol +46 -0
- package/contracts/isms/routing/InterchainAccountIsm.sol +42 -0
- package/contracts/libs/MinimalProxy.sol +7 -0
- package/contracts/libs/middleware/InterchainAccountMessage.sol +9 -0
- package/contracts/mock/MockHyperlaneEnvironment.sol +6 -3
- package/contracts/mock/MockMailbox.sol +60 -9
- package/contracts/test/TestMultisigIsm.sol +39 -0
- package/dist/contracts/interfaces/index.d.ts +0 -1
- package/dist/contracts/interfaces/index.d.ts.map +1 -1
- package/dist/contracts/interfaces/{IAggregationIsm.d.ts → isms/IAggregationIsm.d.ts} +1 -1
- package/dist/contracts/interfaces/isms/IAggregationIsm.d.ts.map +1 -0
- package/dist/contracts/interfaces/isms/IAggregationIsm.js.map +1 -0
- package/dist/contracts/interfaces/isms/IRoutingIsm.d.ts +67 -0
- package/dist/contracts/interfaces/isms/IRoutingIsm.d.ts.map +1 -0
- package/dist/contracts/{test/TestIsm.js → interfaces/isms/IRoutingIsm.js} +1 -1
- package/dist/contracts/interfaces/isms/IRoutingIsm.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/isms/index.d.ts +2 -0
- package/dist/contracts/isms/index.d.ts.map +1 -1
- package/dist/contracts/isms/routing/AbstractRoutingIsm.d.ts +67 -0
- package/dist/contracts/isms/routing/AbstractRoutingIsm.d.ts.map +1 -0
- package/dist/contracts/isms/routing/AbstractRoutingIsm.js +4 -0
- package/dist/contracts/isms/routing/AbstractRoutingIsm.js.map +1 -0
- package/dist/contracts/isms/routing/DomainRoutingIsm.d.ts +197 -0
- package/dist/contracts/isms/routing/DomainRoutingIsm.d.ts.map +1 -0
- package/dist/contracts/isms/routing/DomainRoutingIsm.js +4 -0
- package/dist/contracts/isms/routing/DomainRoutingIsm.js.map +1 -0
- package/dist/contracts/isms/routing/DomainRoutingIsmFactory.d.ts +64 -0
- package/dist/contracts/isms/routing/DomainRoutingIsmFactory.d.ts.map +1 -0
- package/dist/contracts/isms/routing/DomainRoutingIsmFactory.js +4 -0
- package/dist/contracts/isms/routing/DomainRoutingIsmFactory.js.map +1 -0
- package/dist/contracts/isms/routing/InterchainAccountIsm.d.ts +67 -0
- package/dist/contracts/isms/routing/InterchainAccountIsm.d.ts.map +1 -0
- package/dist/contracts/isms/routing/InterchainAccountIsm.js +4 -0
- package/dist/contracts/isms/routing/InterchainAccountIsm.js.map +1 -0
- package/dist/contracts/isms/routing/index.d.ts +5 -0
- package/dist/contracts/isms/routing/index.d.ts.map +1 -0
- package/dist/contracts/isms/routing/index.js +3 -0
- package/dist/contracts/isms/routing/index.js.map +1 -0
- package/dist/contracts/mock/MockMailbox.d.ts +47 -17
- package/dist/contracts/mock/MockMailbox.d.ts.map +1 -1
- package/dist/contracts/test/{TestIsm.d.ts → TestMultisigIsm.d.ts} +13 -5
- package/dist/contracts/test/TestMultisigIsm.d.ts.map +1 -0
- package/dist/contracts/test/TestMultisigIsm.js +4 -0
- package/dist/contracts/test/TestMultisigIsm.js.map +1 -0
- package/dist/contracts/test/index.d.ts +1 -1
- package/dist/contracts/test/index.d.ts.map +1 -1
- package/dist/factories/contracts/Mailbox__factory.d.ts +1 -1
- package/dist/factories/contracts/Mailbox__factory.js +1 -1
- package/dist/factories/contracts/ValidatorAnnounce__factory.d.ts +1 -1
- package/dist/factories/contracts/ValidatorAnnounce__factory.js +1 -1
- package/dist/factories/contracts/interfaces/index.d.ts +0 -1
- package/dist/factories/contracts/interfaces/index.d.ts.map +1 -1
- package/dist/factories/contracts/interfaces/index.js +1 -3
- package/dist/factories/contracts/interfaces/index.js.map +1 -1
- package/dist/factories/contracts/interfaces/{IAggregationIsm__factory.d.ts → isms/IAggregationIsm__factory.d.ts} +1 -1
- package/dist/factories/contracts/interfaces/isms/IAggregationIsm__factory.d.ts.map +1 -0
- package/dist/factories/contracts/interfaces/isms/IAggregationIsm__factory.js.map +1 -0
- package/dist/factories/contracts/interfaces/isms/IRoutingIsm__factory.d.ts +23 -0
- package/dist/factories/contracts/interfaces/isms/IRoutingIsm__factory.d.ts.map +1 -0
- package/dist/factories/contracts/interfaces/isms/IRoutingIsm__factory.js +74 -0
- package/dist/factories/contracts/interfaces/isms/IRoutingIsm__factory.js.map +1 -0
- package/dist/factories/contracts/interfaces/isms/index.d.ts +2 -0
- package/dist/factories/contracts/interfaces/isms/index.d.ts.map +1 -1
- package/dist/factories/contracts/interfaces/isms/index.js +5 -1
- package/dist/factories/contracts/interfaces/isms/index.js.map +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/index.d.ts +1 -0
- package/dist/factories/contracts/isms/index.d.ts.map +1 -1
- package/dist/factories/contracts/isms/index.js +2 -1
- package/dist/factories/contracts/isms/index.js.map +1 -1
- package/dist/factories/contracts/isms/multisig/LegacyMultisigIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/LegacyMultisigIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/routing/AbstractRoutingIsm__factory.d.ts +23 -0
- package/dist/factories/contracts/isms/routing/AbstractRoutingIsm__factory.d.ts.map +1 -0
- package/dist/factories/contracts/isms/routing/AbstractRoutingIsm__factory.js +74 -0
- package/dist/factories/contracts/isms/routing/AbstractRoutingIsm__factory.js.map +1 -0
- package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory__factory.d.ts +55 -0
- package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory__factory.d.ts.map +1 -0
- package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory__factory.js +83 -0
- package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory__factory.js.map +1 -0
- package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.d.ts +48 -0
- package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.d.ts.map +1 -0
- package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.js +254 -0
- package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.js.map +1 -0
- package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.d.ts +45 -0
- package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.d.ts.map +1 -0
- package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.js +108 -0
- package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.js.map +1 -0
- package/dist/factories/contracts/isms/routing/index.d.ts +5 -0
- package/dist/factories/contracts/isms/routing/index.d.ts.map +1 -0
- package/dist/factories/contracts/isms/routing/index.js +15 -0
- package/dist/factories/contracts/isms/routing/index.js.map +1 -0
- 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.d.ts.map +1 -1
- package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js +1 -1
- package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js.map +1 -1
- package/dist/factories/contracts/mock/MockMailbox__factory.d.ts +1 -1
- package/dist/factories/contracts/mock/MockMailbox__factory.d.ts.map +1 -1
- package/dist/factories/contracts/mock/MockMailbox__factory.js +45 -9
- package/dist/factories/contracts/mock/MockMailbox__factory.js.map +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.js +1 -1
- package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.js +1 -1
- package/dist/factories/contracts/test/TestLegacyMultisigIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestLegacyMultisigIsm__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/TestMultisigIsm__factory.d.ts +41 -0
- package/dist/factories/contracts/test/TestMultisigIsm__factory.d.ts.map +1 -0
- package/dist/factories/contracts/test/TestMultisigIsm__factory.js +133 -0
- package/dist/factories/contracts/test/TestMultisigIsm__factory.js.map +1 -0
- 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.js +1 -1
- package/dist/factories/contracts/test/TestSendReceiver__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestSendReceiver__factory.js +1 -1
- package/dist/factories/contracts/test/index.d.ts +1 -1
- package/dist/factories/contracts/test/index.d.ts.map +1 -1
- package/dist/factories/contracts/test/index.js +3 -3
- package/dist/factories/contracts/test/index.js.map +1 -1
- package/dist/index.d.ts +14 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -6
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/contracts/test/TestIsm.sol +0 -21
- package/dist/contracts/interfaces/IAggregationIsm.d.ts.map +0 -1
- package/dist/contracts/interfaces/IAggregationIsm.js.map +0 -1
- package/dist/contracts/test/TestIsm.d.ts.map +0 -1
- package/dist/contracts/test/TestIsm.js.map +0 -1
- package/dist/factories/contracts/interfaces/IAggregationIsm__factory.d.ts.map +0 -1
- package/dist/factories/contracts/interfaces/IAggregationIsm__factory.js.map +0 -1
- package/dist/factories/contracts/test/TestIsm__factory.d.ts +0 -35
- package/dist/factories/contracts/test/TestIsm__factory.d.ts.map +0 -1
- package/dist/factories/contracts/test/TestIsm__factory.js +0 -104
- package/dist/factories/contracts/test/TestIsm__factory.js.map +0 -1
- /package/dist/contracts/interfaces/{IAggregationIsm.js → isms/IAggregationIsm.js} +0 -0
- /package/dist/factories/contracts/interfaces/{IAggregationIsm__factory.js → isms/IAggregationIsm__factory.js} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
2
|
pragma solidity >=0.6.11;
|
|
3
3
|
|
|
4
|
-
import {IInterchainSecurityModule} from "
|
|
4
|
+
import {IInterchainSecurityModule} from "../IInterchainSecurityModule.sol";
|
|
5
5
|
|
|
6
6
|
interface IAggregationIsm is IInterchainSecurityModule {
|
|
7
7
|
/**
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
+
pragma solidity >=0.8.0;
|
|
3
|
+
|
|
4
|
+
import {IInterchainSecurityModule} from "../IInterchainSecurityModule.sol";
|
|
5
|
+
|
|
6
|
+
interface IRoutingIsm is IInterchainSecurityModule {
|
|
7
|
+
/**
|
|
8
|
+
* @notice Returns the ISM responsible for verifying _message
|
|
9
|
+
* @dev Can change based on the content of _message
|
|
10
|
+
* @param _message Formatted Hyperlane message (see Message.sol).
|
|
11
|
+
* @return module The ISM to use to verify _message
|
|
12
|
+
*/
|
|
13
|
+
function route(bytes calldata _message)
|
|
14
|
+
external
|
|
15
|
+
view
|
|
16
|
+
returns (IInterchainSecurityModule);
|
|
17
|
+
}
|
|
@@ -6,7 +6,7 @@ import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
|
|
|
6
6
|
|
|
7
7
|
// ============ Internal Imports ============
|
|
8
8
|
import {IInterchainSecurityModule} from "../../interfaces/IInterchainSecurityModule.sol";
|
|
9
|
-
import {IAggregationIsm} from "../../interfaces/IAggregationIsm.sol";
|
|
9
|
+
import {IAggregationIsm} from "../../interfaces/isms/IAggregationIsm.sol";
|
|
10
10
|
import {AggregationIsmMetadata} from "../../libs/isms/AggregationIsmMetadata.sol";
|
|
11
11
|
|
|
12
12
|
/**
|
|
@@ -19,7 +19,7 @@ abstract contract AbstractAggregationIsm is IAggregationIsm {
|
|
|
19
19
|
|
|
20
20
|
// solhint-disable-next-line const-name-snakecase
|
|
21
21
|
uint8 public constant moduleType =
|
|
22
|
-
uint8(IInterchainSecurityModule.Types.
|
|
22
|
+
uint8(IInterchainSecurityModule.Types.AGGREGATION);
|
|
23
23
|
|
|
24
24
|
// ============ Virtual Functions ============
|
|
25
25
|
// ======= OVERRIDE THESE TO IMPLEMENT =======
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
+
pragma solidity >=0.8.0;
|
|
3
|
+
|
|
4
|
+
// ============ Internal Imports ============
|
|
5
|
+
import {IInterchainSecurityModule} from "../../interfaces/IInterchainSecurityModule.sol";
|
|
6
|
+
import {IRoutingIsm} from "../../interfaces/isms/IRoutingIsm.sol";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @title RoutingIsm
|
|
10
|
+
*/
|
|
11
|
+
abstract contract AbstractRoutingIsm is IRoutingIsm {
|
|
12
|
+
// ============ Constants ============
|
|
13
|
+
|
|
14
|
+
uint8 public constant moduleType =
|
|
15
|
+
uint8(IInterchainSecurityModule.Types.ROUTING);
|
|
16
|
+
|
|
17
|
+
// ============ Virtual Functions ============
|
|
18
|
+
// ======= OVERRIDE THESE TO IMPLEMENT =======
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @notice Returns the ISM responsible for verifying _message
|
|
22
|
+
* @dev Can change based on the content of _message
|
|
23
|
+
* @param _message Formatted Hyperlane message (see Message.sol).
|
|
24
|
+
* @return module The ISM to use to verify _message
|
|
25
|
+
*/
|
|
26
|
+
function route(bytes calldata _message)
|
|
27
|
+
public
|
|
28
|
+
view
|
|
29
|
+
virtual
|
|
30
|
+
returns (IInterchainSecurityModule);
|
|
31
|
+
|
|
32
|
+
// ============ Public Functions ============
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @notice Routes _metadata and _message to the correct ISM
|
|
36
|
+
* @param _metadata ABI encoded module metadata
|
|
37
|
+
* @param _message Formatted Hyperlane message (see Message.sol).
|
|
38
|
+
*/
|
|
39
|
+
function verify(bytes calldata _metadata, bytes calldata _message)
|
|
40
|
+
public
|
|
41
|
+
returns (bool)
|
|
42
|
+
{
|
|
43
|
+
return route(_message).verify(_metadata, _message);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
+
pragma solidity >=0.8.0;
|
|
3
|
+
// ============ External Imports ============
|
|
4
|
+
import {Address} from "@openzeppelin/contracts/utils/Address.sol";
|
|
5
|
+
import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
|
|
6
|
+
|
|
7
|
+
// ============ Internal Imports ============
|
|
8
|
+
import {AbstractRoutingIsm} from "./AbstractRoutingIsm.sol";
|
|
9
|
+
import {IInterchainSecurityModule} from "../../interfaces/IInterchainSecurityModule.sol";
|
|
10
|
+
import {Message} from "../../libs/Message.sol";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @title DomainRoutingIsm
|
|
14
|
+
*/
|
|
15
|
+
contract DomainRoutingIsm is AbstractRoutingIsm, OwnableUpgradeable {
|
|
16
|
+
// ============ Public Storage ============
|
|
17
|
+
mapping(uint32 => IInterchainSecurityModule) public modules;
|
|
18
|
+
|
|
19
|
+
// ============ Events ============
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @notice Emitted when a module is set for a domain
|
|
23
|
+
* @param domain The origin domain.
|
|
24
|
+
* @param module The ISM to use.
|
|
25
|
+
*/
|
|
26
|
+
event ModuleSet(uint32 indexed domain, IInterchainSecurityModule module);
|
|
27
|
+
|
|
28
|
+
// ============ External Functions ============
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @param _owner The owner of the contract.
|
|
32
|
+
*/
|
|
33
|
+
function initialize(address _owner) public initializer {
|
|
34
|
+
__Ownable_init();
|
|
35
|
+
_transferOwnership(_owner);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @notice Sets the ISMs to be used for the specified origin domains
|
|
40
|
+
* @param _owner The owner of the contract.
|
|
41
|
+
* @param _domains The origin domains
|
|
42
|
+
* @param _modules The ISMs to use to verify messages
|
|
43
|
+
*/
|
|
44
|
+
function initialize(
|
|
45
|
+
address _owner,
|
|
46
|
+
uint32[] calldata _domains,
|
|
47
|
+
IInterchainSecurityModule[] calldata _modules
|
|
48
|
+
) public initializer {
|
|
49
|
+
__Ownable_init();
|
|
50
|
+
require(_domains.length == _modules.length, "length mismatch");
|
|
51
|
+
uint256 _length = _domains.length;
|
|
52
|
+
for (uint256 i = 0; i < _length; ++i) {
|
|
53
|
+
_set(_domains[i], _modules[i]);
|
|
54
|
+
}
|
|
55
|
+
_transferOwnership(_owner);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* @notice Sets the ISM to be used for the specified origin domain
|
|
60
|
+
* @param _domain The origin domain
|
|
61
|
+
* @param _module The ISM to use to verify messages
|
|
62
|
+
*/
|
|
63
|
+
function set(uint32 _domain, IInterchainSecurityModule _module)
|
|
64
|
+
external
|
|
65
|
+
onlyOwner
|
|
66
|
+
{
|
|
67
|
+
_set(_domain, _module);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// ============ Public Functions ============
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* @notice Returns the ISM responsible for verifying _message
|
|
74
|
+
* @dev Can change based on the content of _message
|
|
75
|
+
* @param _message Formatted Hyperlane message (see Message.sol).
|
|
76
|
+
* @return module The ISM to use to verify _message
|
|
77
|
+
*/
|
|
78
|
+
function route(bytes calldata _message)
|
|
79
|
+
public
|
|
80
|
+
view
|
|
81
|
+
virtual
|
|
82
|
+
override
|
|
83
|
+
returns (IInterchainSecurityModule)
|
|
84
|
+
{
|
|
85
|
+
IInterchainSecurityModule module = modules[Message.origin(_message)];
|
|
86
|
+
require(
|
|
87
|
+
address(module) != address(0),
|
|
88
|
+
"No ISM found for origin domain"
|
|
89
|
+
);
|
|
90
|
+
return module;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// ============ Internal Functions ============
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* @notice Sets the ISM to be used for the specified origin domain
|
|
97
|
+
* @param _domain The origin domain
|
|
98
|
+
* @param _module The ISM to use to verify messages
|
|
99
|
+
*/
|
|
100
|
+
function _set(uint32 _domain, IInterchainSecurityModule _module) internal {
|
|
101
|
+
require(Address.isContract(address(_module)), "!contract");
|
|
102
|
+
modules[_domain] = _module;
|
|
103
|
+
emit ModuleSet(_domain, _module);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
+
pragma solidity >=0.8.0;
|
|
3
|
+
|
|
4
|
+
// ============ Internal Imports ============
|
|
5
|
+
import {DomainRoutingIsm} from "./DomainRoutingIsm.sol";
|
|
6
|
+
import {IInterchainSecurityModule} from "../../interfaces/IInterchainSecurityModule.sol";
|
|
7
|
+
import {MinimalProxy} from "../../libs/MinimalProxy.sol";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @title DomainRoutingIsmFactory
|
|
11
|
+
*/
|
|
12
|
+
contract DomainRoutingIsmFactory {
|
|
13
|
+
// ============ Immutables ============
|
|
14
|
+
address private immutable _implementation;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @notice Emitted when a routing module is deployed
|
|
18
|
+
* @param module The deployed ISM
|
|
19
|
+
*/
|
|
20
|
+
event ModuleDeployed(DomainRoutingIsm module);
|
|
21
|
+
|
|
22
|
+
// ============ Constructor ============
|
|
23
|
+
|
|
24
|
+
constructor() {
|
|
25
|
+
_implementation = address(new DomainRoutingIsm());
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// ============ External Functions ============
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @notice Deploys and initializes a DomainRoutingIsm using a minimal proxy
|
|
32
|
+
* @param _domains The origin domains
|
|
33
|
+
* @param _modules The ISMs to use to verify messages
|
|
34
|
+
*/
|
|
35
|
+
function deploy(
|
|
36
|
+
uint32[] calldata _domains,
|
|
37
|
+
IInterchainSecurityModule[] calldata _modules
|
|
38
|
+
) external returns (DomainRoutingIsm) {
|
|
39
|
+
DomainRoutingIsm _ism = DomainRoutingIsm(
|
|
40
|
+
MinimalProxy.create(_implementation)
|
|
41
|
+
);
|
|
42
|
+
emit ModuleDeployed(_ism);
|
|
43
|
+
_ism.initialize(msg.sender, _domains, _modules);
|
|
44
|
+
return _ism;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
+
pragma solidity >=0.8.0;
|
|
3
|
+
// ============ Internal Imports ============
|
|
4
|
+
import {AbstractRoutingIsm} from "./AbstractRoutingIsm.sol";
|
|
5
|
+
import {IMailbox} from "../../interfaces/IMailbox.sol";
|
|
6
|
+
import {IInterchainSecurityModule} from "../../interfaces/IInterchainSecurityModule.sol";
|
|
7
|
+
import {Message} from "../../libs/Message.sol";
|
|
8
|
+
import {InterchainAccountMessage} from "../../libs/middleware/InterchainAccountMessage.sol";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @title InterchainAccountIsm
|
|
12
|
+
*/
|
|
13
|
+
contract InterchainAccountIsm is AbstractRoutingIsm {
|
|
14
|
+
IMailbox private immutable mailbox;
|
|
15
|
+
|
|
16
|
+
// ============ Constructor ============
|
|
17
|
+
constructor(address _mailbox) {
|
|
18
|
+
mailbox = IMailbox(_mailbox);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// ============ Public Functions ============
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @notice Returns the ISM responsible for verifying _message
|
|
25
|
+
* @param _message Formatted Hyperlane message (see Message.sol).
|
|
26
|
+
* @return module The ISM to use to verify _message
|
|
27
|
+
*/
|
|
28
|
+
function route(bytes calldata _message)
|
|
29
|
+
public
|
|
30
|
+
view
|
|
31
|
+
virtual
|
|
32
|
+
override
|
|
33
|
+
returns (IInterchainSecurityModule)
|
|
34
|
+
{
|
|
35
|
+
address _ism = InterchainAccountMessage.ism(Message.body(_message));
|
|
36
|
+
if (_ism == address(0)) {
|
|
37
|
+
return mailbox.defaultIsm();
|
|
38
|
+
} else {
|
|
39
|
+
return IInterchainSecurityModule(_ism);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -7,6 +7,13 @@ library MinimalProxy {
|
|
|
7
7
|
hex"3d602d80600a3d3981f3363d3d373d3d3d363d73";
|
|
8
8
|
bytes15 private constant SUFFIX = hex"5af43d82803e903d91602b57fd5bf3";
|
|
9
9
|
|
|
10
|
+
function create(address implementation) internal returns (address proxy) {
|
|
11
|
+
bytes memory _bytecode = bytecode(implementation);
|
|
12
|
+
assembly {
|
|
13
|
+
proxy := create(0, add(_bytecode, 32), mload(_bytecode))
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
10
17
|
function bytecode(address implementation)
|
|
11
18
|
internal
|
|
12
19
|
pure
|
|
@@ -83,4 +83,13 @@ library InterchainAccountMessage {
|
|
|
83
83
|
{
|
|
84
84
|
return abi.decode(_message, (bytes32, bytes32, CallLib.Call[]));
|
|
85
85
|
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* @notice Parses and returns the ISM address from the provided message
|
|
89
|
+
* @param _message The interchain account message
|
|
90
|
+
* @return The ISM encoded in the message
|
|
91
|
+
*/
|
|
92
|
+
function ism(bytes calldata _message) internal pure returns (address) {
|
|
93
|
+
return address(bytes20(_message[44:64]));
|
|
94
|
+
}
|
|
86
95
|
}
|
|
@@ -4,7 +4,7 @@ pragma solidity ^0.8.13;
|
|
|
4
4
|
import "./MockMailbox.sol";
|
|
5
5
|
import "../middleware/InterchainQueryRouter.sol";
|
|
6
6
|
import "../test/TestInterchainGasPaymaster.sol";
|
|
7
|
-
import "../test/
|
|
7
|
+
import "../test/TestMultisigIsm.sol";
|
|
8
8
|
|
|
9
9
|
import {TypeCasts} from "../libs/TypeCasts.sol";
|
|
10
10
|
|
|
@@ -30,8 +30,11 @@ contract MockHyperlaneEnvironment {
|
|
|
30
30
|
igps[originDomain] = new TestInterchainGasPaymaster(address(this));
|
|
31
31
|
igps[destinationDomain] = new TestInterchainGasPaymaster(address(this));
|
|
32
32
|
|
|
33
|
-
isms[originDomain] = new
|
|
34
|
-
isms[destinationDomain] = new
|
|
33
|
+
isms[originDomain] = new TestMultisigIsm();
|
|
34
|
+
isms[destinationDomain] = new TestMultisigIsm();
|
|
35
|
+
|
|
36
|
+
originMailbox.setDefaultIsm(isms[originDomain]);
|
|
37
|
+
destinationMailbox.setDefaultIsm(isms[destinationDomain]);
|
|
35
38
|
|
|
36
39
|
mailboxes[_originDomain] = originMailbox;
|
|
37
40
|
mailboxes[_destinationDomain] = destinationMailbox;
|
|
@@ -1,26 +1,29 @@
|
|
|
1
1
|
// SPDX-License-Identifier: MIT
|
|
2
2
|
pragma solidity ^0.8.0;
|
|
3
3
|
|
|
4
|
+
import {Versioned} from "../upgrade/Versioned.sol";
|
|
4
5
|
import {TypeCasts} from "../libs/TypeCasts.sol";
|
|
5
6
|
import {IMessageRecipient} from "../interfaces/IMessageRecipient.sol";
|
|
7
|
+
import {IInterchainSecurityModule, ISpecifiesInterchainSecurityModule} from "../interfaces/IInterchainSecurityModule.sol";
|
|
6
8
|
|
|
7
|
-
contract MockMailbox {
|
|
9
|
+
contract MockMailbox is Versioned {
|
|
8
10
|
using TypeCasts for address;
|
|
9
11
|
using TypeCasts for bytes32;
|
|
10
12
|
// Domain of chain on which the contract is deployed
|
|
11
13
|
|
|
12
14
|
// ============ Constants ============
|
|
13
15
|
uint32 public immutable localDomain;
|
|
14
|
-
uint32 public immutable VERSION = 0;
|
|
15
16
|
uint256 public constant MAX_MESSAGE_BODY_BYTES = 2 * 2**10;
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
uint32 public outboundNonce = 0;
|
|
19
|
+
uint32 public inboundUnprocessedNonce = 0;
|
|
20
|
+
uint32 public inboundProcessedNonce = 0;
|
|
21
|
+
IInterchainSecurityModule public defaultIsm;
|
|
20
22
|
mapping(uint32 => MockMailbox) public remoteMailboxes;
|
|
21
|
-
mapping(uint256 =>
|
|
23
|
+
mapping(uint256 => MockMessage) public inboundMessages;
|
|
22
24
|
|
|
23
|
-
struct
|
|
25
|
+
struct MockMessage {
|
|
26
|
+
uint32 nonce;
|
|
24
27
|
uint32 origin;
|
|
25
28
|
address sender;
|
|
26
29
|
address recipient;
|
|
@@ -31,6 +34,10 @@ contract MockMailbox {
|
|
|
31
34
|
localDomain = _domain;
|
|
32
35
|
}
|
|
33
36
|
|
|
37
|
+
function setDefaultIsm(IInterchainSecurityModule _module) external {
|
|
38
|
+
defaultIsm = _module;
|
|
39
|
+
}
|
|
40
|
+
|
|
34
41
|
function addRemoteMailbox(uint32 _domain, MockMailbox _mailbox) external {
|
|
35
42
|
remoteMailboxes[_domain] = _mailbox;
|
|
36
43
|
}
|
|
@@ -47,6 +54,7 @@ contract MockMailbox {
|
|
|
47
54
|
"Missing remote mailbox"
|
|
48
55
|
);
|
|
49
56
|
_destinationMailbox.addInboundMessage(
|
|
57
|
+
outboundNonce,
|
|
50
58
|
localDomain,
|
|
51
59
|
msg.sender,
|
|
52
60
|
_recipientAddress.bytes32ToAddress(),
|
|
@@ -57,12 +65,14 @@ contract MockMailbox {
|
|
|
57
65
|
}
|
|
58
66
|
|
|
59
67
|
function addInboundMessage(
|
|
68
|
+
uint32 _nonce,
|
|
60
69
|
uint32 _origin,
|
|
61
70
|
address _sender,
|
|
62
71
|
address _recipient,
|
|
63
72
|
bytes calldata _body
|
|
64
73
|
) external {
|
|
65
|
-
inboundMessages[inboundUnprocessedNonce] =
|
|
74
|
+
inboundMessages[inboundUnprocessedNonce] = MockMessage(
|
|
75
|
+
_nonce,
|
|
66
76
|
_origin,
|
|
67
77
|
_sender,
|
|
68
78
|
_recipient,
|
|
@@ -72,7 +82,15 @@ contract MockMailbox {
|
|
|
72
82
|
}
|
|
73
83
|
|
|
74
84
|
function processNextInboundMessage() public {
|
|
75
|
-
|
|
85
|
+
MockMessage memory _message = inboundMessages[inboundProcessedNonce];
|
|
86
|
+
address _recipient = _message.recipient;
|
|
87
|
+
IInterchainSecurityModule _ism = _recipientIsm(_recipient);
|
|
88
|
+
if (address(_ism) != address(0)) {
|
|
89
|
+
// Do not pass any metadata because we expect to
|
|
90
|
+
// be using TestIsms
|
|
91
|
+
require(_ism.verify("", _encode(_message)), "ISM verify failed");
|
|
92
|
+
}
|
|
93
|
+
|
|
76
94
|
IMessageRecipient(_message.recipient).handle(
|
|
77
95
|
_message.origin,
|
|
78
96
|
_message.sender.addressToBytes32(),
|
|
@@ -80,4 +98,37 @@ contract MockMailbox {
|
|
|
80
98
|
);
|
|
81
99
|
inboundProcessedNonce++;
|
|
82
100
|
}
|
|
101
|
+
|
|
102
|
+
function _encode(MockMessage memory _message)
|
|
103
|
+
private
|
|
104
|
+
view
|
|
105
|
+
returns (bytes memory)
|
|
106
|
+
{
|
|
107
|
+
return
|
|
108
|
+
abi.encodePacked(
|
|
109
|
+
VERSION,
|
|
110
|
+
_message.nonce,
|
|
111
|
+
_message.origin,
|
|
112
|
+
TypeCasts.addressToBytes32(_message.sender),
|
|
113
|
+
localDomain,
|
|
114
|
+
TypeCasts.addressToBytes32(_message.recipient),
|
|
115
|
+
_message.body
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function _recipientIsm(address _recipient)
|
|
120
|
+
private
|
|
121
|
+
view
|
|
122
|
+
returns (IInterchainSecurityModule)
|
|
123
|
+
{
|
|
124
|
+
try
|
|
125
|
+
ISpecifiesInterchainSecurityModule(_recipient)
|
|
126
|
+
.interchainSecurityModule()
|
|
127
|
+
returns (IInterchainSecurityModule _val) {
|
|
128
|
+
if (address(_val) != address(0)) {
|
|
129
|
+
return _val;
|
|
130
|
+
}
|
|
131
|
+
} catch {}
|
|
132
|
+
return defaultIsm;
|
|
133
|
+
}
|
|
83
134
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
+
pragma solidity >=0.8.0;
|
|
3
|
+
|
|
4
|
+
import {IInterchainSecurityModule} from "../interfaces/IInterchainSecurityModule.sol";
|
|
5
|
+
import {IMultisigIsm} from "../interfaces/isms/IMultisigIsm.sol";
|
|
6
|
+
|
|
7
|
+
contract TestMultisigIsm is IMultisigIsm {
|
|
8
|
+
// solhint-disable-next-line const-name-snakecase
|
|
9
|
+
uint8 public constant moduleType =
|
|
10
|
+
uint8(IInterchainSecurityModule.Types.MULTISIG);
|
|
11
|
+
|
|
12
|
+
bool public accept;
|
|
13
|
+
|
|
14
|
+
constructor() {
|
|
15
|
+
accept = true;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function validatorsAndThreshold(bytes calldata)
|
|
19
|
+
external
|
|
20
|
+
pure
|
|
21
|
+
returns (address[] memory, uint8)
|
|
22
|
+
{
|
|
23
|
+
address[] memory validators = new address[](1);
|
|
24
|
+
validators[0] = address(0);
|
|
25
|
+
return (validators, 1);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function setAccept(bool _val) external {
|
|
29
|
+
accept = _val;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function verify(bytes calldata, bytes calldata)
|
|
33
|
+
external
|
|
34
|
+
view
|
|
35
|
+
returns (bool)
|
|
36
|
+
{
|
|
37
|
+
return accept;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -4,7 +4,6 @@ import type * as middleware from "./middleware";
|
|
|
4
4
|
export type { iInterchainSecurityModuleSol };
|
|
5
5
|
export type { isms };
|
|
6
6
|
export type { middleware };
|
|
7
|
-
export type { IAggregationIsm } from "./IAggregationIsm";
|
|
8
7
|
export type { IGasOracle } from "./IGasOracle";
|
|
9
8
|
export type { IHyperlaneConnectionClient } from "./IHyperlaneConnectionClient";
|
|
10
9
|
export type { IInterchainGasPaymaster } from "./IInterchainGasPaymaster";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../types/contracts/interfaces/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,4BAA4B,MAAM,iCAAiC,CAAC;AACrF,OAAO,KAAK,KAAK,IAAI,MAAM,QAAQ,CAAC;AACpC,OAAO,KAAK,KAAK,UAAU,MAAM,cAAc,CAAC;AAEhD,YAAY,EAAE,4BAA4B,EAAE,CAAC;AAE7C,YAAY,EAAE,IAAI,EAAE,CAAC;AAErB,YAAY,EAAE,UAAU,EAAE,CAAC;AAC3B,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../types/contracts/interfaces/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,4BAA4B,MAAM,iCAAiC,CAAC;AACrF,OAAO,KAAK,KAAK,IAAI,MAAM,QAAQ,CAAC;AACpC,OAAO,KAAK,KAAK,UAAU,MAAM,cAAc,CAAC;AAEhD,YAAY,EAAE,4BAA4B,EAAE,CAAC;AAE7C,YAAY,EAAE,IAAI,EAAE,CAAC;AAErB,YAAY,EAAE,UAAU,EAAE,CAAC;AAC3B,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC/E,YAAY,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,YAAY,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACzF,YAAY,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "
|
|
1
|
+
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "../../../common";
|
|
2
2
|
import type { FunctionFragment, Result } from "@ethersproject/abi";
|
|
3
3
|
import type { Listener, Provider } from "@ethersproject/providers";
|
|
4
4
|
import type { BaseContract, BigNumber, BytesLike, CallOverrides, ContractTransaction, Overrides, PopulatedTransaction, Signer, utils } from "ethers";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IAggregationIsm.d.ts","sourceRoot":"","sources":["../../../../types/contracts/interfaces/isms/IAggregationIsm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IAggregationIsm.js","sourceRoot":"","sources":["../../../../types/contracts/interfaces/isms/IAggregationIsm.ts"],"names":[],"mappings":";AAAA,+CAA+C"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "../../../common";
|
|
2
|
+
import type { FunctionFragment, Result } from "@ethersproject/abi";
|
|
3
|
+
import type { Listener, Provider } from "@ethersproject/providers";
|
|
4
|
+
import type { BaseContract, BigNumber, BytesLike, CallOverrides, ContractTransaction, Overrides, PopulatedTransaction, Signer, utils } from "ethers";
|
|
5
|
+
export interface IRoutingIsmInterface extends utils.Interface {
|
|
6
|
+
functions: {
|
|
7
|
+
"moduleType()": FunctionFragment;
|
|
8
|
+
"route(bytes)": FunctionFragment;
|
|
9
|
+
"verify(bytes,bytes)": FunctionFragment;
|
|
10
|
+
};
|
|
11
|
+
getFunction(nameOrSignatureOrTopic: "moduleType" | "route" | "verify"): FunctionFragment;
|
|
12
|
+
encodeFunctionData(functionFragment: "moduleType", values?: undefined): string;
|
|
13
|
+
encodeFunctionData(functionFragment: "route", values: [BytesLike]): string;
|
|
14
|
+
encodeFunctionData(functionFragment: "verify", values: [BytesLike, BytesLike]): string;
|
|
15
|
+
decodeFunctionResult(functionFragment: "moduleType", data: BytesLike): Result;
|
|
16
|
+
decodeFunctionResult(functionFragment: "route", data: BytesLike): Result;
|
|
17
|
+
decodeFunctionResult(functionFragment: "verify", data: BytesLike): Result;
|
|
18
|
+
events: {};
|
|
19
|
+
}
|
|
20
|
+
export interface IRoutingIsm extends BaseContract {
|
|
21
|
+
connect(signerOrProvider: Signer | Provider | string): this;
|
|
22
|
+
attach(addressOrName: string): this;
|
|
23
|
+
deployed(): Promise<this>;
|
|
24
|
+
interface: IRoutingIsmInterface;
|
|
25
|
+
queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
|
|
26
|
+
listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
|
|
27
|
+
listeners(eventName?: string): Array<Listener>;
|
|
28
|
+
removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
|
|
29
|
+
removeAllListeners(eventName?: string): this;
|
|
30
|
+
off: OnEvent<this>;
|
|
31
|
+
on: OnEvent<this>;
|
|
32
|
+
once: OnEvent<this>;
|
|
33
|
+
removeListener: OnEvent<this>;
|
|
34
|
+
functions: {
|
|
35
|
+
moduleType(overrides?: CallOverrides): Promise<[number]>;
|
|
36
|
+
route(_message: BytesLike, overrides?: CallOverrides): Promise<[string]>;
|
|
37
|
+
verify(_metadata: BytesLike, _message: BytesLike, overrides?: Overrides & {
|
|
38
|
+
from?: string | Promise<string>;
|
|
39
|
+
}): Promise<ContractTransaction>;
|
|
40
|
+
};
|
|
41
|
+
moduleType(overrides?: CallOverrides): Promise<number>;
|
|
42
|
+
route(_message: BytesLike, overrides?: CallOverrides): Promise<string>;
|
|
43
|
+
verify(_metadata: BytesLike, _message: BytesLike, overrides?: Overrides & {
|
|
44
|
+
from?: string | Promise<string>;
|
|
45
|
+
}): Promise<ContractTransaction>;
|
|
46
|
+
callStatic: {
|
|
47
|
+
moduleType(overrides?: CallOverrides): Promise<number>;
|
|
48
|
+
route(_message: BytesLike, overrides?: CallOverrides): Promise<string>;
|
|
49
|
+
verify(_metadata: BytesLike, _message: BytesLike, overrides?: CallOverrides): Promise<boolean>;
|
|
50
|
+
};
|
|
51
|
+
filters: {};
|
|
52
|
+
estimateGas: {
|
|
53
|
+
moduleType(overrides?: CallOverrides): Promise<BigNumber>;
|
|
54
|
+
route(_message: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
|
|
55
|
+
verify(_metadata: BytesLike, _message: BytesLike, overrides?: Overrides & {
|
|
56
|
+
from?: string | Promise<string>;
|
|
57
|
+
}): Promise<BigNumber>;
|
|
58
|
+
};
|
|
59
|
+
populateTransaction: {
|
|
60
|
+
moduleType(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
|
61
|
+
route(_message: BytesLike, overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
|
62
|
+
verify(_metadata: BytesLike, _message: BytesLike, overrides?: Overrides & {
|
|
63
|
+
from?: string | Promise<string>;
|
|
64
|
+
}): Promise<PopulatedTransaction>;
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=IRoutingIsm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IRoutingIsm.d.ts","sourceRoot":"","sources":["../../../../types/contracts/interfaces/isms/IRoutingIsm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IRoutingIsm.js","sourceRoot":"","sources":["../../../../types/contracts/interfaces/isms/IRoutingIsm.ts"],"names":[],"mappings":";AAAA,+CAA+C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../types/contracts/interfaces/isms/index.ts"],"names":[],"mappings":"AAGA,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../types/contracts/interfaces/isms/index.ts"],"names":[],"mappings":"AAGA,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|