@hyperlane-xyz/core 3.12.2 → 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.
- package/README.md +1 -1
- package/contracts/test/ERC20Test.sol +12 -0
- package/contracts/token/extensions/{HypFiatTokenCollateral.sol → HypFiatToken.sol} +1 -1
- package/contracts/token/extensions/{HypXERC20Collateral.sol → HypXERC20.sol} +1 -1
- package/contracts/token/extensions/HypXERC20Lockbox.sol +48 -0
- package/contracts/token/interfaces/IXERC20.sol +15 -0
- package/contracts/token/interfaces/IXERC20Lockbox.sol +61 -0
- package/contracts/token/libs/TokenMessage.sol +7 -0
- package/dist/buildArtifact.js +1 -1
- package/dist/buildArtifact.json +1 -1
- package/dist/contracts/test/ERC20Test.sol/XERC20Test.d.ts +63 -1
- package/dist/contracts/test/ERC20Test.sol/XERC20Test.d.ts.map +1 -1
- package/dist/contracts/token/extensions/{HypXERC20Collateral.d.ts → HypFiatToken.d.ts} +4 -4
- package/dist/contracts/token/extensions/HypFiatToken.d.ts.map +1 -0
- package/dist/contracts/token/extensions/HypFiatToken.js +2 -0
- package/dist/contracts/token/extensions/HypFiatToken.js.map +1 -0
- package/dist/contracts/token/extensions/{HypFiatTokenCollateral.d.ts → HypXERC20.d.ts} +4 -4
- package/dist/contracts/token/extensions/HypXERC20.d.ts.map +1 -0
- package/dist/contracts/token/extensions/HypXERC20.js +2 -0
- package/dist/contracts/token/extensions/HypXERC20.js.map +1 -0
- package/dist/contracts/token/{HypERC20CollateralVaultDeposit.d.ts → extensions/HypXERC20Lockbox.d.ts} +36 -81
- package/dist/contracts/token/extensions/HypXERC20Lockbox.d.ts.map +1 -0
- package/dist/contracts/token/extensions/HypXERC20Lockbox.js +2 -0
- package/dist/contracts/token/extensions/HypXERC20Lockbox.js.map +1 -0
- package/dist/contracts/token/extensions/index.d.ts +3 -2
- package/dist/contracts/token/extensions/index.d.ts.map +1 -1
- package/dist/contracts/token/interfaces/IXERC20.d.ts +63 -1
- package/dist/contracts/token/interfaces/IXERC20.d.ts.map +1 -1
- package/dist/contracts/token/interfaces/IXERC20Lockbox.d.ts +252 -0
- package/dist/contracts/token/interfaces/IXERC20Lockbox.d.ts.map +1 -0
- package/dist/contracts/token/interfaces/IXERC20Lockbox.js +2 -0
- package/dist/contracts/token/interfaces/IXERC20Lockbox.js.map +1 -0
- package/dist/contracts/token/interfaces/index.d.ts +1 -0
- package/dist/contracts/token/interfaces/index.d.ts.map +1 -1
- package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.js +1 -1
- package/dist/factories/contracts/isms/warp-route/RateLimitedIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/warp-route/RateLimitedIsm__factory.js +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/ERC20Test__factory.d.ts +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/ERC20Test__factory.js +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/FiatTokenTest__factory.d.ts +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/FiatTokenTest__factory.js +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/XERC20Test__factory.d.ts +29 -1
- package/dist/factories/contracts/test/ERC20Test.sol/XERC20Test__factory.d.ts.map +1 -1
- package/dist/factories/contracts/test/ERC20Test.sol/XERC20Test__factory.js +37 -1
- package/dist/factories/contracts/test/ERC20Test.sol/XERC20Test__factory.js.map +1 -1
- package/dist/factories/contracts/token/HypERC20Collateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/HypERC20Collateral__factory.js +1 -1
- package/dist/factories/contracts/token/HypERC20__factory.d.ts +1 -1
- package/dist/factories/contracts/token/HypERC20__factory.js +1 -1
- package/dist/factories/contracts/token/HypERC721Collateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/HypERC721Collateral__factory.js +1 -1
- package/dist/factories/contracts/token/HypERC721__factory.d.ts +1 -1
- package/dist/factories/contracts/token/HypERC721__factory.js +1 -1
- package/dist/factories/contracts/token/HypNative__factory.d.ts +1 -1
- package/dist/factories/contracts/token/HypNative__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypERC20CollateralVaultDeposit__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypERC20CollateralVaultDeposit__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/{HypFiatTokenCollateral__factory.d.ts → HypFiatToken__factory.d.ts} +11 -11
- package/dist/factories/contracts/token/extensions/HypFiatToken__factory.d.ts.map +1 -0
- package/dist/factories/contracts/token/extensions/{HypFiatTokenCollateral__factory.js → HypFiatToken__factory.js} +3 -3
- package/dist/factories/contracts/token/extensions/HypFiatToken__factory.js.map +1 -0
- package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.d.ts +449 -0
- package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.d.ts.map +1 -0
- package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.js +595 -0
- package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.js.map +1 -0
- package/dist/factories/contracts/token/extensions/{HypXERC20Collateral__factory.d.ts → HypXERC20__factory.d.ts} +11 -11
- package/dist/factories/contracts/token/extensions/HypXERC20__factory.d.ts.map +1 -0
- package/dist/factories/contracts/token/extensions/{HypXERC20Collateral__factory.js → HypXERC20__factory.js} +3 -3
- package/dist/factories/contracts/token/extensions/HypXERC20__factory.js.map +1 -0
- package/dist/factories/contracts/token/extensions/index.d.ts +3 -2
- package/dist/factories/contracts/token/extensions/index.d.ts.map +1 -1
- package/dist/factories/contracts/token/extensions/index.js +3 -2
- package/dist/factories/contracts/token/extensions/index.js.map +1 -1
- package/dist/factories/contracts/token/interfaces/IXERC20Lockbox__factory.d.ts +87 -0
- package/dist/factories/contracts/token/interfaces/IXERC20Lockbox__factory.d.ts.map +1 -0
- package/dist/factories/contracts/token/interfaces/IXERC20Lockbox__factory.js +117 -0
- package/dist/factories/contracts/token/interfaces/IXERC20Lockbox__factory.js.map +1 -0
- package/dist/factories/contracts/token/interfaces/IXERC20__factory.d.ts +28 -0
- package/dist/factories/contracts/token/interfaces/IXERC20__factory.d.ts.map +1 -1
- package/dist/factories/contracts/token/interfaces/IXERC20__factory.js +36 -0
- package/dist/factories/contracts/token/interfaces/IXERC20__factory.js.map +1 -1
- package/dist/factories/contracts/token/interfaces/index.d.ts +1 -0
- package/dist/factories/contracts/token/interfaces/index.d.ts.map +1 -1
- package/dist/factories/contracts/token/interfaces/index.js +1 -0
- package/dist/factories/contracts/token/interfaces/index.js.map +1 -1
- package/dist/index.d.ts +8 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/contracts/interfaces/avs/IAVSDirectory.d.ts +0 -160
- package/dist/contracts/interfaces/avs/IAVSDirectory.d.ts.map +0 -1
- package/dist/contracts/interfaces/avs/IAVSDirectory.js +0 -2
- package/dist/contracts/interfaces/avs/IAVSDirectory.js.map +0 -1
- package/dist/contracts/interfaces/avs/IDelegationManager.d.ts +0 -93
- package/dist/contracts/interfaces/avs/IDelegationManager.d.ts.map +0 -1
- package/dist/contracts/interfaces/avs/IDelegationManager.js +0 -2
- package/dist/contracts/interfaces/avs/IDelegationManager.js.map +0 -1
- package/dist/contracts/interfaces/avs/IECDSAStakeRegistryEventsAndErrors.d.ts +0 -157
- package/dist/contracts/interfaces/avs/IECDSAStakeRegistryEventsAndErrors.d.ts.map +0 -1
- package/dist/contracts/interfaces/avs/IECDSAStakeRegistryEventsAndErrors.js +0 -2
- package/dist/contracts/interfaces/avs/IECDSAStakeRegistryEventsAndErrors.js.map +0 -1
- package/dist/contracts/interfaces/avs/IPaymentCoordinator.d.ts +0 -96
- package/dist/contracts/interfaces/avs/IPaymentCoordinator.d.ts.map +0 -1
- package/dist/contracts/interfaces/avs/IPaymentCoordinator.js +0 -2
- package/dist/contracts/interfaces/avs/IPaymentCoordinator.js.map +0 -1
- package/dist/contracts/interfaces/avs/IServiceManager.d.ts +0 -250
- package/dist/contracts/interfaces/avs/IServiceManager.d.ts.map +0 -1
- package/dist/contracts/interfaces/avs/IServiceManager.js +0 -2
- package/dist/contracts/interfaces/avs/IServiceManager.js.map +0 -1
- package/dist/contracts/interfaces/avs/IServiceManagerUI.d.ts +0 -189
- package/dist/contracts/interfaces/avs/IServiceManagerUI.d.ts.map +0 -1
- package/dist/contracts/interfaces/avs/IServiceManagerUI.js +0 -2
- package/dist/contracts/interfaces/avs/IServiceManagerUI.js.map +0 -1
- package/dist/contracts/interfaces/avs/ISlasher.d.ts +0 -66
- package/dist/contracts/interfaces/avs/ISlasher.d.ts.map +0 -1
- package/dist/contracts/interfaces/avs/ISlasher.js +0 -2
- package/dist/contracts/interfaces/avs/ISlasher.js.map +0 -1
- package/dist/contracts/interfaces/avs/IStrategy.d.ts +0 -295
- package/dist/contracts/interfaces/avs/IStrategy.d.ts.map +0 -1
- package/dist/contracts/interfaces/avs/IStrategy.js +0 -2
- package/dist/contracts/interfaces/avs/IStrategy.js.map +0 -1
- package/dist/contracts/test/ERC20Test.d.ts +0 -391
- package/dist/contracts/test/ERC20Test.d.ts.map +0 -1
- package/dist/contracts/test/ERC20Test.js +0 -2
- package/dist/contracts/test/ERC20Test.js.map +0 -1
- package/dist/contracts/token/HypERC20CollateralVaultDeposit.d.ts.map +0 -1
- package/dist/contracts/token/HypERC20CollateralVaultDeposit.js +0 -2
- package/dist/contracts/token/HypERC20CollateralVaultDeposit.js.map +0 -1
- package/dist/contracts/token/extensions/HypFiatTokenCollateral.d.ts.map +0 -1
- package/dist/contracts/token/extensions/HypFiatTokenCollateral.js +0 -2
- package/dist/contracts/token/extensions/HypFiatTokenCollateral.js.map +0 -1
- package/dist/contracts/token/extensions/HypXERC20Collateral.d.ts.map +0 -1
- package/dist/contracts/token/extensions/HypXERC20Collateral.js +0 -2
- package/dist/contracts/token/extensions/HypXERC20Collateral.js.map +0 -1
- package/dist/factories/contracts/interfaces/avs/IAVSDirectory__factory.d.ts +0 -71
- package/dist/factories/contracts/interfaces/avs/IAVSDirectory__factory.d.ts.map +0 -1
- package/dist/factories/contracts/interfaces/avs/IAVSDirectory__factory.js +0 -96
- package/dist/factories/contracts/interfaces/avs/IAVSDirectory__factory.js.map +0 -1
- package/dist/factories/contracts/interfaces/avs/IDelegationManager__factory.d.ts +0 -54
- package/dist/factories/contracts/interfaces/avs/IDelegationManager__factory.d.ts.map +0 -1
- package/dist/factories/contracts/interfaces/avs/IDelegationManager__factory.js +0 -75
- package/dist/factories/contracts/interfaces/avs/IDelegationManager__factory.js.map +0 -1
- package/dist/factories/contracts/interfaces/avs/IECDSAStakeRegistryEventsAndErrors__factory.d.ts +0 -205
- package/dist/factories/contracts/interfaces/avs/IECDSAStakeRegistryEventsAndErrors__factory.d.ts.map +0 -1
- package/dist/factories/contracts/interfaces/avs/IECDSAStakeRegistryEventsAndErrors__factory.js +0 -266
- package/dist/factories/contracts/interfaces/avs/IECDSAStakeRegistryEventsAndErrors__factory.js.map +0 -1
- package/dist/factories/contracts/interfaces/avs/IPaymentCoordinator__factory.d.ts +0 -49
- package/dist/factories/contracts/interfaces/avs/IPaymentCoordinator__factory.d.ts.map +0 -1
- package/dist/factories/contracts/interfaces/avs/IPaymentCoordinator__factory.js +0 -68
- package/dist/factories/contracts/interfaces/avs/IPaymentCoordinator__factory.js.map +0 -1
- package/dist/factories/contracts/interfaces/avs/IServiceManagerUI__factory.d.ts +0 -90
- package/dist/factories/contracts/interfaces/avs/IServiceManagerUI__factory.d.ts.map +0 -1
- package/dist/factories/contracts/interfaces/avs/IServiceManagerUI__factory.js +0 -122
- package/dist/factories/contracts/interfaces/avs/IServiceManagerUI__factory.js.map +0 -1
- package/dist/factories/contracts/interfaces/avs/IServiceManager__factory.d.ts +0 -130
- package/dist/factories/contracts/interfaces/avs/IServiceManager__factory.d.ts.map +0 -1
- package/dist/factories/contracts/interfaces/avs/IServiceManager__factory.js +0 -174
- package/dist/factories/contracts/interfaces/avs/IServiceManager__factory.js.map +0 -1
- package/dist/factories/contracts/interfaces/avs/ISlasher__factory.d.ts +0 -19
- package/dist/factories/contracts/interfaces/avs/ISlasher__factory.d.ts.map +0 -1
- package/dist/factories/contracts/interfaces/avs/ISlasher__factory.js +0 -29
- package/dist/factories/contracts/interfaces/avs/ISlasher__factory.js.map +0 -1
- package/dist/factories/contracts/interfaces/avs/IStrategy__factory.d.ts +0 -173
- package/dist/factories/contracts/interfaces/avs/IStrategy__factory.d.ts.map +0 -1
- package/dist/factories/contracts/interfaces/avs/IStrategy__factory.js +0 -235
- package/dist/factories/contracts/interfaces/avs/IStrategy__factory.js.map +0 -1
- package/dist/factories/contracts/test/ERC20Test__factory.d.ts +0 -281
- package/dist/factories/contracts/test/ERC20Test__factory.d.ts.map +0 -1
- package/dist/factories/contracts/test/ERC20Test__factory.js +0 -379
- package/dist/factories/contracts/test/ERC20Test__factory.js.map +0 -1
- package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.d.ts +0 -470
- package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.d.ts.map +0 -1
- package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.js +0 -621
- package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.js.map +0 -1
- package/dist/factories/contracts/token/extensions/HypFiatTokenCollateral__factory.d.ts.map +0 -1
- package/dist/factories/contracts/token/extensions/HypFiatTokenCollateral__factory.js.map +0 -1
- package/dist/factories/contracts/token/extensions/HypXERC20Collateral__factory.d.ts.map +0 -1
- 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
|
|
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
|
|
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
|
|
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
|
}
|