@hyperlane-xyz/core 3.10.1-beta1 → 3.11.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 (121) hide show
  1. package/contracts/test/ERC20Test.sol +38 -0
  2. package/contracts/token/{HypERC20CollateralVaultDeposit.sol → extensions/HypERC20CollateralVaultDeposit.sol} +1 -1
  3. package/contracts/token/extensions/HypFiatTokenCollateral.sol +32 -0
  4. package/contracts/token/extensions/HypXERC20Collateral.sol +26 -0
  5. package/contracts/token/interfaces/IFiatToken.sol +24 -0
  6. package/contracts/token/interfaces/IXERC20.sol +24 -0
  7. package/dist/buildArtifact.d.ts +1 -0
  8. package/dist/buildArtifact.js +2 -0
  9. package/dist/buildArtifact.json +1 -0
  10. package/dist/contracts/test/{ERC20Test.d.ts → ERC20Test.sol/ERC20Test.d.ts} +1 -1
  11. package/dist/contracts/test/ERC20Test.sol/ERC20Test.d.ts.map +1 -0
  12. package/dist/contracts/test/ERC20Test.sol/ERC20Test.js.map +1 -0
  13. package/dist/contracts/test/ERC20Test.sol/FiatTokenTest.d.ts +423 -0
  14. package/dist/contracts/test/ERC20Test.sol/FiatTokenTest.d.ts.map +1 -0
  15. package/dist/contracts/test/ERC20Test.sol/FiatTokenTest.js +2 -0
  16. package/dist/contracts/test/ERC20Test.sol/FiatTokenTest.js.map +1 -0
  17. package/dist/contracts/test/ERC20Test.sol/XERC20Test.d.ts +423 -0
  18. package/dist/contracts/test/ERC20Test.sol/XERC20Test.d.ts.map +1 -0
  19. package/dist/contracts/test/ERC20Test.sol/XERC20Test.js +2 -0
  20. package/dist/contracts/test/ERC20Test.sol/XERC20Test.js.map +1 -0
  21. package/dist/contracts/test/ERC20Test.sol/index.d.ts +4 -0
  22. package/dist/contracts/test/ERC20Test.sol/index.d.ts.map +1 -0
  23. package/dist/contracts/test/ERC20Test.sol/index.js +2 -0
  24. package/dist/contracts/test/ERC20Test.sol/index.js.map +1 -0
  25. package/dist/contracts/test/index.d.ts +2 -1
  26. package/dist/contracts/test/index.d.ts.map +1 -1
  27. package/dist/contracts/token/{HypERC20CollateralVaultDeposit.d.ts → extensions/HypERC20CollateralVaultDeposit.d.ts} +1 -1
  28. package/dist/contracts/token/extensions/HypERC20CollateralVaultDeposit.d.ts.map +1 -0
  29. package/dist/contracts/token/extensions/HypERC20CollateralVaultDeposit.js.map +1 -0
  30. package/dist/contracts/token/extensions/HypFiatTokenCollateral.d.ts +646 -0
  31. package/dist/contracts/token/extensions/HypFiatTokenCollateral.d.ts.map +1 -0
  32. package/dist/contracts/token/extensions/HypFiatTokenCollateral.js +2 -0
  33. package/dist/contracts/token/extensions/HypFiatTokenCollateral.js.map +1 -0
  34. package/dist/contracts/token/extensions/HypXERC20Collateral.d.ts +646 -0
  35. package/dist/contracts/token/extensions/HypXERC20Collateral.d.ts.map +1 -0
  36. package/dist/contracts/token/extensions/HypXERC20Collateral.js +2 -0
  37. package/dist/contracts/token/extensions/HypXERC20Collateral.js.map +1 -0
  38. package/dist/contracts/token/extensions/index.d.ts +3 -0
  39. package/dist/contracts/token/extensions/index.d.ts.map +1 -1
  40. package/dist/contracts/token/index.d.ts +2 -1
  41. package/dist/contracts/token/index.d.ts.map +1 -1
  42. package/dist/contracts/token/interfaces/IFiatToken.d.ts +269 -0
  43. package/dist/contracts/token/interfaces/IFiatToken.d.ts.map +1 -0
  44. package/dist/contracts/token/interfaces/IFiatToken.js +2 -0
  45. package/dist/contracts/token/interfaces/IFiatToken.js.map +1 -0
  46. package/dist/contracts/token/interfaces/IXERC20.d.ts +269 -0
  47. package/dist/contracts/token/interfaces/IXERC20.d.ts.map +1 -0
  48. package/dist/contracts/token/interfaces/IXERC20.js +2 -0
  49. package/dist/contracts/token/interfaces/IXERC20.js.map +1 -0
  50. package/dist/contracts/token/interfaces/index.d.ts +3 -0
  51. package/dist/contracts/token/interfaces/index.d.ts.map +1 -0
  52. package/dist/contracts/token/interfaces/index.js +2 -0
  53. package/dist/contracts/token/interfaces/index.js.map +1 -0
  54. package/dist/factories/contracts/test/{ERC20Test__factory.d.ts → ERC20Test.sol/ERC20Test__factory.d.ts} +2 -2
  55. package/dist/factories/contracts/test/ERC20Test.sol/ERC20Test__factory.d.ts.map +1 -0
  56. package/dist/factories/contracts/test/{ERC20Test__factory.js → ERC20Test.sol/ERC20Test__factory.js} +1 -1
  57. package/dist/factories/contracts/test/ERC20Test.sol/ERC20Test__factory.js.map +1 -0
  58. package/dist/factories/contracts/test/ERC20Test.sol/FiatTokenTest__factory.d.ts +309 -0
  59. package/dist/factories/contracts/test/ERC20Test.sol/FiatTokenTest__factory.d.ts.map +1 -0
  60. package/dist/factories/contracts/test/ERC20Test.sol/FiatTokenTest__factory.js +416 -0
  61. package/dist/factories/contracts/test/ERC20Test.sol/FiatTokenTest__factory.js.map +1 -0
  62. package/dist/factories/contracts/test/ERC20Test.sol/XERC20Test__factory.d.ts +309 -0
  63. package/dist/factories/contracts/test/ERC20Test.sol/XERC20Test__factory.d.ts.map +1 -0
  64. package/dist/factories/contracts/test/ERC20Test.sol/XERC20Test__factory.js +415 -0
  65. package/dist/factories/contracts/test/ERC20Test.sol/XERC20Test__factory.js.map +1 -0
  66. package/dist/factories/contracts/test/ERC20Test.sol/index.d.ts +4 -0
  67. package/dist/factories/contracts/test/ERC20Test.sol/index.d.ts.map +1 -0
  68. package/dist/factories/contracts/test/ERC20Test.sol/index.js +7 -0
  69. package/dist/factories/contracts/test/ERC20Test.sol/index.js.map +1 -0
  70. package/dist/factories/contracts/test/index.d.ts +1 -1
  71. package/dist/factories/contracts/test/index.d.ts.map +1 -1
  72. package/dist/factories/contracts/test/index.js +1 -1
  73. package/dist/factories/contracts/test/index.js.map +1 -1
  74. package/dist/factories/contracts/token/{HypERC20CollateralVaultDeposit__factory.d.ts → extensions/HypERC20CollateralVaultDeposit__factory.d.ts} +2 -2
  75. package/dist/factories/contracts/token/extensions/HypERC20CollateralVaultDeposit__factory.d.ts.map +1 -0
  76. package/dist/factories/contracts/token/{HypERC20CollateralVaultDeposit__factory.js → extensions/HypERC20CollateralVaultDeposit__factory.js} +1 -1
  77. package/dist/factories/contracts/token/extensions/HypERC20CollateralVaultDeposit__factory.js.map +1 -0
  78. package/dist/factories/contracts/token/extensions/HypFiatTokenCollateral__factory.d.ts +429 -0
  79. package/dist/factories/contracts/token/extensions/HypFiatTokenCollateral__factory.d.ts.map +1 -0
  80. package/dist/factories/contracts/token/extensions/HypFiatTokenCollateral__factory.js +569 -0
  81. package/dist/factories/contracts/token/extensions/HypFiatTokenCollateral__factory.js.map +1 -0
  82. package/dist/factories/contracts/token/extensions/HypXERC20Collateral__factory.d.ts +429 -0
  83. package/dist/factories/contracts/token/extensions/HypXERC20Collateral__factory.d.ts.map +1 -0
  84. package/dist/factories/contracts/token/extensions/HypXERC20Collateral__factory.js +569 -0
  85. package/dist/factories/contracts/token/extensions/HypXERC20Collateral__factory.js.map +1 -0
  86. package/dist/factories/contracts/token/extensions/index.d.ts +3 -0
  87. package/dist/factories/contracts/token/extensions/index.d.ts.map +1 -1
  88. package/dist/factories/contracts/token/extensions/index.js +3 -0
  89. package/dist/factories/contracts/token/extensions/index.js.map +1 -1
  90. package/dist/factories/contracts/token/index.d.ts +1 -1
  91. package/dist/factories/contracts/token/index.d.ts.map +1 -1
  92. package/dist/factories/contracts/token/index.js +1 -1
  93. package/dist/factories/contracts/token/index.js.map +1 -1
  94. package/dist/factories/contracts/token/interfaces/IFiatToken__factory.d.ts +177 -0
  95. package/dist/factories/contracts/token/interfaces/IFiatToken__factory.d.ts.map +1 -0
  96. package/dist/factories/contracts/token/interfaces/IFiatToken__factory.js +236 -0
  97. package/dist/factories/contracts/token/interfaces/IFiatToken__factory.js.map +1 -0
  98. package/dist/factories/contracts/token/interfaces/IXERC20__factory.d.ts +177 -0
  99. package/dist/factories/contracts/token/interfaces/IXERC20__factory.d.ts.map +1 -0
  100. package/dist/factories/contracts/token/interfaces/IXERC20__factory.js +235 -0
  101. package/dist/factories/contracts/token/interfaces/IXERC20__factory.js.map +1 -0
  102. package/dist/factories/contracts/token/interfaces/index.d.ts +3 -0
  103. package/dist/factories/contracts/token/interfaces/index.d.ts.map +1 -0
  104. package/dist/factories/contracts/token/interfaces/index.js +6 -0
  105. package/dist/factories/contracts/token/interfaces/index.js.map +1 -0
  106. package/dist/index.d.ts +16 -4
  107. package/dist/index.d.ts.map +1 -1
  108. package/dist/index.js +8 -2
  109. package/dist/index.js.map +1 -1
  110. package/package.json +5 -5
  111. package/buildArtifact.json +0 -1
  112. package/dist/contracts/test/ERC20Test.d.ts.map +0 -1
  113. package/dist/contracts/test/ERC20Test.js.map +0 -1
  114. package/dist/contracts/token/HypERC20CollateralVaultDeposit.d.ts.map +0 -1
  115. package/dist/contracts/token/HypERC20CollateralVaultDeposit.js.map +0 -1
  116. package/dist/factories/contracts/test/ERC20Test__factory.d.ts.map +0 -1
  117. package/dist/factories/contracts/test/ERC20Test__factory.js.map +0 -1
  118. package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.d.ts.map +0 -1
  119. package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.js.map +0 -1
  120. /package/dist/contracts/test/{ERC20Test.js → ERC20Test.sol/ERC20Test.js} +0 -0
  121. /package/dist/contracts/token/{HypERC20CollateralVaultDeposit.js → extensions/HypERC20CollateralVaultDeposit.js} +0 -0
