@hyperlane-xyz/core 3.8.2 → 3.10.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.
Files changed (98) hide show
  1. package/buildArtifact.json +1 -1
  2. package/contracts/isms/ccip-read/AbstractCcipReadIsm.sol +1 -1
  3. package/contracts/isms/hook/AbstractMessageIdAuthorizedIsm.sol +1 -1
  4. package/contracts/isms/hook/layer-zero/LayerZeroV2Ism.sol +2 -2
  5. package/contracts/middleware/InterchainAccountRouter.sol +40 -0
  6. package/contracts/token/HypERC20.sol +5 -1
  7. package/contracts/token/HypERC20Collateral.sol +8 -0
  8. package/contracts/token/HypERC20CollateralVaultDeposit.sol +8 -0
  9. package/contracts/token/HypERC721.sol +9 -5
  10. package/contracts/token/HypERC721Collateral.sol +14 -0
  11. package/contracts/token/HypNative.sol +14 -0
  12. package/contracts/token/extensions/HypNativeScaled.sol +1 -1
  13. package/contracts/token/libs/FastTokenRouter.sol +3 -3
  14. package/dist/contracts/middleware/InterchainAccountRouter.d.ts +58 -1
  15. package/dist/contracts/middleware/InterchainAccountRouter.d.ts.map +1 -1
  16. package/dist/contracts/token/HypERC20.d.ts +20 -14
  17. package/dist/contracts/token/HypERC20.d.ts.map +1 -1
  18. package/dist/contracts/token/HypERC20Collateral.d.ts +40 -1
  19. package/dist/contracts/token/HypERC20Collateral.d.ts.map +1 -1
  20. package/dist/contracts/token/HypERC20CollateralVaultDeposit.d.ts +40 -1
  21. package/dist/contracts/token/HypERC20CollateralVaultDeposit.d.ts.map +1 -1
  22. package/dist/contracts/token/HypERC721.d.ts +20 -14
  23. package/dist/contracts/token/HypERC721.d.ts.map +1 -1
  24. package/dist/contracts/token/HypERC721Collateral.d.ts +40 -1
  25. package/dist/contracts/token/HypERC721Collateral.d.ts.map +1 -1
  26. package/dist/contracts/token/HypNative.d.ts +40 -1
  27. package/dist/contracts/token/HypNative.d.ts.map +1 -1
  28. package/dist/contracts/token/extensions/FastHypERC20.d.ts +20 -14
  29. package/dist/contracts/token/extensions/FastHypERC20.d.ts.map +1 -1
  30. package/dist/contracts/token/extensions/FastHypERC20Collateral.d.ts +40 -1
  31. package/dist/contracts/token/extensions/FastHypERC20Collateral.d.ts.map +1 -1
  32. package/dist/contracts/token/extensions/HypERC721URICollateral.d.ts +40 -1
  33. package/dist/contracts/token/extensions/HypERC721URICollateral.d.ts.map +1 -1
  34. package/dist/contracts/token/extensions/HypERC721URIStorage.d.ts +20 -14
  35. package/dist/contracts/token/extensions/HypERC721URIStorage.d.ts.map +1 -1
  36. package/dist/contracts/token/extensions/HypNativeScaled.d.ts +40 -1
  37. package/dist/contracts/token/extensions/HypNativeScaled.d.ts.map +1 -1
  38. package/dist/factories/contracts/hooks/OPStackHook__factory.d.ts +1 -1
  39. package/dist/factories/contracts/hooks/OPStackHook__factory.js +1 -1
  40. package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.d.ts +1 -1
  41. package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.js +1 -1
  42. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.d.ts +1 -1
  43. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.js +1 -1
  44. package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.d.ts +1 -1
  45. package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.js +1 -1
  46. package/dist/factories/contracts/isms/hook/OPStackIsm__factory.d.ts +1 -1
  47. package/dist/factories/contracts/isms/hook/OPStackIsm__factory.js +1 -1
  48. package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.d.ts +1 -1
  49. package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.js +1 -1
  50. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts +55 -1
  51. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts.map +1 -1
  52. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js +73 -1
  53. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js.map +1 -1
  54. package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.d.ts +19 -1
  55. package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.d.ts.map +1 -1
  56. package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.js +24 -1
  57. package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.js.map +1 -1
  58. package/dist/factories/contracts/token/HypERC20Collateral__factory.d.ts +19 -1
  59. package/dist/factories/contracts/token/HypERC20Collateral__factory.d.ts.map +1 -1
  60. package/dist/factories/contracts/token/HypERC20Collateral__factory.js +24 -1
  61. package/dist/factories/contracts/token/HypERC20Collateral__factory.js.map +1 -1
  62. package/dist/factories/contracts/token/HypERC20__factory.d.ts +13 -1
  63. package/dist/factories/contracts/token/HypERC20__factory.d.ts.map +1 -1
  64. package/dist/factories/contracts/token/HypERC20__factory.js +16 -1
  65. package/dist/factories/contracts/token/HypERC20__factory.js.map +1 -1
  66. package/dist/factories/contracts/token/HypERC721Collateral__factory.d.ts +19 -1
  67. package/dist/factories/contracts/token/HypERC721Collateral__factory.d.ts.map +1 -1
  68. package/dist/factories/contracts/token/HypERC721Collateral__factory.js +24 -1
  69. package/dist/factories/contracts/token/HypERC721Collateral__factory.js.map +1 -1
  70. package/dist/factories/contracts/token/HypERC721__factory.d.ts +13 -1
  71. package/dist/factories/contracts/token/HypERC721__factory.d.ts.map +1 -1
  72. package/dist/factories/contracts/token/HypERC721__factory.js +16 -1
  73. package/dist/factories/contracts/token/HypERC721__factory.js.map +1 -1
  74. package/dist/factories/contracts/token/HypNative__factory.d.ts +19 -1
  75. package/dist/factories/contracts/token/HypNative__factory.d.ts.map +1 -1
  76. package/dist/factories/contracts/token/HypNative__factory.js +24 -1
  77. package/dist/factories/contracts/token/HypNative__factory.js.map +1 -1
  78. package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.d.ts +19 -1
  79. package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.d.ts.map +1 -1
  80. package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.js +24 -1
  81. package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.js.map +1 -1
  82. package/dist/factories/contracts/token/extensions/FastHypERC20__factory.d.ts +13 -1
  83. package/dist/factories/contracts/token/extensions/FastHypERC20__factory.d.ts.map +1 -1
  84. package/dist/factories/contracts/token/extensions/FastHypERC20__factory.js +16 -1
  85. package/dist/factories/contracts/token/extensions/FastHypERC20__factory.js.map +1 -1
  86. package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.d.ts +19 -1
  87. package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.d.ts.map +1 -1
  88. package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.js +24 -1
  89. package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.js.map +1 -1
  90. package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.d.ts +13 -1
  91. package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.d.ts.map +1 -1
  92. package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.js +16 -1
  93. package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.js.map +1 -1
  94. package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.d.ts +19 -1
  95. package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.d.ts.map +1 -1
  96. package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.js +24 -1
  97. package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.js.map +1 -1
  98. package/package.json +2 -2
