123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- // SPDX-License-Identifier: MIT
- pragma solidity ^0.8.0;
- import "../token/ERC20/extensions/ERC4626.sol";
- contract ERC4626Mock is ERC4626 {
- constructor(
- IERC20Metadata asset,
- string memory name,
- string memory symbol
- ) ERC20(name, symbol) ERC4626(asset) {}
- function mockMint(address account, uint256 amount) public {
- _mint(account, amount);
- }
- function mockBurn(address account, uint256 amount) public {
- _burn(account, amount);
- }
- }
- contract ERC4626DecimalMock is ERC4626Mock {
- using Math for uint256;
- uint8 private immutable _decimals;
- constructor(
- IERC20Metadata asset,
- string memory name,
- string memory symbol,
- uint8 decimalsOverride
- ) ERC4626Mock(asset, name, symbol) {
- _decimals = decimalsOverride;
- }
- function decimals() public view virtual override returns (uint8) {
- return _decimals;
- }
- function _initialConvertToShares(uint256 assets, Math.Rounding rounding)
- internal
- view
- virtual
- override
- returns (uint256 shares)
- {
- return assets.mulDiv(10**decimals(), 10**super.decimals(), rounding);
- }
- function _initialConvertToAssets(uint256 shares, Math.Rounding rounding)
- internal
- view
- virtual
- override
- returns (uint256 assets)
- {
- return shares.mulDiv(10**super.decimals(), 10**decimals(), rounding);
- }
- }
|