@hyperlane-xyz/core 3.12.1-alpha.0 → 3.13.0-next.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 (190) hide show
  1. package/README.md +1 -1
  2. package/contracts/test/ERC20Test.sol +12 -0
  3. package/contracts/token/extensions/{HypFiatTokenCollateral.sol → HypFiatToken.sol} +1 -1
  4. package/contracts/token/extensions/{HypXERC20Collateral.sol → HypXERC20.sol} +1 -1
  5. package/contracts/token/extensions/HypXERC20Lockbox.sol +48 -0
  6. package/contracts/token/interfaces/IXERC20.sol +15 -0
  7. package/contracts/token/interfaces/IXERC20Lockbox.sol +61 -0
  8. package/contracts/token/libs/TokenMessage.sol +7 -0
  9. package/dist/buildArtifact.js +1 -1
  10. package/dist/buildArtifact.json +1 -1
  11. package/dist/contracts/test/ERC20Test.sol/XERC20Test.d.ts +63 -1
  12. package/dist/contracts/test/ERC20Test.sol/XERC20Test.d.ts.map +1 -1
  13. package/dist/contracts/token/extensions/{HypXERC20Collateral.d.ts → HypFiatToken.d.ts} +4 -4
  14. package/dist/contracts/token/extensions/HypFiatToken.d.ts.map +1 -0
  15. package/dist/contracts/token/extensions/HypFiatToken.js +2 -0
  16. package/dist/contracts/token/extensions/HypFiatToken.js.map +1 -0
  17. package/dist/contracts/token/extensions/{HypFiatTokenCollateral.d.ts → HypXERC20.d.ts} +4 -4
  18. package/dist/contracts/token/extensions/HypXERC20.d.ts.map +1 -0
  19. package/dist/contracts/token/extensions/HypXERC20.js +2 -0
  20. package/dist/contracts/token/extensions/HypXERC20.js.map +1 -0
  21. package/dist/contracts/token/{HypERC20CollateralVaultDeposit.d.ts → extensions/HypXERC20Lockbox.d.ts} +36 -81
  22. package/dist/contracts/token/extensions/HypXERC20Lockbox.d.ts.map +1 -0
  23. package/dist/contracts/token/extensions/HypXERC20Lockbox.js +2 -0
  24. package/dist/contracts/token/extensions/HypXERC20Lockbox.js.map +1 -0
  25. package/dist/contracts/token/extensions/index.d.ts +3 -2
  26. package/dist/contracts/token/extensions/index.d.ts.map +1 -1
  27. package/dist/contracts/token/interfaces/IXERC20.d.ts +63 -1
  28. package/dist/contracts/token/interfaces/IXERC20.d.ts.map +1 -1
  29. package/dist/contracts/token/interfaces/IXERC20Lockbox.d.ts +252 -0
  30. package/dist/contracts/token/interfaces/IXERC20Lockbox.d.ts.map +1 -0
  31. package/dist/contracts/token/interfaces/IXERC20Lockbox.js +2 -0
  32. package/dist/contracts/token/interfaces/IXERC20Lockbox.js.map +1 -0
  33. package/dist/contracts/token/interfaces/index.d.ts +1 -0
  34. package/dist/contracts/token/interfaces/index.d.ts.map +1 -1
  35. package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.d.ts +1 -1
  36. package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.js +1 -1
  37. package/dist/factories/contracts/isms/warp-route/RateLimitedIsm__factory.d.ts +1 -1
  38. package/dist/factories/contracts/isms/warp-route/RateLimitedIsm__factory.js +1 -1
  39. package/dist/factories/contracts/test/ERC20Test.sol/ERC20Test__factory.d.ts +1 -1
  40. package/dist/factories/contracts/test/ERC20Test.sol/ERC20Test__factory.js +1 -1
  41. package/dist/factories/contracts/test/ERC20Test.sol/FiatTokenTest__factory.d.ts +1 -1
  42. package/dist/factories/contracts/test/ERC20Test.sol/FiatTokenTest__factory.js +1 -1
  43. package/dist/factories/contracts/test/ERC20Test.sol/XERC20Test__factory.d.ts +29 -1
  44. package/dist/factories/contracts/test/ERC20Test.sol/XERC20Test__factory.d.ts.map +1 -1
  45. package/dist/factories/contracts/test/ERC20Test.sol/XERC20Test__factory.js +37 -1
  46. package/dist/factories/contracts/test/ERC20Test.sol/XERC20Test__factory.js.map +1 -1
  47. package/dist/factories/contracts/token/HypERC20Collateral__factory.d.ts +1 -1
  48. package/dist/factories/contracts/token/HypERC20Collateral__factory.js +1 -1
  49. package/dist/factories/contracts/token/HypERC20__factory.d.ts +1 -1
  50. package/dist/factories/contracts/token/HypERC20__factory.js +1 -1
  51. package/dist/factories/contracts/token/HypERC721Collateral__factory.d.ts +1 -1
  52. package/dist/factories/contracts/token/HypERC721Collateral__factory.js +1 -1
  53. package/dist/factories/contracts/token/HypERC721__factory.d.ts +1 -1
  54. package/dist/factories/contracts/token/HypERC721__factory.js +1 -1
  55. package/dist/factories/contracts/token/HypNative__factory.d.ts +1 -1
  56. package/dist/factories/contracts/token/HypNative__factory.js +1 -1
  57. package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.d.ts +1 -1
  58. package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.js +1 -1
  59. package/dist/factories/contracts/token/extensions/FastHypERC20__factory.d.ts +1 -1
  60. package/dist/factories/contracts/token/extensions/FastHypERC20__factory.js +1 -1
  61. package/dist/factories/contracts/token/extensions/HypERC20CollateralVaultDeposit__factory.d.ts +1 -1
  62. package/dist/factories/contracts/token/extensions/HypERC20CollateralVaultDeposit__factory.js +1 -1
  63. package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.d.ts +1 -1
  64. package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.js +1 -1
  65. package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.d.ts +1 -1
  66. package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.js +1 -1
  67. package/dist/factories/contracts/token/extensions/{HypFiatTokenCollateral__factory.d.ts → HypFiatToken__factory.d.ts} +11 -11
  68. package/dist/factories/contracts/token/extensions/HypFiatToken__factory.d.ts.map +1 -0
  69. package/dist/factories/contracts/token/extensions/{HypFiatTokenCollateral__factory.js → HypFiatToken__factory.js} +3 -3
  70. package/dist/factories/contracts/token/extensions/HypFiatToken__factory.js.map +1 -0
  71. package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.d.ts +1 -1
  72. package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.js +1 -1
  73. package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.d.ts +449 -0
  74. package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.d.ts.map +1 -0
  75. package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.js +595 -0
  76. package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.js.map +1 -0
  77. package/dist/factories/contracts/token/extensions/{HypXERC20Collateral__factory.d.ts → HypXERC20__factory.d.ts} +11 -11
  78. package/dist/factories/contracts/token/extensions/HypXERC20__factory.d.ts.map +1 -0
  79. package/dist/factories/contracts/token/extensions/{HypXERC20Collateral__factory.js → HypXERC20__factory.js} +3 -3
  80. package/dist/factories/contracts/token/extensions/HypXERC20__factory.js.map +1 -0
  81. package/dist/factories/contracts/token/extensions/index.d.ts +3 -2
  82. package/dist/factories/contracts/token/extensions/index.d.ts.map +1 -1
  83. package/dist/factories/contracts/token/extensions/index.js +3 -2
  84. package/dist/factories/contracts/token/extensions/index.js.map +1 -1
  85. package/dist/factories/contracts/token/interfaces/IXERC20Lockbox__factory.d.ts +87 -0
  86. package/dist/factories/contracts/token/interfaces/IXERC20Lockbox__factory.d.ts.map +1 -0
  87. package/dist/factories/contracts/token/interfaces/IXERC20Lockbox__factory.js +117 -0
  88. package/dist/factories/contracts/token/interfaces/IXERC20Lockbox__factory.js.map +1 -0
  89. package/dist/factories/contracts/token/interfaces/IXERC20__factory.d.ts +28 -0
  90. package/dist/factories/contracts/token/interfaces/IXERC20__factory.d.ts.map +1 -1
  91. package/dist/factories/contracts/token/interfaces/IXERC20__factory.js +36 -0
  92. package/dist/factories/contracts/token/interfaces/IXERC20__factory.js.map +1 -1
  93. package/dist/factories/contracts/token/interfaces/index.d.ts +1 -0
  94. package/dist/factories/contracts/token/interfaces/index.d.ts.map +1 -1
  95. package/dist/factories/contracts/token/interfaces/index.js +1 -0
  96. package/dist/factories/contracts/token/interfaces/index.js.map +1 -1
  97. package/dist/index.d.ts +8 -4
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +4 -2
  100. package/dist/index.js.map +1 -1
  101. package/package.json +2 -2
  102. package/dist/contracts/interfaces/avs/IAVSDirectory.d.ts +0 -160
  103. package/dist/contracts/interfaces/avs/IAVSDirectory.d.ts.map +0 -1
  104. package/dist/contracts/interfaces/avs/IAVSDirectory.js +0 -2
  105. package/dist/contracts/interfaces/avs/IAVSDirectory.js.map +0 -1
  106. package/dist/contracts/interfaces/avs/IDelegationManager.d.ts +0 -93
  107. package/dist/contracts/interfaces/avs/IDelegationManager.d.ts.map +0 -1
  108. package/dist/contracts/interfaces/avs/IDelegationManager.js +0 -2
  109. package/dist/contracts/interfaces/avs/IDelegationManager.js.map +0 -1
  110. package/dist/contracts/interfaces/avs/IECDSAStakeRegistryEventsAndErrors.d.ts +0 -157
  111. package/dist/contracts/interfaces/avs/IECDSAStakeRegistryEventsAndErrors.d.ts.map +0 -1
  112. package/dist/contracts/interfaces/avs/IECDSAStakeRegistryEventsAndErrors.js +0 -2
  113. package/dist/contracts/interfaces/avs/IECDSAStakeRegistryEventsAndErrors.js.map +0 -1
  114. package/dist/contracts/interfaces/avs/IPaymentCoordinator.d.ts +0 -96
  115. package/dist/contracts/interfaces/avs/IPaymentCoordinator.d.ts.map +0 -1
  116. package/dist/contracts/interfaces/avs/IPaymentCoordinator.js +0 -2
  117. package/dist/contracts/interfaces/avs/IPaymentCoordinator.js.map +0 -1
  118. package/dist/contracts/interfaces/avs/IServiceManager.d.ts +0 -250
  119. package/dist/contracts/interfaces/avs/IServiceManager.d.ts.map +0 -1
  120. package/dist/contracts/interfaces/avs/IServiceManager.js +0 -2
  121. package/dist/contracts/interfaces/avs/IServiceManager.js.map +0 -1
  122. package/dist/contracts/interfaces/avs/IServiceManagerUI.d.ts +0 -189
  123. package/dist/contracts/interfaces/avs/IServiceManagerUI.d.ts.map +0 -1
  124. package/dist/contracts/interfaces/avs/IServiceManagerUI.js +0 -2
  125. package/dist/contracts/interfaces/avs/IServiceManagerUI.js.map +0 -1
  126. package/dist/contracts/interfaces/avs/ISlasher.d.ts +0 -66
  127. package/dist/contracts/interfaces/avs/ISlasher.d.ts.map +0 -1
  128. package/dist/contracts/interfaces/avs/ISlasher.js +0 -2
  129. package/dist/contracts/interfaces/avs/ISlasher.js.map +0 -1
  130. package/dist/contracts/interfaces/avs/IStrategy.d.ts +0 -295
  131. package/dist/contracts/interfaces/avs/IStrategy.d.ts.map +0 -1
  132. package/dist/contracts/interfaces/avs/IStrategy.js +0 -2
  133. package/dist/contracts/interfaces/avs/IStrategy.js.map +0 -1
  134. package/dist/contracts/test/ERC20Test.d.ts +0 -391
  135. package/dist/contracts/test/ERC20Test.d.ts.map +0 -1
  136. package/dist/contracts/test/ERC20Test.js +0 -2
  137. package/dist/contracts/test/ERC20Test.js.map +0 -1
  138. package/dist/contracts/token/HypERC20CollateralVaultDeposit.d.ts.map +0 -1
  139. package/dist/contracts/token/HypERC20CollateralVaultDeposit.js +0 -2
  140. package/dist/contracts/token/HypERC20CollateralVaultDeposit.js.map +0 -1
  141. package/dist/contracts/token/extensions/HypFiatTokenCollateral.d.ts.map +0 -1
  142. package/dist/contracts/token/extensions/HypFiatTokenCollateral.js +0 -2
  143. package/dist/contracts/token/extensions/HypFiatTokenCollateral.js.map +0 -1
  144. package/dist/contracts/token/extensions/HypXERC20Collateral.d.ts.map +0 -1
  145. package/dist/contracts/token/extensions/HypXERC20Collateral.js +0 -2
  146. package/dist/contracts/token/extensions/HypXERC20Collateral.js.map +0 -1
  147. package/dist/factories/contracts/interfaces/avs/IAVSDirectory__factory.d.ts +0 -71
  148. package/dist/factories/contracts/interfaces/avs/IAVSDirectory__factory.d.ts.map +0 -1
  149. package/dist/factories/contracts/interfaces/avs/IAVSDirectory__factory.js +0 -96
  150. package/dist/factories/contracts/interfaces/avs/IAVSDirectory__factory.js.map +0 -1
  151. package/dist/factories/contracts/interfaces/avs/IDelegationManager__factory.d.ts +0 -54
  152. package/dist/factories/contracts/interfaces/avs/IDelegationManager__factory.d.ts.map +0 -1
  153. package/dist/factories/contracts/interfaces/avs/IDelegationManager__factory.js +0 -75
  154. package/dist/factories/contracts/interfaces/avs/IDelegationManager__factory.js.map +0 -1
  155. package/dist/factories/contracts/interfaces/avs/IECDSAStakeRegistryEventsAndErrors__factory.d.ts +0 -205
  156. package/dist/factories/contracts/interfaces/avs/IECDSAStakeRegistryEventsAndErrors__factory.d.ts.map +0 -1
  157. package/dist/factories/contracts/interfaces/avs/IECDSAStakeRegistryEventsAndErrors__factory.js +0 -266
  158. package/dist/factories/contracts/interfaces/avs/IECDSAStakeRegistryEventsAndErrors__factory.js.map +0 -1
  159. package/dist/factories/contracts/interfaces/avs/IPaymentCoordinator__factory.d.ts +0 -49
  160. package/dist/factories/contracts/interfaces/avs/IPaymentCoordinator__factory.d.ts.map +0 -1
  161. package/dist/factories/contracts/interfaces/avs/IPaymentCoordinator__factory.js +0 -68
  162. package/dist/factories/contracts/interfaces/avs/IPaymentCoordinator__factory.js.map +0 -1
  163. package/dist/factories/contracts/interfaces/avs/IServiceManagerUI__factory.d.ts +0 -90
  164. package/dist/factories/contracts/interfaces/avs/IServiceManagerUI__factory.d.ts.map +0 -1
  165. package/dist/factories/contracts/interfaces/avs/IServiceManagerUI__factory.js +0 -122
  166. package/dist/factories/contracts/interfaces/avs/IServiceManagerUI__factory.js.map +0 -1
  167. package/dist/factories/contracts/interfaces/avs/IServiceManager__factory.d.ts +0 -130
  168. package/dist/factories/contracts/interfaces/avs/IServiceManager__factory.d.ts.map +0 -1
  169. package/dist/factories/contracts/interfaces/avs/IServiceManager__factory.js +0 -174
  170. package/dist/factories/contracts/interfaces/avs/IServiceManager__factory.js.map +0 -1
  171. package/dist/factories/contracts/interfaces/avs/ISlasher__factory.d.ts +0 -19
  172. package/dist/factories/contracts/interfaces/avs/ISlasher__factory.d.ts.map +0 -1
  173. package/dist/factories/contracts/interfaces/avs/ISlasher__factory.js +0 -29
  174. package/dist/factories/contracts/interfaces/avs/ISlasher__factory.js.map +0 -1
  175. package/dist/factories/contracts/interfaces/avs/IStrategy__factory.d.ts +0 -173
  176. package/dist/factories/contracts/interfaces/avs/IStrategy__factory.d.ts.map +0 -1
  177. package/dist/factories/contracts/interfaces/avs/IStrategy__factory.js +0 -235
  178. package/dist/factories/contracts/interfaces/avs/IStrategy__factory.js.map +0 -1
  179. package/dist/factories/contracts/test/ERC20Test__factory.d.ts +0 -281
  180. package/dist/factories/contracts/test/ERC20Test__factory.d.ts.map +0 -1
  181. package/dist/factories/contracts/test/ERC20Test__factory.js +0 -379
  182. package/dist/factories/contracts/test/ERC20Test__factory.js.map +0 -1
  183. package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.d.ts +0 -470
  184. package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.d.ts.map +0 -1
  185. package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.js +0 -621
  186. package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.js.map +0 -1
  187. package/dist/factories/contracts/token/extensions/HypFiatTokenCollateral__factory.d.ts.map +0 -1
  188. package/dist/factories/contracts/token/extensions/HypFiatTokenCollateral__factory.js.map +0 -1
  189. package/dist/factories/contracts/token/extensions/HypXERC20Collateral__factory.d.ts.map +0 -1
  190. package/dist/factories/contracts/token/extensions/HypXERC20Collateral__factory.js.map +0 -1
