From 2958a119289b2c2d63fc350ff2f4725dd7fb70a8 Mon Sep 17 00:00:00 2001 From: sakulstra Date: Tue, 10 Sep 2024 08:43:54 +0200 Subject: [PATCH 1/3] refactor: interface inheritance --- src/periphery/contracts/static-a-token/StataTokenV2.sol | 8 +++++++- .../contracts/static-a-token/interfaces/IStataTokenV2.sol | 3 ++- .../static-a-token/ERC4626StataTokenUpgradeable.t.sol | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/periphery/contracts/static-a-token/StataTokenV2.sol b/src/periphery/contracts/static-a-token/StataTokenV2.sol index cab1c6ba..263b4af2 100644 --- a/src/periphery/contracts/static-a-token/StataTokenV2.sol +++ b/src/periphery/contracts/static-a-token/StataTokenV2.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.0; import {ERC20Upgradeable, ERC20PermitUpgradeable} from 'openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol'; +import {IERC20Metadata} from '@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol'; import {PausableUpgradeable} from 'openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol'; import {IPermissionlessRescuable, PermissionlessRescuable} from 'solidity-utils/contracts/utils/PermissionlessRescuable.sol'; import {IRescuableBase, RescuableBase} from 'solidity-utils/contracts/utils/RescuableBase.sol'; @@ -80,7 +81,12 @@ contract StataTokenV2 is return IACLManager(POOL_ADDRESSES_PROVIDER.getACLManager()).isEmergencyAdmin(actor); } - function decimals() public view override(ERC20Upgradeable, ERC4626Upgradeable) returns (uint8) { + function decimals() + public + view + override(IERC20Metadata, ERC20Upgradeable, ERC4626Upgradeable) + returns (uint8) + { /// @notice The initialization of ERC4626Upgradeable already assures that decimal are /// the same as the underlying asset of the StataTokenV2, e.g. decimals of WETH for stataWETH return ERC4626Upgradeable.decimals(); diff --git a/src/periphery/contracts/static-a-token/interfaces/IStataTokenV2.sol b/src/periphery/contracts/static-a-token/interfaces/IStataTokenV2.sol index 6c5227a8..c6ff413d 100644 --- a/src/periphery/contracts/static-a-token/interfaces/IStataTokenV2.sol +++ b/src/periphery/contracts/static-a-token/interfaces/IStataTokenV2.sol @@ -3,8 +3,9 @@ pragma solidity ^0.8.0; import {IERC4626StataToken} from './IERC4626StataToken.sol'; import {IERC20AaveLM} from './IERC20AaveLM.sol'; +import {IERC4626} from '@openzeppelin/contracts/interfaces/IERC4626.sol'; -interface IStataTokenV2 is IERC4626StataToken, IERC20AaveLM { +interface IStataTokenV2 is IERC4626, IERC4626StataToken, IERC20AaveLM { /** * @notice Checks if the passed actor is permissioned emergency admin. * @param actor The reward to claim diff --git a/tests/periphery/static-a-token/ERC4626StataTokenUpgradeable.t.sol b/tests/periphery/static-a-token/ERC4626StataTokenUpgradeable.t.sol index 3dbe4fcd..47461697 100644 --- a/tests/periphery/static-a-token/ERC4626StataTokenUpgradeable.t.sol +++ b/tests/periphery/static-a-token/ERC4626StataTokenUpgradeable.t.sol @@ -60,7 +60,7 @@ contract ERC4626StataTokenUpgradeableTest is TestnetProcedures { assertEq(erc4626Upgradeable.previewRedeem(shares), assets); } - function test_totalAssets_shouldbeZeroOnZeroSupply() external { + function test_totalAssets_shouldbeZeroOnZeroSupply() external view { assertEq(erc4626Upgradeable.totalAssets(), 0); } From 7adbdc858d969d5021880551017ec9d9d54fead0 Mon Sep 17 00:00:00 2001 From: sakulstra Date: Tue, 10 Sep 2024 08:59:09 +0200 Subject: [PATCH 2/3] refactor: inherit permit --- src/periphery/contracts/static-a-token/StataTokenV2.sol | 8 ++++++++ .../contracts/static-a-token/interfaces/IStataTokenV2.sol | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/periphery/contracts/static-a-token/StataTokenV2.sol b/src/periphery/contracts/static-a-token/StataTokenV2.sol index 263b4af2..1587df59 100644 --- a/src/periphery/contracts/static-a-token/StataTokenV2.sol +++ b/src/periphery/contracts/static-a-token/StataTokenV2.sol @@ -6,6 +6,7 @@ import {IERC20Metadata} from '@openzeppelin/contracts/token/ERC20/extensions/IER import {PausableUpgradeable} from 'openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol'; import {IPermissionlessRescuable, PermissionlessRescuable} from 'solidity-utils/contracts/utils/PermissionlessRescuable.sol'; import {IRescuableBase, RescuableBase} from 'solidity-utils/contracts/utils/RescuableBase.sol'; +import {IERC20Permit} from '@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol'; import {IACLManager} from '../../../core/contracts/interfaces/IACLManager.sol'; import {ERC4626Upgradeable, ERC4626StataTokenUpgradeable, IPool, Math, IERC20} from './ERC4626StataTokenUpgradeable.sol'; @@ -81,6 +82,13 @@ contract StataTokenV2 is return IACLManager(POOL_ADDRESSES_PROVIDER.getACLManager()).isEmergencyAdmin(actor); } + ///@inheritdoc IERC20Permit + function nonces( + address owner + ) public view virtual override(ERC20PermitUpgradeable, IERC20Permit) returns (uint256) { + return super.nonces(owner); + } + function decimals() public view diff --git a/src/periphery/contracts/static-a-token/interfaces/IStataTokenV2.sol b/src/periphery/contracts/static-a-token/interfaces/IStataTokenV2.sol index c6ff413d..2561d31a 100644 --- a/src/periphery/contracts/static-a-token/interfaces/IStataTokenV2.sol +++ b/src/periphery/contracts/static-a-token/interfaces/IStataTokenV2.sol @@ -4,8 +4,9 @@ pragma solidity ^0.8.0; import {IERC4626StataToken} from './IERC4626StataToken.sol'; import {IERC20AaveLM} from './IERC20AaveLM.sol'; import {IERC4626} from '@openzeppelin/contracts/interfaces/IERC4626.sol'; +import {IERC20Permit} from '@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol'; -interface IStataTokenV2 is IERC4626, IERC4626StataToken, IERC20AaveLM { +interface IStataTokenV2 is IERC4626, IERC20Permit, IERC4626StataToken, IERC20AaveLM { /** * @notice Checks if the passed actor is permissioned emergency admin. * @param actor The reward to claim From dbc27f43fe89530e76f05c3c7a0028901b211e80 Mon Sep 17 00:00:00 2001 From: sakulstra Date: Tue, 10 Sep 2024 09:00:59 +0200 Subject: [PATCH 3/3] fix: add inheritdoc --- src/periphery/contracts/static-a-token/StataTokenV2.sol | 1 + 1 file changed, 1 insertion(+) diff --git a/src/periphery/contracts/static-a-token/StataTokenV2.sol b/src/periphery/contracts/static-a-token/StataTokenV2.sol index 1587df59..0653a683 100644 --- a/src/periphery/contracts/static-a-token/StataTokenV2.sol +++ b/src/periphery/contracts/static-a-token/StataTokenV2.sol @@ -89,6 +89,7 @@ contract StataTokenV2 is return super.nonces(owner); } + ///@inheritdoc IERC20Metadata function decimals() public view