@hyperlane-xyz/core 1.4.1 → 1.4.2

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 (143) hide show
  1. package/docs/book.css +13 -0
  2. package/docs/book.toml +12 -0
  3. package/docs/solidity.min.js +74 -0
  4. package/docs/src/README.md +15 -0
  5. package/docs/src/SUMMARY.md +139 -0
  6. package/docs/src/contracts/GasRouter.sol/abstract.GasRouter.md +124 -0
  7. package/docs/src/contracts/HyperlaneConnectionClient.sol/abstract.HyperlaneConnectionClient.md +191 -0
  8. package/docs/src/contracts/Mailbox.sol/contract.Mailbox.md +251 -0
  9. package/docs/src/contracts/OwnableMulticall.sol/contract.OwnableMulticall.md +41 -0
  10. package/docs/src/contracts/PausableReentrancyGuard.sol/abstract.PausableReentrancyGuardUpgradeable.md +100 -0
  11. package/docs/src/contracts/README.md +19 -0
  12. package/docs/src/contracts/Router.sol/abstract.Router.md +255 -0
  13. package/docs/src/contracts/ValidatorAnnounce.sol/contract.ValidatorAnnounce.md +117 -0
  14. package/docs/src/contracts/hooks/ERC5164/ERC5164MessageHook.sol/contract.ERC5164MessageHook.md +64 -0
  15. package/docs/src/contracts/hooks/ERC5164/README.md +5 -0
  16. package/docs/src/contracts/hooks/ERC5164/interfaces/IMessageDispatcher.sol/interface.IMessageDispatcher.md +25 -0
  17. package/docs/src/contracts/hooks/ERC5164/interfaces/README.md +4 -0
  18. package/docs/src/contracts/hooks/OptimismMessageHook.sol/contract.OptimismMessageHook.md +71 -0
  19. package/docs/src/contracts/hooks/README.md +5 -0
  20. package/docs/src/contracts/igps/InterchainGasPaymaster.sol/contract.InterchainGasPaymaster.md +231 -0
  21. package/docs/src/contracts/igps/OverheadIgp.sol/contract.OverheadIgp.md +161 -0
  22. package/docs/src/contracts/igps/README.md +6 -0
  23. package/docs/src/contracts/igps/gas-oracles/README.md +4 -0
  24. package/docs/src/contracts/igps/gas-oracles/StorageGasOracle.sol/contract.StorageGasOracle.md +114 -0
  25. package/docs/src/contracts/interfaces/IGasOracle.sol/interface.IGasOracle.md +25 -0
  26. package/docs/src/contracts/interfaces/IHyperlaneConnectionClient.sol/interface.IHyperlaneConnectionClient.md +43 -0
  27. package/docs/src/contracts/interfaces/IInterchainGasPaymaster.sol/interface.IInterchainGasPaymaster.md +33 -0
  28. package/docs/src/contracts/interfaces/IInterchainSecurityModule.sol/interface.IInterchainSecurityModule.md +55 -0
  29. package/docs/src/contracts/interfaces/IInterchainSecurityModule.sol/interface.ISpecifiesInterchainSecurityModule.md +12 -0
  30. package/docs/src/contracts/interfaces/ILiquidityLayerMessageRecipient.sol/interface.ILiquidityLayerMessageRecipient.md +13 -0
  31. package/docs/src/contracts/interfaces/ILiquidityLayerRouter.sol/interface.ILiquidityLayerRouter.md +19 -0
  32. package/docs/src/contracts/interfaces/IMailbox.sol/interface.IMailbox.md +103 -0
  33. package/docs/src/contracts/interfaces/IMessageRecipient.sol/interface.IMessageRecipient.md +12 -0
  34. package/docs/src/contracts/interfaces/IRouter.sol/interface.IRouter.md +33 -0
  35. package/docs/src/contracts/interfaces/IValidatorAnnounce.sol/interface.IValidatorAnnounce.md +78 -0
  36. package/docs/src/contracts/interfaces/README.md +17 -0
  37. package/docs/src/contracts/interfaces/hooks/IMessageHook.sol/interface.IMessageHook.md +12 -0
  38. package/docs/src/contracts/interfaces/hooks/README.md +4 -0
  39. package/docs/src/contracts/interfaces/isms/IAggregationIsm.sol/interface.IAggregationIsm.md +36 -0
  40. package/docs/src/contracts/interfaces/isms/IMultisigIsm.sol/interface.IMultisigIsm.md +36 -0
  41. package/docs/src/contracts/interfaces/isms/IRoutingIsm.sol/interface.IRoutingIsm.md +31 -0
  42. package/docs/src/contracts/interfaces/isms/README.md +6 -0
  43. package/docs/src/contracts/interfaces/middleware/IInterchainAccountRouter.sol/interface.IInterchainAccountRouter.md +64 -0
  44. package/docs/src/contracts/interfaces/middleware/IInterchainQueryRouter.sol/interface.IInterchainQueryRouter.md +21 -0
  45. package/docs/src/contracts/interfaces/middleware/README.md +5 -0
  46. package/docs/src/contracts/isms/README.md +7 -0
  47. package/docs/src/contracts/isms/aggregation/AbstractAggregationIsm.sol/abstract.AbstractAggregationIsm.md +60 -0
  48. package/docs/src/contracts/isms/aggregation/README.md +6 -0
  49. package/docs/src/contracts/isms/aggregation/StaticAggregationIsm.sol/contract.StaticAggregationIsm.md +30 -0
  50. package/docs/src/contracts/isms/aggregation/StaticAggregationIsmFactory.sol/contract.StaticAggregationIsmFactory.md +15 -0
  51. package/docs/src/contracts/isms/hook/AbstractHookISM.sol/abstract.AbstractHookISM.md +44 -0
  52. package/docs/src/contracts/isms/hook/CrossChainEnabled.sol/abstract.CrossChainEnabled.md +74 -0
  53. package/docs/src/contracts/isms/hook/ERC5164ISM.sol/contract.ERC5164ISM.md +57 -0
  54. package/docs/src/contracts/isms/hook/README.md +7 -0
  55. package/docs/src/contracts/isms/hook/optimism/CrossChainEnabledOptimism.sol/abstract.CrossChainEnabledOptimism.md +53 -0
  56. package/docs/src/contracts/isms/hook/optimism/LibOptimism.sol/library.LibOptimism.md +39 -0
  57. package/docs/src/contracts/isms/hook/optimism/OptimismISM.sol/contract.OptimismISM.md +66 -0
  58. package/docs/src/contracts/isms/hook/optimism/README.md +6 -0
  59. package/docs/src/contracts/isms/multisig/AbstractMerkleRootMultisigIsm.sol/abstract.AbstractMerkleRootMultisigIsm.md +78 -0
  60. package/docs/src/contracts/isms/multisig/AbstractMessageIdMultisigIsm.sol/abstract.AbstractMessageIdMultisigIsm.md +69 -0
  61. package/docs/src/contracts/isms/multisig/AbstractMultisigIsm.sol/abstract.AbstractMultisigIsm.md +102 -0
  62. package/docs/src/contracts/isms/multisig/LegacyMultisigIsm.sol/contract.LegacyMultisigIsm.md +355 -0
  63. package/docs/src/contracts/isms/multisig/README.md +12 -0
  64. package/docs/src/contracts/isms/multisig/StaticMultisigIsm.sol/abstract.AbstractMetaProxyMultisigIsm.md +36 -0
  65. package/docs/src/contracts/isms/multisig/StaticMultisigIsm.sol/contract.StaticMerkleRootMultisigIsm.md +11 -0
  66. package/docs/src/contracts/isms/multisig/StaticMultisigIsm.sol/contract.StaticMerkleRootMultisigIsmFactory.md +15 -0
  67. package/docs/src/contracts/isms/multisig/StaticMultisigIsm.sol/contract.StaticMessageIdMultisigIsm.md +10 -0
  68. package/docs/src/contracts/isms/multisig/StaticMultisigIsm.sol/contract.StaticMessageIdMultisigIsmFactory.md +15 -0
  69. package/docs/src/contracts/isms/routing/AbstractRoutingIsm.sol/abstract.AbstractRoutingIsm.md +55 -0
  70. package/docs/src/contracts/isms/routing/DomainRoutingIsm.sol/contract.DomainRoutingIsm.md +112 -0
  71. package/docs/src/contracts/isms/routing/DomainRoutingIsmFactory.sol/contract.DomainRoutingIsmFactory.md +47 -0
  72. package/docs/src/contracts/isms/routing/InterchainAccountIsm.sol/contract.InterchainAccountIsm.md +44 -0
  73. package/docs/src/contracts/isms/routing/README.md +7 -0
  74. package/docs/src/contracts/libs/Call.sol/library.CallLib.md +124 -0
  75. package/docs/src/contracts/libs/CheckpointLib.sol/library.CheckpointLib.md +61 -0
  76. package/docs/src/contracts/libs/EnumerableMapExtended.sol/library.EnumerableMapExtended.md +63 -0
  77. package/docs/src/contracts/libs/LegacyCheckpointLib.sol/library.LegacyCheckpointLib.md +55 -0
  78. package/docs/src/contracts/libs/Merkle.sol/library.MerkleLib.md +354 -0
  79. package/docs/src/contracts/libs/Message.sol/library.Message.md +304 -0
  80. package/docs/src/contracts/libs/MetaProxy.sol/library.MetaProxy.md +36 -0
  81. package/docs/src/contracts/libs/MinimalProxy.sol/library.MinimalProxy.md +34 -0
  82. package/docs/src/contracts/libs/README.md +16 -0
  83. package/docs/src/contracts/libs/StaticMOfNAddressSetFactory.sol/abstract.StaticMOfNAddressSetFactory.md +123 -0
  84. package/docs/src/contracts/libs/TypeCasts.sol/library.TypeCasts.md +19 -0
  85. package/docs/src/contracts/libs/ValidatorAnnouncements.sol/library.ValidatorAnnouncements.md +31 -0
  86. package/docs/src/contracts/libs/isms/AggregationIsmMetadata.sol/library.AggregationIsmMetadata.md +97 -0
  87. package/docs/src/contracts/libs/isms/LegacyMultisigIsmMetadata.sol/library.LegacyMultisigIsmMetadata.md +296 -0
  88. package/docs/src/contracts/libs/isms/MerkleRootMultisigIsmMetadata.sol/library.MerkleRootMultisigIsmMetadata.md +177 -0
  89. package/docs/src/contracts/libs/isms/MessageIdMultisigIsmMetadata.sol/library.MessageIdMultisigIsmMetadata.md +109 -0
  90. package/docs/src/contracts/libs/isms/README.md +7 -0
  91. package/docs/src/contracts/libs/middleware/InterchainAccountMessage.sol/library.InterchainAccountMessage.md +134 -0
  92. package/docs/src/contracts/libs/middleware/InterchainQueryMessage.sol/library.InterchainQueryMessage.md +203 -0
  93. package/docs/src/contracts/libs/middleware/README.md +5 -0
  94. package/docs/src/contracts/middleware/InterchainAccountRouter.sol/contract.InterchainAccountRouter.md +542 -0
  95. package/docs/src/contracts/middleware/InterchainQueryRouter.sol/contract.InterchainQueryRouter.md +119 -0
  96. package/docs/src/contracts/middleware/README.md +6 -0
  97. package/docs/src/contracts/middleware/liquidity-layer/LiquidityLayerRouter.sol/contract.LiquidityLayerRouter.md +81 -0
  98. package/docs/src/contracts/middleware/liquidity-layer/README.md +6 -0
  99. package/docs/src/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.sol/contract.CircleBridgeAdapter.md +197 -0
  100. package/docs/src/contracts/middleware/liquidity-layer/adapters/PortalAdapter.sol/contract.PortalAdapter.md +189 -0
  101. package/docs/src/contracts/middleware/liquidity-layer/adapters/README.md +5 -0
  102. package/docs/src/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerAdapter.sol/interface.ILiquidityLayerAdapter.md +23 -0
  103. package/docs/src/contracts/middleware/liquidity-layer/interfaces/README.md +6 -0
  104. package/docs/src/contracts/middleware/liquidity-layer/interfaces/circle/ICircleMessageTransmitter.sol/interface.ICircleMessageTransmitter.md +54 -0
  105. package/docs/src/contracts/middleware/liquidity-layer/interfaces/circle/ITokenMessenger.sol/interface.ITokenMessenger.md +92 -0
  106. package/docs/src/contracts/middleware/liquidity-layer/interfaces/circle/README.md +5 -0
  107. package/docs/src/contracts/middleware/liquidity-layer/interfaces/portal/IPortalTokenBridge.sol/interface.IPortalTokenBridge.md +131 -0
  108. package/docs/src/contracts/middleware/liquidity-layer/interfaces/portal/README.md +4 -0
  109. package/docs/src/contracts/mock/MockCircleMessageTransmitter.sol/contract.MockCircleMessageTransmitter.md +58 -0
  110. package/docs/src/contracts/mock/MockCircleTokenMessenger.sol/contract.MockCircleTokenMessenger.md +44 -0
  111. package/docs/src/contracts/mock/MockERC5164.sol/contract.MockMessageDispatcher.md +15 -0
  112. package/docs/src/contracts/mock/MockERC5164.sol/contract.MockMessageExecutor.md +11 -0
  113. package/docs/src/contracts/mock/MockHyperlaneEnvironment.sol/contract.MockHyperlaneEnvironment.md +69 -0
  114. package/docs/src/contracts/mock/MockMailbox.sol/contract.MockMailbox.md +137 -0
  115. package/docs/src/contracts/mock/MockPortalBridge.sol/contract.MockPortalBridge.md +82 -0
  116. package/docs/src/contracts/mock/MockToken.sol/contract.MockToken.md +22 -0
  117. package/docs/src/contracts/mock/README.md +11 -0
  118. package/docs/src/contracts/test/LightTestRecipient.sol/contract.LightTestRecipient.md +15 -0
  119. package/docs/src/contracts/test/README.md +20 -0
  120. package/docs/src/contracts/test/TestGasRouter.sol/contract.TestGasRouter.md +27 -0
  121. package/docs/src/contracts/test/TestHyperlaneConnectionClient.sol/contract.TestHyperlaneConnectionClient.md +29 -0
  122. package/docs/src/contracts/test/TestInterchainGasPaymaster.sol/contract.TestInterchainGasPaymaster.md +30 -0
  123. package/docs/src/contracts/test/TestLegacyMultisigIsm.sol/contract.TestLegacyMultisigIsm.md +15 -0
  124. package/docs/src/contracts/test/TestLiquidityLayerMessageRecipient.sol/contract.TestLiquidityLayerMessageRecipient.md +23 -0
  125. package/docs/src/contracts/test/TestMailbox.sol/contract.TestMailbox.md +29 -0
  126. package/docs/src/contracts/test/TestMerkle.sol/contract.TestMerkle.md +50 -0
  127. package/docs/src/contracts/test/TestMessage.sol/contract.TestMessage.md +68 -0
  128. package/docs/src/contracts/test/TestMultisigIsm.sol/contract.TestMultisigIsm.md +51 -0
  129. package/docs/src/contracts/test/TestQuery.sol/contract.TestQuery.md +45 -0
  130. package/docs/src/contracts/test/TestQuerySender.sol/contract.TestQuerySender.md +128 -0
  131. package/docs/src/contracts/test/TestRecipient.sol/contract.TestRecipient.md +78 -0
  132. package/docs/src/contracts/test/TestRouter.sol/contract.TestRouter.md +63 -0
  133. package/docs/src/contracts/test/TestSendReceiver.sol/contract.TestSendReceiver.md +49 -0
  134. package/docs/src/contracts/test/TestTokenRecipient.sol/contract.TestTokenRecipient.md +80 -0
  135. package/docs/src/contracts/test/bad-recipient/BadRecipient1.sol/contract.BadRecipient1.md +15 -0
  136. package/docs/src/contracts/test/bad-recipient/BadRecipient2.sol/contract.BadRecipient2.md +12 -0
  137. package/docs/src/contracts/test/bad-recipient/BadRecipient3.sol/contract.BadRecipient3.md +15 -0
  138. package/docs/src/contracts/test/bad-recipient/BadRecipient5.sol/contract.BadRecipient5.md +15 -0
  139. package/docs/src/contracts/test/bad-recipient/BadRecipient6.sol/contract.BadRecipient6.md +15 -0
  140. package/docs/src/contracts/test/bad-recipient/README.md +8 -0
  141. package/docs/src/contracts/upgrade/README.md +4 -0
  142. package/docs/src/contracts/upgrade/Versioned.sol/contract.Versioned.md +14 -0
  143. package/package.json +3 -3