@@ -3,6 +3,9 @@ pragma solidity >=0.8.0;
3
3
 
4
4
  import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
5
5
 
6
+ import "../token/interfaces/IXERC20.sol";
7
+ import "../token/interfaces/IFiatToken.sol";
8
+
6
9
  contract ERC20Test is ERC20 {
7
10
  uint8 public immutable _decimals;
8
11
 
@@ -28,3 +31,38 @@ contract ERC20Test is ERC20 {
28
31
  _mint(account, amount);
29
32
  }
30
33
  }
34
+
35
+ contract FiatTokenTest is ERC20Test, IFiatToken {
36
+ constructor(
37
+ string memory name,
38
+ string memory symbol,
39
+ uint256 totalSupply,
40
+ uint8 __decimals
41
+ ) ERC20Test(name, symbol, totalSupply, __decimals) {}
42
+
43
+ function burn(uint256 amount) public override {
44
+ _burn(msg.sender, amount);
45
+ }
46
+
47
+ function mint(address account, uint256 amount) public returns (bool) {
48
+ _mint(account, amount);
49
+ return true;
50
+ }
51
+ }
52
+
53
+ contract XERC20Test is ERC20Test, IXERC20 {
54
+ constructor(
55
+ string memory name,
56
+ string memory symbol,
57
+ uint256 totalSupply,
58
+ uint8 __decimals
59
+ ) ERC20Test(name, symbol, totalSupply, __decimals) {}
60
+
61
+ function mint(address account, uint256 amount) public override {
62
+ _mint(account, amount);
63
+ }
64
+
65
+ function burn(address account, uint256 amount) public override {
66
+ _burn(account, amount);
67
+ }
68
+ }
@@ -1,7 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity >=0.8.0;
3
3
  import "@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol";