package/README.md CHANGED
@@ -28,7 +28,7 @@ yarn test
28
28
 
29
29
  ### Fixtures
30
30
 
31
- Some forge tests may generate fixtures in the [fixtures](./fixtures/) directory. This allows [SDK](../typescript/sdk) tests to leverage forge fuzzing. These are git ignored and should not be committed.
31
+ Some forge tests may generate fixtures. This allows the [SDK](https://github.com/hyperlane-xyz/hyperlane-monorepo/tree/main/typescript/sdk) tests to leverage forge fuzzing. These are git ignored and should not be committed.
32
32
 
33
33
  ## License
34
34
 
@@ -65,4 +65,16 @@ contract XERC20Test is ERC20Test, IXERC20 {
65
65
  function burn(address account, uint256 amount) public override {
66
66
  _burn(account, amount);
67
67
  }
68
+
69
+ function setLimits(
70
+ address _bridge,
71
+ uint256 _mintingLimit,
72
+ uint256 _burningLimit
73
+ ) external {
74
+ require(false);
75
+ }
76
+
77
+ function owner() external returns (address) {
78
+ return address(0x0);
79
+ }
68
80
  }
@@ -5,7 +5,7 @@ import {IFiatToken} from "../interfaces/IFiatToken.sol";
5
5
  import {HypERC20Collateral} from "../HypERC20Collateral.sol";
6
6
 
7
7
  // see https://github.com/circlefin/stablecoin-evm/blob/master/doc/tokendesign.md#issuing-and-destroying-tokens
8
- contract HypFiatTokenCollateral is HypERC20Collateral {
8
+ contract HypFiatToken is HypERC20Collateral {
9
9
  constructor(
10
10
  address _fiatToken,
11
11
  address _mailbox
@@ -4,7 +4,7 @@ pragma solidity >=0.8.0;
4
4
  import {IXERC20} from "../interfaces/IXERC20.sol";
5
5
  import {HypERC20Collateral} from "../HypERC20Collateral.sol";
6
6
 
7
- contract HypXERC20Collateral is HypERC20Collateral {
7
+ contract HypXERC20 is HypERC20Collateral {
8
8
  constructor(
9
9
  address _xerc20,
10
10
  address _mailbox
@@ -0,0 +1,48 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.8.0;
3
+
4
+ import {IXERC20Lockbox} from "../interfaces/IXERC20Lockbox.sol";
5
+ import {IXERC20, IERC20} from "../interfaces/IXERC20.sol";
6
+ import {HypERC20Collateral} from "../HypERC20Collateral.sol";
7
+
8
+ contract HypXERC20Lockbox is HypERC20Collateral {
9
+ uint256 constant MAX_INT = 2 ** 256 - 1;
10
+
11
+ IXERC20Lockbox public immutable lockbox;
12
+ IXERC20 public immutable xERC20;
13
+
14
+ constructor(
15
+ address _lockbox,
16
+ address _mailbox
17
+ ) HypERC20Collateral(address(IXERC20Lockbox(_lockbox).ERC20()), _mailbox) {
18
+ lockbox = IXERC20Lockbox(_lockbox);
19
+ xERC20 = lockbox.XERC20();
20
+
21
+ // grant infinite approvals to lockbox
22
+ IERC20(wrappedToken).approve(_lockbox, MAX_INT);
23
+ xERC20.approve(_lockbox, MAX_INT);
24
+ }
25
+
26
+ function _transferFromSender(
27
+ uint256 _amount
28
+ ) internal override returns (bytes memory) {
29
+ // transfer erc20 from sender
30
+ super._transferFromSender(_amount);
31
+ // convert erc20 to xERC20
32
+ lockbox.deposit(_amount);
33
+ // burn xERC20
34
+ xERC20.burn(address(this), _amount);
35
+ return bytes("");
36
+ }
37
+
38
+ function _transferTo(
39
+ address _recipient,
40
+ uint256 _amount,
41
+ bytes calldata /*metadata*/
42
+ ) internal override {
43
+ // mint xERC20
44
+ xERC20.mint(address(this), _amount);
45
+ // convert xERC20 to erc20
46
+ lockbox.withdrawTo(_recipient, _amount);
47
+ }
48
+ }
@@ -21,4 +21,19 @@ interface IXERC20 is IERC20 {
21
21
  * @param _amount The amount of tokens being burned
22
22
  */
23
23
  function burn(address _user, uint256 _amount) external;
24
+
25
+ /**
26
+ * @notice Updates the limits of any bridge
27
+ * @dev Can only be called by the owner
28
+ * @param _mintingLimit The updated minting limit we are setting to the bridge
29
+ * @param _burningLimit The updated burning limit we are setting to the bridge
30
+ * @param _bridge The address of the bridge we are setting the limits too
31
+ */
32
+ function setLimits(
33
+ address _bridge,
34
+ uint256 _mintingLimit,
35
+ uint256 _burningLimit
36
+ ) external;
37
+
38
+ function owner() external returns (address);
24
39
  }
@@ -0,0 +1,61 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ pragma solidity >=0.8.4 <0.9.0;
3
+
4
+ // adapted from https://github.com/defi-wonderland/xERC20
5
+
6
+ import {IXERC20} from "./IXERC20.sol";
7
+ import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
8
+
9
+ interface IXERC20Lockbox {
10
+ /**
11
+ * @notice The XERC20 token of this contract
12
+ */
13
+ function XERC20() external returns (IXERC20);
14
+
15
+ /**
16
+ * @notice The ERC20 token of this contract
17
+ */
18
+ function ERC20() external returns (IERC20);
19
+
20
+ /**
21
+ * @notice Deposit ERC20 tokens into the lockbox
22
+ *
23
+ * @param _amount The amount of tokens to deposit
24
+ */
25
+
26
+ function deposit(uint256 _amount) external;
27
+
28
+ /**
29
+ * @notice Deposit ERC20 tokens into the lockbox, and send the XERC20 to a user
30
+ *
31
+ * @param _user The user to send the XERC20 to
32
+ * @param _amount The amount of tokens to deposit
33
+ */
34
+
35
+ function depositTo(address _user, uint256 _amount) external;
36
+
37
+ /**
38
+ * @notice Deposit the native asset into the lockbox, and send the XERC20 to a user
39
+ *
40
+ * @param _user The user to send the XERC20 to
41
+ */
42
+
43
+ function depositNativeTo(address _user) external payable;
44
+
45
+ /**
46
+ * @notice Withdraw ERC20 tokens from the lockbox
47
+ *
48
+ * @param _amount The amount of tokens to withdraw
49
+ */
50
+
51
+ function withdraw(uint256 _amount) external;
52
+
53
+ /**
54
+ * @notice Withdraw ERC20 tokens from the lockbox
55
+ *
56
+ * @param _user The user to withdraw to
57
+ * @param _amount The amount of tokens to withdraw
58
+ */
59
+
60
+ function withdrawTo(address _user, uint256 _amount) external;
61
+ }
@@ -10,6 +10,13 @@ library TokenMessage {
10
10
  return abi.encodePacked(_recipient, _amount, _metadata);
11
11
  }
12
12
 
13
+ function format(
14
+ bytes32 _recipient,
15
+ uint256 _amount
16
+ ) internal pure returns (bytes memory) {
17
+ return abi.encodePacked(_recipient, _amount);
18
+ }
19
+
13
20
  function recipient(bytes calldata message) internal pure returns (bytes32) {
14
21
  return bytes32(message[0:32]);
15
22
  }