@@ -0,0 +1,81 @@
1
+ # LiquidityLayerRouter
2
+ [Git Source](https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/a5209dbd9b0f5eb34e0bc9df2ba157dda2b454d3/contracts/middleware/liquidity-layer/LiquidityLayerRouter.sol)
3
+
4
+ **Inherits:**
5
+ [Router](/contracts/Router.sol/abstract.Router.md), [ILiquidityLayerRouter](/contracts/interfaces/ILiquidityLayerRouter.sol/interface.ILiquidityLayerRouter.md)
6
+
7
+
8
+ ## State Variables
9
+ ### liquidityLayerAdapters
10
+
11
+ ```solidity
12
+ mapping(string => address) public liquidityLayerAdapters;
13
+ ```
14
+
15
+
16
+ ## Functions
17
+ ### initialize
18
+
19
+ Initializes the Router contract with Hyperlane core contracts and the address of the interchain security module.
20
+
21
+
22
+ ```solidity
23
+ function initialize(
24
+ address _mailbox,
25
+ address _interchainGasPaymaster,
26
+ address _interchainSecurityModule,
27
+ address _owner
28
+ ) external initializer;
29
+ ```
30
+ **Parameters**
31
+
32
+ |Name|Type|Description|
33
+ |----|----|-----------|
34
+ |`_mailbox`|`address`|The address of the mailbox contract.|
35
+ |`_interchainGasPaymaster`|`address`|The address of the interchain gas paymaster contract.|
36
+ |`_interchainSecurityModule`|`address`|The address of the interchain security module contract.|
37
+ |`_owner`|`address`|The address with owner privileges.|
38
+
39
+
40
+ ### dispatchWithTokens
41
+
42
+
43
+ ```solidity
44
+ function dispatchWithTokens(
45
+ uint32 _destinationDomain,
46
+ bytes32 _recipientAddress,
47
+ address _token,
48
+ uint256 _amount,
49
+ string calldata _bridge,
50
+ bytes calldata _messageBody
51
+ ) external returns (bytes32);
52
+ ```
53
+
54
+ ### _handle
55
+
56
+
57
+ ```solidity
58
+ function _handle(uint32 _origin, bytes32, bytes calldata _message) internal override;
59
+ ```
60
+
61
+ ### setLiquidityLayerAdapter
62
+
63
+
64
+ ```solidity
65
+ function setLiquidityLayerAdapter(string calldata _bridge, address _adapter) external onlyOwner;
66
+ ```
67
+
68
+ ### _getAdapter
69
+
70
+
71
+ ```solidity
72
+ function _getAdapter(string memory _bridge) internal view returns (ILiquidityLayerAdapter _adapter);
73
+ ```
74
+
75
+ ## Events
76
+ ### LiquidityLayerAdapterSet
77
+
78
+ ```solidity
79
+ event LiquidityLayerAdapterSet(string indexed bridge, address adapter);
80
+ ```
81
+
@@ -0,0 +1,6 @@
1
+
2
+
3
+ # Contents
4
+ - [adapters](/contracts/middleware/liquidity-layer/adapters)
5
+ - [interfaces](/contracts/middleware/liquidity-layer/interfaces)
6
+ - [LiquidityLayerRouter](LiquidityLayerRouter.sol/contract.LiquidityLayerRouter.md)
@@ -0,0 +1,197 @@
1
+ # CircleBridgeAdapter
2
+ [Git Source](https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/a5209dbd9b0f5eb34e0bc9df2ba157dda2b454d3/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.sol)
3
+
4
+ **Inherits:**
5
+ [ILiquidityLayerAdapter](/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerAdapter.sol/interface.ILiquidityLayerAdapter.md), [Router](/contracts/Router.sol/abstract.Router.md)
6
+
7
+
8
+ ## State Variables
9
+ ### tokenMessenger
10
+ The TokenMessenger contract.
11
+
12
+
13
+ ```solidity
14
+ ITokenMessenger public tokenMessenger;
15
+ ```
16
+
17
+
18
+ ### circleMessageTransmitter
19
+ The Circle MessageTransmitter contract.
20
+
21
+
22
+ ```solidity
23
+ ICircleMessageTransmitter public circleMessageTransmitter;
24
+ ```
25
+
26
+
27
+ ### liquidityLayerRouter
28
+ The LiquidityLayerRouter contract.
29
+
30
+
31
+ ```solidity
32
+ address public liquidityLayerRouter;
33
+ ```
34
+
35
+
36
+ ### hyperlaneDomainToCircleDomain
37
+ Hyperlane domain => Circle domain.
38
+ ATM, known Circle domains are Ethereum = 0 and Avalanche = 1.
39
+ Note this could result in ambiguity between the Circle domain being
40
+ Ethereum or unknown.
41
+
42
+
43
+ ```solidity
44
+ mapping(uint32 => uint32) public hyperlaneDomainToCircleDomain;
45
+ ```
46
+
47
+
48
+ ### tokenSymbolToAddress
49
+ Token symbol => address of token on local chain.
50
+
51
+
52
+ ```solidity
53
+ mapping(string => IERC20) public tokenSymbolToAddress;
54
+ ```
55
+
56
+
57
+ ### tokenAddressToSymbol
58
+ Local chain token address => token symbol.
59
+
60
+
61
+ ```solidity
62
+ mapping(address => string) public tokenAddressToSymbol;
63
+ ```
64
+
65
+
66
+ ## Functions
67
+ ### onlyLiquidityLayerRouter
68
+
69
+
70
+ ```solidity
71
+ modifier onlyLiquidityLayerRouter();
72
+ ```
73
+
74
+ ### initialize
75
+
76
+
77
+ ```solidity
78
+ function initialize(
79
+ address _owner,
80
+ address _tokenMessenger,
81
+ address _circleMessageTransmitter,
82
+ address _liquidityLayerRouter
83
+ ) external initializer;
84
+ ```
85
+ **Parameters**
86
+
87
+ |Name|Type|Description|
88
+ |----|----|-----------|
89
+ |`_owner`|`address`|The new owner.|
90
+ |`_tokenMessenger`|`address`|The TokenMessenger contract.|
91
+ |`_circleMessageTransmitter`|`address`|The Circle MessageTransmitter contract.|
92
+ |`_liquidityLayerRouter`|`address`|The LiquidityLayerRouter contract.|
93
+
94
+
95
+ ### sendTokens
96
+
97
+
98
+ ```solidity
99
+ function sendTokens(uint32 _destinationDomain, bytes32, address _token, uint256 _amount)
100
+ external
101
+ onlyLiquidityLayerRouter
102
+ returns (bytes memory);
103
+ ```
104
+
105
+ ### receiveTokens
106
+
107
+
108
+ ```solidity
109
+ function receiveTokens(uint32 _originDomain, address _recipient, uint256 _amount, bytes calldata _adapterData)
110
+ external
111
+ onlyLiquidityLayerRouter
112
+ returns (address, uint256);
113
+ ```
114
+
115
+ ### _handle
116
+
117
+
118
+ ```solidity
119
+ function _handle(uint32, bytes32, bytes calldata) internal pure override;
120
+ ```
121
+
122
+ ### addDomain
123
+
124
+
125
+ ```solidity
126
+ function addDomain(uint32 _hyperlaneDomain, uint32 _circleDomain) external onlyOwner;
127
+ ```
128
+
129
+ ### addToken
130
+
131
+
132
+ ```solidity
133
+ function addToken(address _token, string calldata _tokenSymbol) external onlyOwner;
134
+ ```
135
+
136
+ ### removeToken
137
+
138
+
139
+ ```solidity
140
+ function removeToken(address _token, string calldata _tokenSymbol) external onlyOwner;
141
+ ```
142
+
143
+ ### _circleNonceId
144
+
145
+ Gets the Circle nonce ID by hashing _originCircleDomain and _nonce.
146
+
147
+
148
+ ```solidity
149
+ function _circleNonceId(uint32 _originCircleDomain, uint64 _nonce) internal pure returns (bytes32);
150
+ ```
151
+ **Parameters**
152
+
153
+ |Name|Type|Description|
154
+ |----|----|-----------|
155
+ |`_originCircleDomain`|`uint32`|Domain of chain where the transfer originated|
156
+ |`_nonce`|`uint64`|The unique identifier for the message from source to destination|
157
+
158
+ **Returns**
159
+
160
+ |Name|Type|Description|
161
+ |----|----|-----------|
162
+ |`<none>`|`bytes32`|hash of source and nonce|
163
+
164
+
165
+ ## Events
166
+ ### BridgedToken
167
+ Emits the nonce of the Circle message when a token is bridged.
168
+
169
+
170
+ ```solidity
171
+ event BridgedToken(uint64 nonce);
172
+ ```
173
+
174
+ ### DomainAdded
175
+ Emitted when the Hyperlane domain to Circle domain mapping is updated.
176
+
177
+
178
+ ```solidity
179
+ event DomainAdded(uint32 indexed hyperlaneDomain, uint32 circleDomain);
180
+ ```
181
+
182
+ ### TokenAdded
183
+ Emitted when a local token and its token symbol have been added.
184
+
185
+
186
+ ```solidity
187
+ event TokenAdded(address indexed token, string indexed symbol);
188
+ ```
189
+
190
+ ### TokenRemoved
191
+ Emitted when a local token and its token symbol have been removed.
192
+
193
+
194
+ ```solidity
195
+ event TokenRemoved(address indexed token, string indexed symbol);
196
+ ```
197
+
@@ -0,0 +1,189 @@
1
+ # PortalAdapter
2
+ [Git Source](https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/a5209dbd9b0f5eb34e0bc9df2ba157dda2b454d3/contracts/middleware/liquidity-layer/adapters/PortalAdapter.sol)
3
+
4
+ **Inherits:**
5
+ [ILiquidityLayerAdapter](/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerAdapter.sol/interface.ILiquidityLayerAdapter.md), [Router](/contracts/Router.sol/abstract.Router.md)
6
+
7
+
8
+ ## State Variables
9
+ ### portalTokenBridge
10
+ The Portal TokenBridge contract.
11
+
12
+
13
+ ```solidity
14
+ IPortalTokenBridge public portalTokenBridge;
15
+ ```
16
+
17
+
18
+ ### liquidityLayerRouter
19
+ The LiquidityLayerRouter contract.
20
+
21
+
22
+ ```solidity
23
+ address public liquidityLayerRouter;
24
+ ```
25
+
26
+
27
+ ### hyperlaneDomainToWormholeDomain
28
+ Hyperlane domain => Wormhole domain.
29
+
30
+
31
+ ```solidity
32
+ mapping(uint32 => uint16) public hyperlaneDomainToWormholeDomain;
33
+ ```
34
+
35
+
36
+ ### portalTransfersProcessed
37
+ transferId => token address
38
+
39
+
40
+ ```solidity
41
+ mapping(bytes32 => address) public portalTransfersProcessed;
42
+ ```
43
+
44
+
45
+ ### localDomain
46
+
47
+ ```solidity
48
+ uint32 public localDomain;
49
+ ```
50
+
51
+
52
+ ### nonce
53
+
54
+ ```solidity
55
+ uint224 public nonce = 0;
56
+ ```
57
+
58
+
59
+ ## Functions
60
+ ### onlyLiquidityLayerRouter
61
+
62
+
63
+ ```solidity
64
+ modifier onlyLiquidityLayerRouter();
65
+ ```
66
+
67
+ ### initialize
68
+
69
+
70
+ ```solidity
71
+ function initialize(uint32 _localDomain, address _owner, address _portalTokenBridge, address _liquidityLayerRouter)
72
+ public
73
+ initializer;
74
+ ```
75
+ **Parameters**
76
+
77
+ |Name|Type|Description|
78
+ |----|----|-----------|
79
+ |`_localDomain`|`uint32`|The local hyperlane domain|
80
+ |`_owner`|`address`|The new owner.|
81
+ |`_portalTokenBridge`|`address`|The Portal TokenBridge contract.|
82
+ |`_liquidityLayerRouter`|`address`|The LiquidityLayerRouter contract.|
83
+
84
+
85
+ ### sendTokens
86
+
87
+ Sends tokens as requested by the router
88
+
89
+
90
+ ```solidity
91
+ function sendTokens(uint32 _destinationDomain, bytes32, address _token, uint256 _amount)
92
+ external
93
+ onlyLiquidityLayerRouter
94
+ returns (bytes memory);
95
+ ```
96
+ **Parameters**
97
+
98
+ |Name|Type|Description|
99
+ |----|----|-----------|
100
+ |`_destinationDomain`|`uint32`|The hyperlane domain of the destination|
101
+ |`<none>`|`bytes32`||
102
+ |`_token`|`address`|The token address|
103
+ |`_amount`|`uint256`|The amount of tokens to send|
104
+
105
+
106
+ ### receiveTokens
107
+
108
+ Sends the tokens to the recipient as requested by the router
109
+
110
+
111
+ ```solidity
112
+ function receiveTokens(uint32 _originDomain, address _recipient, uint256 _amount, bytes calldata _adapterData)
113
+ external
114
+ onlyLiquidityLayerRouter
115
+ returns (address, uint256);
116
+ ```
117
+ **Parameters**
118
+
119
+ |Name|Type|Description|
120
+ |----|----|-----------|
121
+ |`_originDomain`|`uint32`|The hyperlane domain of the origin|
122
+ |`_recipient`|`address`|The address of the recipient|
123
+ |`_amount`|`uint256`|The amount of tokens to send|
124
+ |`_adapterData`|`bytes`|The adapter data from the origin chain, containing the nonce|
125
+
126
+
127
+ ### completeTransfer
128
+
129
+ Completes the Portal transfer which sends the funds to this adapter.
130
+ The router can call receiveTokens to move those funds to the ultimate recipient.
131
+
132
+
133
+ ```solidity
134
+ function completeTransfer(bytes memory encodedVm) public;
135
+ ```
136
+ **Parameters**
137
+
138
+ |Name|Type|Description|
139
+ |----|----|-----------|
140
+ |`encodedVm`|`bytes`|The VAA from the Wormhole Guardians|
141
+
142
+
143
+ ### _handle
144
+
145
+
146
+ ```solidity
147
+ function _handle(uint32, bytes32, bytes calldata) internal pure override;
148
+ ```
149
+
150
+ ### addDomain
151
+
152
+
153
+ ```solidity
154
+ function addDomain(uint32 _hyperlaneDomain, uint16 _wormholeDomain) external onlyOwner;
155
+ ```
156
+
157
+ ### transferId
158
+
159
+ The key that is used to track fulfilled Portal transfers
160
+
161
+
162
+ ```solidity
163
+ function transferId(uint32 _hyperlaneDomain, uint224 _nonce) public pure returns (bytes32);
164
+ ```
165
+ **Parameters**
166
+
167
+ |Name|Type|Description|
168
+ |----|----|-----------|
169
+ |`_hyperlaneDomain`|`uint32`|The hyperlane of the origin|
170
+ |`_nonce`|`uint224`|The nonce of the adapter on the origin|
171
+
172
+
173
+ ## Events
174
+ ### BridgedToken
175
+ Emits the nonce of the Portal message when a token is bridged.
176
+
177
+
178
+ ```solidity
179
+ event BridgedToken(uint256 nonce, uint64 portalSequence, uint32 destination);
180
+ ```
181
+
182
+ ### DomainAdded
183
+ Emitted when the Hyperlane domain to Wormhole domain mapping is updated.
184
+
185
+
186
+ ```solidity
187
+ event DomainAdded(uint32 indexed hyperlaneDomain, uint32 wormholeDomain);
188
+ ```
189
+
@@ -0,0 +1,5 @@
1
+
2
+
3
+ # Contents
4
+ - [CircleBridgeAdapter](CircleBridgeAdapter.sol/contract.CircleBridgeAdapter.md)
5
+ - [PortalAdapter](PortalAdapter.sol/contract.PortalAdapter.md)
@@ -0,0 +1,23 @@
1
+ # ILiquidityLayerAdapter
2
+ [Git Source](https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/a5209dbd9b0f5eb34e0bc9df2ba157dda2b454d3/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerAdapter.sol)
3
+
4
+
5
+ ## Functions
6
+ ### sendTokens
7
+
8
+
9
+ ```solidity
10
+ function sendTokens(uint32 _destinationDomain, bytes32 _recipientAddress, address _token, uint256 _amount)
11
+ external
12
+ returns (bytes memory _adapterData);
13
+ ```
14
+
15
+ ### receiveTokens
16
+
17
+
18
+ ```solidity
19
+ function receiveTokens(uint32 _originDomain, address _recipientAddress, uint256 _amount, bytes calldata _adapterData)
20
+ external
21
+ returns (address, uint256);
22
+ ```
23
+
@@ -0,0 +1,6 @@
1
+
2
+
3
+ # Contents
4
+ - [circle](/contracts/middleware/liquidity-layer/interfaces/circle)
5
+ - [portal](/contracts/middleware/liquidity-layer/interfaces/portal)
6
+ - [ILiquidityLayerAdapter](ILiquidityLayerAdapter.sol/interface.ILiquidityLayerAdapter.md)
@@ -0,0 +1,54 @@
1
+ # ICircleMessageTransmitter
2
+ [Git Source](https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/a5209dbd9b0f5eb34e0bc9df2ba157dda2b454d3/contracts/middleware/liquidity-layer/interfaces/circle/ICircleMessageTransmitter.sol)
3
+
4
+
5
+ ## Functions
6
+ ### receiveMessage
7
+
8
+ Receive a message. Messages with a given nonce
9
+ can only be broadcast once for a (sourceDomain, destinationDomain)
10
+ pair. The message body of a valid message is passed to the
11
+ specified recipient for further processing.
12
+
13
+ *Attestation format:
14
+ A valid attestation is the concatenated 65-byte signature(s) of exactly
15
+ `thresholdSignature` signatures, in increasing order of attester address.
16
+ If the attester addresses recovered from signatures are not in
17
+ increasing order, signature verification will fail.***
18
+ If incorrect number of signatures or duplicate signatures are supplied,
19
+ signature verification will fail.
20
+ Message format:
21
+ Field Bytes Type Index
22
+ version 4 uint32 0
23
+ sourceDomain 4 uint32 4
24
+ destinationDomain 4 uint32 8
25
+ nonce 8 uint64 12
26
+ sender 32 bytes32 20
27
+ recipient 32 bytes32 52
28
+ messageBody dynamic bytes 84*
29
+
30
+
31
+ ```solidity
32
+ function receiveMessage(bytes memory _message, bytes calldata _attestation) external returns (bool success);
33
+ ```
34
+ **Parameters**
35
+
36
+ |Name|Type|Description|
37
+ |----|----|-----------|
38
+ |`_message`|`bytes`|Message bytes|
39
+ |`_attestation`|`bytes`|Concatenated 65-byte signature(s) of `_message`, in increasing order of the attester address recovered from signatures.|
40
+
41
+ **Returns**
42
+
43
+ |Name|Type|Description|
44
+ |----|----|-----------|
45
+ |`success`|`bool`|bool, true if successful|
46
+
47
+
48
+ ### usedNonces
49
+
50
+
51
+ ```solidity
52
+ function usedNonces(bytes32 _nonceId) external view returns (bool);
53
+ ```
54
+
@@ -0,0 +1,92 @@
1
+ # ITokenMessenger
2
+ [Git Source](https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/a5209dbd9b0f5eb34e0bc9df2ba157dda2b454d3/contracts/middleware/liquidity-layer/interfaces/circle/ITokenMessenger.sol)
3
+
4
+
5
+ ## Functions
6
+ ### depositForBurn
7
+
8
+ Deposits and burns tokens from sender to be minted on destination domain.
9
+ Emits a `DepositForBurn` event.
10
+
11
+ *reverts if:
12
+ - given burnToken is not supported
13
+ - given destinationDomain has no TokenMessenger registered
14
+ - transferFrom() reverts. For example, if sender's burnToken balance or approved allowance
15
+ to this contract is less than `amount`.
16
+ - burn() reverts. For example, if `amount` is 0.
17
+ - MessageTransmitter returns false or reverts.*
18
+
19
+
20
+ ```solidity
21
+ function depositForBurn(uint256 _amount, uint32 _destinationDomain, bytes32 _mintRecipient, address _burnToken)
22
+ external
23
+ returns (uint64 _nonce);
24
+ ```
25
+ **Parameters**
26
+
27
+ |Name|Type|Description|
28
+ |----|----|-----------|
29
+ |`_amount`|`uint256`|amount of tokens to burn|
30
+ |`_destinationDomain`|`uint32`|destination domain (ETH = 0, AVAX = 1)|
31
+ |`_mintRecipient`|`bytes32`|address of mint recipient on destination domain|
32
+ |`_burnToken`|`address`|address of contract to burn deposited tokens, on local domain|
33
+
34
+ **Returns**
35
+
36
+ |Name|Type|Description|
37
+ |----|----|-----------|
38
+ |`_nonce`|`uint64`|unique nonce reserved by message|
39
+
40
+
41
+ ### depositForBurnWithCaller
42
+
43
+ Deposits and burns tokens from sender to be minted on destination domain. The mint
44
+ on the destination domain must be called by `_destinationCaller`.
45
+ WARNING: if the `_destinationCaller` does not represent a valid address as bytes32, then it will not be possible
46
+ to broadcast the message on the destination domain. This is an advanced feature, and the standard
47
+ depositForBurn() should be preferred for use cases where a specific destination caller is not required.
48
+ Emits a `DepositForBurn` event.
49
+
50
+ *reverts if:
51
+ - given destinationCaller is zero address
52
+ - given burnToken is not supported
53
+ - given destinationDomain has no TokenMessenger registered
54
+ - transferFrom() reverts. For example, if sender's burnToken balance or approved allowance
55
+ to this contract is less than `amount`.
56
+ - burn() reverts. For example, if `amount` is 0.
57
+ - MessageTransmitter returns false or reverts.*
58
+
59
+
60
+ ```solidity
61
+ function depositForBurnWithCaller(
62
+ uint256 _amount,
63
+ uint32 _destinationDomain,
64
+ bytes32 _mintRecipient,
65
+ address _burnToken,
66
+ bytes32 _destinationCaller
67
+ ) external returns (uint64 _nonce);
68
+ ```
69
+ **Parameters**
70
+
71
+ |Name|Type|Description|
72
+ |----|----|-----------|
73
+ |`_amount`|`uint256`|amount of tokens to burn|
74
+ |`_destinationDomain`|`uint32`|destination domain|
75
+ |`_mintRecipient`|`bytes32`|address of mint recipient on destination domain|
76
+ |`_burnToken`|`address`|address of contract to burn deposited tokens, on local domain|
77
+ |`_destinationCaller`|`bytes32`|caller on the destination domain, as bytes32|
78
+
79
+ **Returns**
80
+
81
+ |Name|Type|Description|
82
+ |----|----|-----------|
83
+ |`_nonce`|`uint64`|unique nonce reserved by message|
84
+
85
+
86
+ ## Events
87
+ ### MessageSent
88
+
89
+ ```solidity
90
+ event MessageSent(bytes message);
91
+ ```
92
+
@@ -0,0 +1,5 @@
1
+
2
+
3
+ # Contents
4
+ - [ICircleMessageTransmitter](ICircleMessageTransmitter.sol/interface.ICircleMessageTransmitter.md)
5
+ - [ITokenMessenger](ITokenMessenger.sol/interface.ITokenMessenger.md)