4
- import {HypERC20Collateral} from "./HypERC20Collateral.sol";
4
+ import {HypERC20Collateral} from "../HypERC20Collateral.sol";
5
5
 
6
6
  /**
7
7
  * @title Hyperlane ERC20 Token Collateral with deposits collateral to a vault
@@ -0,0 +1,32 @@
1
+ pragma solidity >=0.8.0;
2
+
3
+ import {IFiatToken} from "../interfaces/IFiatToken.sol";
4
+ import {HypERC20Collateral} from "../HypERC20Collateral.sol";
5
+
6
+ // see https://github.com/circlefin/stablecoin-evm/blob/master/doc/tokendesign.md#issuing-and-destroying-tokens
7
+ contract HypFiatTokenCollateral is HypERC20Collateral {
8
+ constructor(
9
+ address _fiatToken,
10
+ address _mailbox
11
+ ) HypERC20Collateral(_fiatToken, _mailbox) {}
12
+
13
+ function _transferFromSender(
14
+ uint256 _amount
15
+ ) internal override returns (bytes memory metadata) {
16
+ // transfer amount to address(this)
17
+ metadata = super._transferFromSender(_amount);
18
+ // burn amount of address(this) balance
19
+ IFiatToken(address(wrappedToken)).burn(_amount);
20
+ }
21
+
22
+ function _transferTo(
23
+ address _recipient,
24
+ uint256 _amount,
25
+ bytes calldata /*metadata*/
26
+ ) internal override {
27
+ require(
28
+ IFiatToken(address(wrappedToken)).mint(_recipient, _amount),
29
+ "FiatToken mint failed"
30
+ );
31
+ }
32
+ }
@@ -0,0 +1,26 @@
1
+ pragma solidity >=0.8.0;
2
+
3
+ import {IXERC20} from "../interfaces/IXERC20.sol";
4
+ import {HypERC20Collateral} from "../HypERC20Collateral.sol";
5
+
6
+ contract HypXERC20Collateral is HypERC20Collateral {
7
+ constructor(
8
+ address _xerc20,
9
+ address _mailbox
10
+ ) HypERC20Collateral(_xerc20, _mailbox) {}
11
+
12
+ function _transferFromSender(
13
+ uint256 _amountOrId
14
+ ) internal override returns (bytes memory metadata) {
15
+ IXERC20(address(wrappedToken)).burn(msg.sender, _amountOrId);
16
+ return "";
17
+ }
18
+
19
+ function _transferTo(
20
+ address _recipient,
21
+ uint256 _amountOrId,
22
+ bytes calldata /*metadata*/
23
+ ) internal override {
24
+ IXERC20(address(wrappedToken)).mint(_recipient, _amountOrId);
25
+ }
26
+ }
@@ -0,0 +1,24 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ pragma solidity >=0.8.0;
3
+
4
+ // adapted from https://github.com/circlefin/stablecoin-evm
5
+ import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
6
+
7
+ interface IFiatToken is IERC20 {
8
+ /**
9
+ * @notice Allows a minter to burn some of its own tokens.
10
+ * @dev The caller must be a minter, must not be blacklisted, and the amount to burn
11
+ * should be less than or equal to the account's balance.
12
+ * @param _amount the amount of tokens to be burned.
13
+ */
14
+ function burn(uint256 _amount) external;
15
+
16
+ /**
17
+ * @notice Mints fiat tokens to an address.
18
+ * @param _to The address that will receive the minted tokens.
19
+ * @param _amount The amount of tokens to mint. Must be less than or equal
20
+ * to the minterAllowance of the caller.
21
+ * @return True if the operation was successful.
22
+ */
23
+ function mint(address _to, uint256 _amount) external returns (bool);
24
+ }
@@ -0,0 +1,24 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ pragma solidity >=0.8.0;
3
+
4
+ // adapted from https://github.com/defi-wonderland/xERC20
5
+
6
+ import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
7
+
8
+ interface IXERC20 is IERC20 {
9
+ /**
10
+ * @notice Mints tokens for a user
11
+ * @dev Can only be called by a minter
12
+ * @param _user The address of the user who needs tokens minted
13
+ * @param _amount The amount of tokens being minted
14
+ */
15
+ function mint(address _user, uint256 _amount) external;
16
+
17
+ /**
18
+ * @notice Burns tokens for a user
19
+ * @dev Can only be called by a minter
20
+ * @param _user The address of the user who needs tokens burned
21
+ * @param _amount The amount of tokens being burned
22
+ */
23
+ function burn(address _user, uint256 _amount) external;
24
+ }
@@ -0,0 +1 @@
1
+ export const buildArtifact: any