@@ -12,7 +12,7 @@ import {AbstractMultisigIsm} from "../multisig/AbstractMultisigIsm.sol";
12
12
  * @title AbstractCcipReadIsm
13
13
  * @notice An ISM that allows arbitrary payloads to be submitted and verified on chain
14
14
  * @dev https://eips.ethereum.org/EIPS/eip-3668
15
- * @dev The AbstractCcipReadIsm provided by Hyperlane is left intentially minimalist as
15
+ * @dev The AbstractCcipReadIsm provided by Hyperlane is left intentionally minimalist as
16
16
  * the range of applications that could be supported by a CcipReadIsm are so broad. However
17
17
  * there are few things to note when building a custom CcipReadIsm.
18
18
  *
@@ -27,7 +27,7 @@ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Ini
27
27
 
28
28
  /**
29
29
  * @title AbstractMessageIdAuthorizedIsm
30
- * @notice Uses external verfication options to verify interchain messages which need a authorized caller
30
+ * @notice Uses external verification options to verify interchain messages which need a authorized caller
31
31
  */
32
32
  abstract contract AbstractMessageIdAuthorizedIsm is
33
33
  IInterchainSecurityModule,
@@ -57,7 +57,7 @@ contract LayerZeroV2Ism is AbstractMessageIdAuthorizedIsm {
57
57
  /**
58
58
  * @notice Entry point for receiving msg/packet from the LayerZero endpoint.
59
59
  * @param _lzMessage The payload of the received message.
60
- * @dev Authorization verifcation is done within verifyMessageId() -> _isAuthorized()
60
+ * @dev Authorization verification is done within verifyMessageId() -> _isAuthorized()
61
61
  */
62
62
  function lzReceive(
63
63
  Origin calldata,
@@ -83,7 +83,7 @@ contract LayerZeroV2Ism is AbstractMessageIdAuthorizedIsm {
83
83
  }
84
84
 
85
85
  /**
86
- * @notice Validates criterias to verify a message
86
+ * @notice Validates criteria to verify a message
87
87
  * @dev this is called by AbstractMessageIdAuthorizedIsm.verifyMessageId
88
88
  * @dev parses msg.value to get parameters from lzReceive()
89
89
  */
@@ -38,6 +38,11 @@ contract InterchainAccountRouter is Router {
38
38
  using TypeCasts for address;
39
39
  using TypeCasts for bytes32;
40
40
 
41
+ struct AccountOwner {
42
+ uint32 origin;
43
+ bytes32 owner; // remote owner
44
+ }
45
+
41
46
  // ============ Constants ============
42
47
 
43
48
  address internal implementation;
@@ -45,6 +50,8 @@ contract InterchainAccountRouter is Router {
45
50
 
46
51
  // ============ Public Storage ============
47
52
  mapping(uint32 => bytes32) public isms;
53
+ // reverse lookup from the ICA account to the remote owner
54
+ mapping(address => AccountOwner) public accountOwners;
48
55
 
49
56
  // ============ Upgrade Gap ============
50
57
 
@@ -394,6 +401,7 @@ contract InterchainAccountRouter is Router {
394
401
  if (!Address.isContract(_account)) {
395
402
  bytes memory _bytecode = MinimalProxy.bytecode(implementation);
396
403
  _account = payable(Create2.deploy(0, _salt, _bytecode));
404
+ accountOwners[_account] = AccountOwner(_origin, _owner);
397
405
  emit InterchainAccountCreated(_origin, _owner, _ism, _account);
398
406
  }
399
407
  return OwnableMulticall(_account);
@@ -648,4 +656,36 @@ contract InterchainAccountRouter is Router {
648
656
  ) private view returns (address payable) {
649
657
  return payable(Create2.computeAddress(_salt, bytecodeHash));
650
658
  }
659
+
660
+ /**
661
+ * @notice Returns the gas payment required to dispatch a message to the given domain's router.
662
+ * @param _destination The domain of the destination router.
663
+ * @return _gasPayment Payment computed by the registered hooks via MailboxClient.
664
+ */
665
+ function quoteGasPayment(
666
+ uint32 _destination
667
+ ) external view returns (uint256 _gasPayment) {
668
+ return _quoteDispatch(_destination, "");
669
+ }
670
+
671
+ /**
672
+ * @notice Returns the gas payment required to dispatch a given messageBody to the given domain's router with gas limit override.
673
+ * @param _destination The domain of the destination router.
674
+ * @param _messageBody The message body to be dispatched.
675
+ * @param gasLimit The gas limit to override with.
676
+ */
677
+ function quoteGasPayment(
678
+ uint32 _destination,
679
+ bytes calldata _messageBody,
680
+ uint256 gasLimit
681
+ ) external view returns (uint256 _gasPayment) {
682
+ bytes32 _router = _mustHaveRemoteRouter(_destination);
683
+ return
684
+ mailbox.quoteDispatch(
685
+ _destination,
686
+ _router,
687
+ _messageBody,
688
+ StandardHookMetadata.overrideGasLimit(gasLimit)
689
+ );
690
+ }
651
691
  }
@@ -26,11 +26,15 @@ contract HypERC20 is ERC20Upgradeable, TokenRouter {
26
26
  function initialize(
27
27
  uint256 _totalSupply,
28
28
  string memory _name,
29
- string memory _symbol
29
+ string memory _symbol,
30
+ address _hook,
31
+ address _interchainSecurityModule,
32
+ address _owner
30
33
  ) external initializer {
31
34
  // Initialize ERC20 metadata
32
35
  __ERC20_init(_name, _symbol);
33
36
  _mint(msg.sender, _totalSupply);
37
+ _MailboxClient_initialize(_hook, _interchainSecurityModule, _owner);
34
38
  }
35
39
 
36
40
  function decimals() public view override returns (uint8) {
@@ -25,6 +25,14 @@ contract HypERC20Collateral is TokenRouter {
25
25
  wrappedToken = IERC20(erc20);
26
26
  }
27
27
 
28
+ function initialize(
29
+ address _hook,
30
+ address _interchainSecurityModule,
31
+ address _owner
32
+ ) public virtual initializer {
33
+ _MailboxClient_initialize(_hook, _interchainSecurityModule, _owner);
34
+ }
35
+
28
36
  function balanceOf(
29
37
  address _account
30
38
  ) external view override returns (uint256) {
@@ -21,7 +21,15 @@ contract HypERC20CollateralVaultDeposit is HypERC20Collateral {
21
21
  address _mailbox
22
22
  ) HypERC20Collateral(_vault.asset(), _mailbox) {
23
23
  vault = _vault;
24
+ }
25
+
26
+ function initialize(
27
+ address _hook,
28
+ address _interchainSecurityModule,
29
+ address _owner
30
+ ) public override initializer {
24
31
  wrappedToken.approve(address(vault), type(uint256).max);
32
+ _MailboxClient_initialize(_hook, _interchainSecurityModule, _owner);
25
33
  }
26
34
 
27
35
  /**
@@ -19,18 +19,22 @@ contract HypERC721 is ERC721EnumerableUpgradeable, TokenRouter {
19
19
  * @param _mintAmount The amount of NFTs to mint to `msg.sender`.
20
20
  * @param _name The name of the token.
21
21
  * @param _symbol The symbol of the token.
22
+ * @param _hook The post-dispatch hook contract.
23
+ @param _interchainSecurityModule The interchain security module contract.
24
+ @param _owner The this contract.
22
25
  */
23
26
  function initialize(
24
27
  uint256 _mintAmount,
25
28
  string memory _name,
26
- string memory _symbol
29
+ string memory _symbol,
30
+ address _hook,
31
+ address _interchainSecurityModule,
32
+ address _owner
27
33
  ) external initializer {
28
- address owner = msg.sender;
29
- _transferOwnership(owner);
30
-
34
+ _MailboxClient_initialize(_hook, _interchainSecurityModule, _owner);
31
35
  __ERC721_init(_name, _symbol);
32
36
  for (uint256 i = 0; i < _mintAmount; i++) {
33
- _safeMint(owner, i);
37
+ _safeMint(msg.sender, i);
34
38
  }
35
39
  }
36
40
 
@@ -21,6 +21,20 @@ contract HypERC721Collateral is TokenRouter {
21
21
  wrappedToken = IERC721(erc721);
22
22
  }
23
23
 
24
+ /**
25
+ * @notice Initializes the Hyperlane router
26
+ * @param _hook The post-dispatch hook contract.
27
+ @param _interchainSecurityModule The interchain security module contract.
28
+ @param _owner The this contract.
29
+ */
30
+ function initialize(
31
+ address _hook,
32
+ address _interchainSecurityModule,
33
+ address _owner
34
+ ) public virtual initializer {
35
+ _MailboxClient_initialize(_hook, _interchainSecurityModule, _owner);
36
+ }
37
+
24
38
  function ownerOf(uint256 _tokenId) external view returns (address) {
25
39
  return IERC721(wrappedToken).ownerOf(_tokenId);
26
40
  }
@@ -20,6 +20,20 @@ contract HypNative is TokenRouter {
20
20
 
21
21
  constructor(address _mailbox) TokenRouter(_mailbox) {}
22
22
 
23
+ /**
24
+ * @notice Initializes the Hyperlane router
25
+ * @param _hook The post-dispatch hook contract.
26
+ @param _interchainSecurityModule The interchain security module contract.
27
+ @param _owner The this contract.
28
+ */
29
+ function initialize(
30
+ address _hook,
31
+ address _interchainSecurityModule,
32
+ address _owner
33
+ ) public initializer {
34
+ _MailboxClient_initialize(_hook, _interchainSecurityModule, _owner);
35
+ }
36
+
23
37
  /**
24
38
  * @inheritdoc TokenRouter
25
39
  * @dev uses (`msg.value` - `_amount`) as interchain gas payment and `msg.sender` as refund address.
@@ -34,7 +34,7 @@ contract HypNativeScaled is HypNative {
34
34
  }
35
35
 
36
36
  /**
37
- * @dev Sends scaled `_amount` (multipled by `scale`) to `_recipient`.
37
+ * @dev Sends scaled `_amount` (multiplied by `scale`) to `_recipient`.
38
38
  * @inheritdoc TokenRouter
39
39
  */
40
40
  function _transferTo(
@@ -56,7 +56,7 @@ abstract contract FastTokenRouter is TokenRouter {
56
56
 
57
57
  /**
58
58
  * @dev allows an external user to full an unfilled fast transfer order.
59
- * @param _recipient The recepient of the wrapped token on base chain.
59
+ * @param _recipient The recipient of the wrapped token on base chain.
60
60
  * @param _amount The amount of wrapped tokens that is being bridged.
61
61
  * @param _fastFee The fee the bridging entity will pay.
62
62
  * @param _fastTransferId Id assigned on the remote chain to uniquely identify the transfer.
@@ -131,8 +131,8 @@ abstract contract FastTokenRouter is TokenRouter {
131
131
  }
132
132
 
133
133
  /**
134
- * @dev returns an address that indicates who should recieve the bridged tokens.
135
- * @dev if _fastFees was inlcuded and someone filled the order before the mailbox made the contract call, the filler gets the funds.
134
+ * @dev returns an address that indicates who should receive the bridged tokens.
135
+ * @dev if _fastFees was included and someone filled the order before the mailbox made the contract call, the filler gets the funds.
136
136
  */
137
137
  function _getTokenRecipient(
138
138
  address _recipient,
@@ -16,6 +16,7 @@ export declare namespace CallLib {
16
16
  }
17
17
  export interface InterchainAccountRouterInterface extends utils.Interface {
18
18
  functions: {
19
+ "accountOwners(address)": FunctionFragment;
19
20
  "callRemote(uint32,address,uint256,bytes)": FunctionFragment;
20
21
  "callRemote(uint32,(bytes32,uint256,bytes)[],bytes)": FunctionFragment;
21
22
  "callRemote(uint32,(bytes32,uint256,bytes)[])": FunctionFragment;
@@ -41,6 +42,8 @@ export interface InterchainAccountRouterInterface extends utils.Interface {
41
42
  "localDomain()": FunctionFragment;
42
43
  "mailbox()": FunctionFragment;
43
44
  "owner()": FunctionFragment;
45
+ "quoteGasPayment(uint32,bytes,uint256)": FunctionFragment;
46
+ "quoteGasPayment(uint32)": FunctionFragment;
44
47
  "renounceOwnership()": FunctionFragment;
45
48
  "routers(uint32)": FunctionFragment;
46
49
  "setHook(address)": FunctionFragment;
@@ -49,7 +52,9 @@ export interface InterchainAccountRouterInterface extends utils.Interface {
49
52
  "unenrollRemoteRouter(uint32)": FunctionFragment;
50
53
  "unenrollRemoteRouters(uint32[])": FunctionFragment;
51
54
  };
52
- getFunction(nameOrSignatureOrTopic: "callRemote(uint32,address,uint256,bytes)" | "callRemote(uint32,(bytes32,uint256,bytes)[],bytes)" | "callRemote(uint32,(bytes32,uint256,bytes)[])" | "callRemote(uint32,address,uint256,bytes,bytes)" | "callRemoteWithOverrides(uint32,bytes32,bytes32,(bytes32,uint256,bytes)[])" | "callRemoteWithOverrides(uint32,bytes32,bytes32,(bytes32,uint256,bytes)[],bytes)" | "domains" | "domains()" | "enrollRemoteRouter" | "enrollRemoteRouter(uint32,bytes32)" | "enrollRemoteRouterAndIsm" | "enrollRemoteRouterAndIsm(uint32,bytes32,bytes32)" | "enrollRemoteRouterAndIsms" | "enrollRemoteRouterAndIsms(uint32[],bytes32[],bytes32[])" | "enrollRemoteRouters" | "enrollRemoteRouters(uint32[],bytes32[])" | "getDeployedInterchainAccount(uint32,address,address,address)" | "getDeployedInterchainAccount(uint32,bytes32,bytes32,address)" | "getLocalInterchainAccount(uint32,address,address,address)" | "getLocalInterchainAccount(uint32,bytes32,bytes32,address)" | "getRemoteInterchainAccount(uint32,address)" | "getRemoteInterchainAccount(address,address,address)" | "handle" | "handle(uint32,bytes32,bytes)" | "hook" | "hook()" | "initialize" | "initialize(address,address,address)" | "interchainSecurityModule" | "interchainSecurityModule()" | "isms" | "isms(uint32)" | "localDomain" | "localDomain()" | "mailbox" | "mailbox()" | "owner" | "owner()" | "renounceOwnership" | "renounceOwnership()" | "routers" | "routers(uint32)" | "setHook" | "setHook(address)" | "setInterchainSecurityModule" | "setInterchainSecurityModule(address)" | "transferOwnership" | "transferOwnership(address)" | "unenrollRemoteRouter" | "unenrollRemoteRouter(uint32)" | "unenrollRemoteRouters" | "unenrollRemoteRouters(uint32[])"): FunctionFragment;
55
+ getFunction(nameOrSignatureOrTopic: "accountOwners" | "accountOwners(address)" | "callRemote(uint32,address,uint256,bytes)" | "callRemote(uint32,(bytes32,uint256,bytes)[],bytes)" | "callRemote(uint32,(bytes32,uint256,bytes)[])" | "callRemote(uint32,address,uint256,bytes,bytes)" | "callRemoteWithOverrides(uint32,bytes32,bytes32,(bytes32,uint256,bytes)[])" | "callRemoteWithOverrides(uint32,bytes32,bytes32,(bytes32,uint256,bytes)[],bytes)" | "domains" | "domains()" | "enrollRemoteRouter" | "enrollRemoteRouter(uint32,bytes32)" | "enrollRemoteRouterAndIsm" | "enrollRemoteRouterAndIsm(uint32,bytes32,bytes32)" | "enrollRemoteRouterAndIsms" | "enrollRemoteRouterAndIsms(uint32[],bytes32[],bytes32[])" | "enrollRemoteRouters" | "enrollRemoteRouters(uint32[],bytes32[])" | "getDeployedInterchainAccount(uint32,address,address,address)" | "getDeployedInterchainAccount(uint32,bytes32,bytes32,address)" | "getLocalInterchainAccount(uint32,address,address,address)" | "getLocalInterchainAccount(uint32,bytes32,bytes32,address)" | "getRemoteInterchainAccount(uint32,address)" | "getRemoteInterchainAccount(address,address,address)" | "handle" | "handle(uint32,bytes32,bytes)" | "hook" | "hook()" | "initialize" | "initialize(address,address,address)" | "interchainSecurityModule" | "interchainSecurityModule()" | "isms" | "isms(uint32)" | "localDomain" | "localDomain()" | "mailbox" | "mailbox()" | "owner" | "owner()" | "quoteGasPayment(uint32,bytes,uint256)" | "quoteGasPayment(uint32)" | "renounceOwnership" | "renounceOwnership()" | "routers" | "routers(uint32)" | "setHook" | "setHook(address)" | "setInterchainSecurityModule" | "setInterchainSecurityModule(address)" | "transferOwnership" | "transferOwnership(address)" | "unenrollRemoteRouter" | "unenrollRemoteRouter(uint32)" | "unenrollRemoteRouters" | "unenrollRemoteRouters(uint32[])"): FunctionFragment;
56
+ encodeFunctionData(functionFragment: "accountOwners", values: [PromiseOrValue<string>]): string;
57
+ encodeFunctionData(functionFragment: "accountOwners(address)", values: [PromiseOrValue<string>]): string;
53
58
  encodeFunctionData(functionFragment: "callRemote(uint32,address,uint256,bytes)", values: [
54
59
  PromiseOrValue<BigNumberish>,
55
60
  PromiseOrValue<string>,
@@ -170,6 +175,12 @@ export interface InterchainAccountRouterInterface extends utils.Interface {
170
175
  encodeFunctionData(functionFragment: "mailbox()", values?: undefined): string;
171
176
  encodeFunctionData(functionFragment: "owner", values?: undefined): string;
172
177
  encodeFunctionData(functionFragment: "owner()", values?: undefined): string;
178
+ encodeFunctionData(functionFragment: "quoteGasPayment(uint32,bytes,uint256)", values: [
179
+ PromiseOrValue<BigNumberish>,
180
+ PromiseOrValue<BytesLike>,
181
+ PromiseOrValue<BigNumberish>
182
+ ]): string;
183
+ encodeFunctionData(functionFragment: "quoteGasPayment(uint32)", values: [PromiseOrValue<BigNumberish>]): string;
173
184
  encodeFunctionData(functionFragment: "renounceOwnership", values?: undefined): string;
174
185
  encodeFunctionData(functionFragment: "renounceOwnership()", values?: undefined): string;
175
186
  encodeFunctionData(functionFragment: "routers", values: [PromiseOrValue<BigNumberish>]): string;
@@ -184,6 +195,8 @@ export interface InterchainAccountRouterInterface extends utils.Interface {
184
195
  encodeFunctionData(functionFragment: "unenrollRemoteRouter(uint32)", values: [PromiseOrValue<BigNumberish>]): string;
185
196
  encodeFunctionData(functionFragment: "unenrollRemoteRouters", values: [PromiseOrValue<BigNumberish>[]]): string;
186
197
  encodeFunctionData(functionFragment: "unenrollRemoteRouters(uint32[])", values: [PromiseOrValue<BigNumberish>[]]): string;
198
+ decodeFunctionResult(functionFragment: "accountOwners", data: BytesLike): Result;
199
+ decodeFunctionResult(functionFragment: "accountOwners(address)", data: BytesLike): Result;
187
200
  decodeFunctionResult(functionFragment: "callRemote(uint32,address,uint256,bytes)", data: BytesLike): Result;
188
201
  decodeFunctionResult(functionFragment: "callRemote(uint32,(bytes32,uint256,bytes)[],bytes)", data: BytesLike): Result;
189
202
  decodeFunctionResult(functionFragment: "callRemote(uint32,(bytes32,uint256,bytes)[])", data: BytesLike): Result;
@@ -222,6 +235,8 @@ export interface InterchainAccountRouterInterface extends utils.Interface {
222
235
  decodeFunctionResult(functionFragment: "mailbox()", data: BytesLike): Result;
223
236
  decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
224
237
  decodeFunctionResult(functionFragment: "owner()", data: BytesLike): Result;
238
+ decodeFunctionResult(functionFragment: "quoteGasPayment(uint32,bytes,uint256)", data: BytesLike): Result;
239
+ decodeFunctionResult(functionFragment: "quoteGasPayment(uint32)", data: BytesLike): Result;
225
240
  decodeFunctionResult(functionFragment: "renounceOwnership", data: BytesLike): Result;
226
241
  decodeFunctionResult(functionFragment: "renounceOwnership()", data: BytesLike): Result;
227
242
  decodeFunctionResult(functionFragment: "routers", data: BytesLike): Result;
@@ -318,6 +333,14 @@ export interface InterchainAccountRouter extends BaseContract {
318
333
  once: OnEvent<this>;
319
334
  removeListener: OnEvent<this>;
320
335
  functions: {
336
+ accountOwners(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[number, string] & {
337
+ origin: number;
338
+ owner: string;
339
+ }>;
340
+ "accountOwners(address)"(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[number, string] & {
341
+ origin: number;
342
+ owner: string;
343
+ }>;
321
344
  "callRemote(uint32,address,uint256,bytes)"(_destination: PromiseOrValue<BigNumberish>, _to: PromiseOrValue<string>, _value: PromiseOrValue<BigNumberish>, _data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
322
345
  from?: PromiseOrValue<string>;
323
346
  }): Promise<ContractTransaction>;
@@ -396,6 +419,12 @@ export interface InterchainAccountRouter extends BaseContract {
396
419
  "mailbox()"(overrides?: CallOverrides): Promise<[string]>;
397
420
  owner(overrides?: CallOverrides): Promise<[string]>;
398
421
  "owner()"(overrides?: CallOverrides): Promise<[string]>;
422
+ "quoteGasPayment(uint32,bytes,uint256)"(_destination: PromiseOrValue<BigNumberish>, _messageBody: PromiseOrValue<BytesLike>, gasLimit: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber] & {
423
+ _gasPayment: BigNumber;
424
+ }>;
425
+ "quoteGasPayment(uint32)"(_destination: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber] & {
426
+ _gasPayment: BigNumber;
427
+ }>;
399
428
  renounceOwnership(overrides?: Overrides & {
400
429
  from?: PromiseOrValue<string>;
401
430
  }): Promise<ContractTransaction>;
@@ -435,6 +464,14 @@ export interface InterchainAccountRouter extends BaseContract {
435
464
  from?: PromiseOrValue<string>;
436
465
  }): Promise<ContractTransaction>;
437
466
  };
467
+ accountOwners(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[number, string] & {
468
+ origin: number;
469
+ owner: string;
470
+ }>;
471
+ "accountOwners(address)"(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[number, string] & {
472
+ origin: number;
473
+ owner: string;
474
+ }>;
438
475
  "callRemote(uint32,address,uint256,bytes)"(_destination: PromiseOrValue<BigNumberish>, _to: PromiseOrValue<string>, _value: PromiseOrValue<BigNumberish>, _data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
439
476
  from?: PromiseOrValue<string>;
440
477
  }): Promise<ContractTransaction>;
@@ -513,6 +550,8 @@ export interface InterchainAccountRouter extends BaseContract {
513
550
  "mailbox()"(overrides?: CallOverrides): Promise<string>;
514
551
  owner(overrides?: CallOverrides): Promise<string>;
515
552
  "owner()"(overrides?: CallOverrides): Promise<string>;
553
+ "quoteGasPayment(uint32,bytes,uint256)"(_destination: PromiseOrValue<BigNumberish>, _messageBody: PromiseOrValue<BytesLike>, gasLimit: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
554
+ "quoteGasPayment(uint32)"(_destination: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
516
555
  renounceOwnership(overrides?: Overrides & {
517
556
  from?: PromiseOrValue<string>;
518
557
  }): Promise<ContractTransaction>;
@@ -552,6 +591,14 @@ export interface InterchainAccountRouter extends BaseContract {
552
591
  from?: PromiseOrValue<string>;
553
592
  }): Promise<ContractTransaction>;
554
593
  callStatic: {
594
+ accountOwners(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[number, string] & {
595
+ origin: number;
596
+ owner: string;
597
+ }>;
598
+ "accountOwners(address)"(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[number, string] & {
599
+ origin: number;
600
+ owner: string;
601
+ }>;
555
602
  "callRemote(uint32,address,uint256,bytes)"(_destination: PromiseOrValue<BigNumberish>, _to: PromiseOrValue<string>, _value: PromiseOrValue<BigNumberish>, _data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
556
603
  "callRemote(uint32,(bytes32,uint256,bytes)[],bytes)"(_destination: PromiseOrValue<BigNumberish>, _calls: CallLib.CallStruct[], _hookMetadata: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
557
604
  "callRemote(uint32,(bytes32,uint256,bytes)[])"(_destination: PromiseOrValue<BigNumberish>, _calls: CallLib.CallStruct[], overrides?: CallOverrides): Promise<string>;
@@ -590,6 +637,8 @@ export interface InterchainAccountRouter extends BaseContract {
590
637
  "mailbox()"(overrides?: CallOverrides): Promise<string>;
591
638
  owner(overrides?: CallOverrides): Promise<string>;
592
639
  "owner()"(overrides?: CallOverrides): Promise<string>;
640
+ "quoteGasPayment(uint32,bytes,uint256)"(_destination: PromiseOrValue<BigNumberish>, _messageBody: PromiseOrValue<BytesLike>, gasLimit: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
641
+ "quoteGasPayment(uint32)"(_destination: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
593
642
  renounceOwnership(overrides?: CallOverrides): Promise<void>;
594
643
  "renounceOwnership()"(overrides?: CallOverrides): Promise<void>;
595
644
  routers(_domain: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
@@ -618,6 +667,8 @@ export interface InterchainAccountRouter extends BaseContract {
618
667
  RemoteIsmEnrolled(domain?: PromiseOrValue<BigNumberish> | null, ism?: null): RemoteIsmEnrolledEventFilter;
619
668
  };
620
669
  estimateGas: {
670
+ accountOwners(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
671
+ "accountOwners(address)"(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
621
672
  "callRemote(uint32,address,uint256,bytes)"(_destination: PromiseOrValue<BigNumberish>, _to: PromiseOrValue<string>, _value: PromiseOrValue<BigNumberish>, _data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
622
673
  from?: PromiseOrValue<string>;
623
674
  }): Promise<BigNumber>;
@@ -696,6 +747,8 @@ export interface InterchainAccountRouter extends BaseContract {
696
747
  "mailbox()"(overrides?: CallOverrides): Promise<BigNumber>;
697
748
  owner(overrides?: CallOverrides): Promise<BigNumber>;
698
749
  "owner()"(overrides?: CallOverrides): Promise<BigNumber>;
750
+ "quoteGasPayment(uint32,bytes,uint256)"(_destination: PromiseOrValue<BigNumberish>, _messageBody: PromiseOrValue<BytesLike>, gasLimit: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
751
+ "quoteGasPayment(uint32)"(_destination: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
699
752
  renounceOwnership(overrides?: Overrides & {
700
753
  from?: PromiseOrValue<string>;
701
754
  }): Promise<BigNumber>;
@@ -736,6 +789,8 @@ export interface InterchainAccountRouter extends BaseContract {
736
789
  }): Promise<BigNumber>;
737
790
  };
738
791
  populateTransaction: {
792
+ accountOwners(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
793
+ "accountOwners(address)"(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
739
794
  "callRemote(uint32,address,uint256,bytes)"(_destination: PromiseOrValue<BigNumberish>, _to: PromiseOrValue<string>, _value: PromiseOrValue<BigNumberish>, _data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
740
795
  from?: PromiseOrValue<string>;
741
796
  }): Promise<PopulatedTransaction>;
@@ -814,6 +869,8 @@ export interface InterchainAccountRouter extends BaseContract {
814
869
  "mailbox()"(overrides?: CallOverrides): Promise<PopulatedTransaction>;
815
870
  owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
816
871
  "owner()"(overrides?: CallOverrides): Promise<PopulatedTransaction>;
872
+ "quoteGasPayment(uint32,bytes,uint256)"(_destination: PromiseOrValue<BigNumberish>, _messageBody: PromiseOrValue<BytesLike>, gasLimit: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
873
+ "quoteGasPayment(uint32)"(_destination: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
817
874
  renounceOwnership(overrides?: Overrides & {
818
875
  from?: PromiseOrValue<string>;
819
876
  }): Promise<PopulatedTransaction>;