ERC4626DecimalsMock.sol 900 B

123456789101112131415161718192021222324252627282930313233
  1. // SPDX-License-Identifier: MIT
  2. pragma solidity ^0.8.0;
  3. import "../../token/ERC20/extensions/ERC4626.sol";
  4. abstract contract ERC4626DecimalsMock is ERC4626 {
  5. using Math for uint256;
  6. uint8 private immutable _decimals;
  7. constructor(uint8 decimals_) {
  8. _decimals = decimals_;
  9. }
  10. function decimals() public view virtual override returns (uint8) {
  11. return _decimals;
  12. }
  13. function _initialConvertToShares(
  14. uint256 assets,
  15. Math.Rounding rounding
  16. ) internal view virtual override returns (uint256 shares) {
  17. return assets.mulDiv(10 ** decimals(), 10 ** super.decimals(), rounding);
  18. }
  19. function _initialConvertToAssets(
  20. uint256 shares,
  21. Math.Rounding rounding
  22. ) internal view virtual override returns (uint256 assets) {
  23. return shares.mulDiv(10 ** super.decimals(), 10 ** decimals(), rounding);
  24. }
  25. }