// 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); } }