Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

⬆️ Update aave-helpers lib #30

Merged
merged 12 commits into from
Feb 4, 2025
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
url = https://github.com/bgd-labs/aave-capo
[submodule "lib/aave-helpers"]
path = lib/aave-helpers
url = https://github.com/bgd-labs/aave-helpers
url = https://github.com/bgd-labs/aave-helpers
4 changes: 2 additions & 2 deletions foundry.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ src = 'src'
test = 'tests'
script = 'scripts'
out = 'out'
solc = '0.8.20'
solc = '0.8.22'
optimizer = true
optimizer_runs = 200
libs = ['lib']
Expand All @@ -18,7 +18,7 @@ src = 'zksync'
test = 'zksync'
script = 'scripts'
libs = ['lib']
solc = '0.8.20'
solc = '0.8.22'
fs_permissions = [{ access = "write", path = "./reports" }]
ffi = true
evm_version = 'shanghai'
Expand Down
16 changes: 10 additions & 6 deletions generator/utils/importsResolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,13 @@ function generateRiskStewardImport(code: string) {
const match = code.match(/RiskStewards(\w+)/);

if (match) {
imports = `import {RiskStewards${match[1]}} from '${match[1] == 'ZkSync' ? '../' : ''}../../../../scripts/networks/RiskStewards${match[1]}.s.sol';\n`;
imports = `import {RiskStewards${match[1]}} from '${
match[1] == 'ZkSync' ? '../' : ''
}../../../../scripts/networks/RiskStewards${match[1]}.s.sol';\n`;
if (findMatch(code, 'IRiskSteward')) {
imports += `import {IRiskSteward${findMatch(code, 'IPriceCapAdapter') ? ', IPriceCapAdapter': ''}} from '../../../interfaces/IRiskSteward.sol';\n`;
imports += `import {IRiskSteward${
findMatch(code, 'IPriceCapAdapter') ? ', IPriceCapAdapter' : ''
}} from '../../../interfaces/IRiskSteward.sol';\n`;
}
}
return imports;
Expand All @@ -52,9 +56,9 @@ function generateRiskStewardImport(code: string) {
function generateEngineImport(code: string) {
const matches = [...code.matchAll(/Aave(V[2..3])Payload([A-Za-z]+)/g)].flat();
if (matches.length > 0)
return `import {${matches[0]}} from 'aave-helpers/src/${matches[1].toLowerCase()}-config-engine/${
return `import {${
matches[0]
}.sol';\n`;
}} from 'aave-helpers/src/${matches[1].toLowerCase()}-config-engine/${matches[0]}.sol';\n`;
}

function findMatches(code: string, needles: string[] | readonly string[]) {
Expand Down Expand Up @@ -110,10 +114,10 @@ export function prefixWithImports(code: string) {
}
// common imports
if (findMatch(code, 'IERC20')) {
imports += `import {IERC20} from 'solidity-utils/contracts/oz-common/interfaces/IERC20.sol';\n`;
imports += `import {IERC20} from 'openzeppelin-contracts/contracts/token/ERC20/IERC20.sol';\n`;
}
if (findMatch(code, 'forceApprove')) {
imports += `import {SafeERC20} from 'solidity-utils/contracts/oz-common/SafeERC20.sol';\n`;
imports += `import {SafeERC20} from 'openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol';\n`;
}
if (findMatch(code, 'GovernanceV3Ethereum')) {
imports += `import {GovernanceV3Ethereum} from 'aave-address-book/GovernanceV3Ethereum.sol';\n`;
Expand Down
2 changes: 1 addition & 1 deletion lib/aave-helpers
Submodule aave-helpers updated 73 files
+3 −3 .github/dependabot.yml
+2 −2 .gitignore
+7 −0 .prettierignore
+145 −165 CHANGELOG.md
+1 −1 diffs/AMMTEST_before_AMMTEST_after.md
+1 −1 diffs/adi_test_adi_diffs_before_adi_test_adi_diffs_after.md
+32 −2 diffs/default_before_default_after.md
+14 −14 diffs/preTestV2RatesUpdates_postTestV2RatesUpdates.md
+2 −574 diffs/zksync_before_zksync_after.md
+17 −7 foundry.toml
+1 −1 lib/aave-address-book
+1 −1 lib/forge-std
+2,123 −0 package-lock.json
+2 −3 package.json
+3 −8 scripts/AaveSwapperDeployment.s.sol
+0 −22 scripts/AaveWstethWithdrawerDeployment.s.sol
+1 −1 scripts/DeployBridges.s.sol
+3 −2 scripts/V2RateStrategyFactory.s.sol
+2 −2 src/CollectorUtils.sol
+2 −2 src/CommonTestBase.sol
+1 −2 src/GovV3Helpers.sol
+3 −3 src/ProtocolV2TestBase.sol
+7 −3 src/ProtocolV3TestBase.sol
+0 −114 src/asset-manager/AaveWstethWithdrawer.sol
+0 −14 src/asset-manager/Common.sol
+0 −41 src/asset-manager/LSDLiquidityGaugeManager.sol
+0 −192 src/asset-manager/README.md
+0 −42 src/asset-manager/StrategicAssetsManager.sol
+0 −224 src/asset-manager/VeTokenManager.sol
+0 −72 src/asset-manager/VlTokenManager.sol
+ src/asset-manager/images/AaveWstethWithdrawer.png
+0 −74 src/asset-manager/interfaces/IAaveWstethWithdrawer.sol
+0 −16 src/asset-manager/interfaces/IDelegateRegistry.sol
+0 −12 src/asset-manager/interfaces/ILiquidityGaugeController.sol
+0 −27 src/asset-manager/interfaces/IVeToken.sol
+0 −45 src/asset-manager/interfaces/IVlToken.sol
+0 −90 src/asset-manager/interfaces/IWardenBoost.sol
+4 −6 src/bridges/arbitrum/AaveArbEthERC20Bridge.sol
+4 −6 src/bridges/optimism/AaveOpEthERC20Bridge.sol
+4 −6 src/bridges/polygon/AavePolEthERC20Bridge.sol
+4 −6 src/bridges/polygon/AavePolEthPlasmaBridge.sol
+1 −1 src/dependencies/DefaultReserveInterestRateStrategy.sol
+1 −1 src/riskstewards/CapsPlusRiskSteward.sol
+0 −1 src/riskstewards/ICapsPlusRiskSteward.sol
+10 −10 src/swaps/AaveSwapper.sol
+2 −2 src/swaps/BaseSwapPayload.sol
+2 −2 src/swaps/DepositV2SwapPayload.sol
+2 −2 src/swaps/DepositV3SwapPayload.sol
+0 −3 src/swaps/interfaces/IAaveSwapper.sol
+1 −1 src/swaps/interfaces/IMilkman.sol
+1 −1 src/v2-config-engine/AaveV2Payload.sol
+1 −1 src/v2-config-engine/V2RateStrategyFactory.sol
+1 −1 tests/CollectorUtils.t.sol
+1 −1 tests/GovV3Test.t.sol
+1 −1 tests/ProtocolV2TestBase.t.sol
+0 −245 tests/asset-manager/AaveWstethWithdrawerTest.t.sol
+0 −120 tests/asset-manager/TestLSDLiquidityGaugeManager.t.sol
+0 −125 tests/asset-manager/TestStrategicAssetsManager.t.sol
+0 −529 tests/asset-manager/TestVeTokenManager.t.sol
+0 −251 tests/asset-manager/TestVlTokenManager.t.sol
+8 −4 tests/bridges/arbitrum/AaveArbEthERC20BridgeTest.t.sol
+6 −6 tests/bridges/arbitrum/ArbSysMock.sol
+8 −4 tests/bridges/optimism/AaveOpEthERC20BridgeTest.t.sol
+8 −4 tests/bridges/polygon/AavePolEthERC20BridgeTest.t.sol
+8 −4 tests/bridges/polygon/AavePolEthPlasmaBridge.t.sol
+18 −13 tests/swaps/AaveSwapperTest.t.sol
+1 −1 tests/swaps/DepositV2SwapPayloadTest.t.sol
+1 −1 tests/swaps/DepositV3SwapPayloadTest.t.sol
+1 −1 tests/v2-config-engine/AaveV2ConfigEngineTest.t.sol
+0 −1,041 yarn.lock
+7 −3 zksync/src/ProtocolV3TestBase.sol
+2 −2 zksync/src/SnapshotHelpersV3.sol
+22 −0 zksync/tests/ProtocolV3TestBase.t.sol
1 change: 1 addition & 0 deletions remappings.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ lib/aave-helpers:aave-v3-origin/=lib/aave-helpers/lib/aave-address-book/lib/aave
aave-v3-origin/=lib/aave-helpers/lib/aave-address-book/lib/aave-v3-origin/
aave-capo/=lib/aave-capo/src
lib/aave-capo:cl-synchronicity-price-adapter/=lib/aave-capo/lib/cl-synchronicity-price-adapter/src/
openzeppelin-contracts/=lib/aave-helpers/lib/aave-address-book/lib/aave-v3-origin/lib/solidity-utils/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/
82 changes: 49 additions & 33 deletions report/contracts/src/contracts/RiskSteward.sol.gcov.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,22 @@

<body>

<table width="100%" border=0 cellspacing=0 cellpadding=0>
<tr><td class="title">LCOV - code coverage report</td></tr>
<tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr>
<table width="100%" border=0 cellspacing=0 cellpadding=0>
<tr>
<td class="title">LCOV - code coverage report</td>
</tr>
<tr>
<td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td>
</tr>

<tr>
<td width="100%">
<table cellpadding=1 border=0 width="100%">
<tr>
<td width="100%">
<table cellpadding=1 border=0 width="100%">
<tr>
<td width="10%" class="headerItem">Current view:</td>
<td width="10%" class="headerValue"><a href="../../../index.html">top level</a> - <a href="index.html">contracts/src/contracts</a> - RiskSteward.sol<span style="font-size: 80%;"> (source / <a href="RiskSteward.sol.func-c.html">functions</a>)</span></td>
<td width="10%" class="headerValue"><a href="../../../index.html">top level</a> - <a
href="index.html">contracts/src/contracts</a> - RiskSteward.sol<span style="font-size: 80%;"> (source /
<a href="RiskSteward.sol.func-c.html">functions</a>)</span></td>
<td width="5%"></td>
<td width="5%"></td>
<td width="5%" class="headerCovTableHead">Coverage</td>
Expand Down Expand Up @@ -53,29 +59,33 @@
<td class="headerCovTableEntry">0</td>
<td class="headerCovTableEntry">0</td>
</tr>
<tr><td><img src="../../../glass.png" width=3 height=3 alt=""></td></tr>
</table>
</td>
</tr>
<tr>
<td><img src="../../../glass.png" width=3 height=3 alt=""></td>
</tr>
</table>
</td>
</tr>

<tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr>
</table>
<tr>
<td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td>
</tr>
</table>

<table cellpadding=0 cellspacing=0 border=0>
<tr>
<td><br></td>
</tr>
<tr>
<td>
<pre class="sourceHeading"> Branch data Line data Source code</pre>
<pre class="source">
<table cellpadding=0 cellspacing=0 border=0>
<tr>
<td><br></td>
</tr>
<tr>
<td>
<pre class="sourceHeading"> Branch data Line data Source code</pre>
<pre class="source">
<span id="L1"><span class="lineNum"> 1</span> : : // SPDX-License-Identifier: BUSL-1.1</span>
<span id="L2"><span class="lineNum"> 2</span> : : pragma solidity ^0.8.0;</span>
<span id="L3"><span class="lineNum"> 3</span> : : </span>
<span id="L4"><span class="lineNum"> 4</span> : : import {IPoolDataProvider} from 'aave-address-book/AaveV3.sol';</span>
<span id="L5"><span class="lineNum"> 5</span> : : import {Address} from 'solidity-utils/contracts/oz-common/Address.sol';</span>
<span id="L5"><span class="lineNum"> 5</span> : : import {Address} from 'openzeppelin-contracts/contracts/utils/Address.sol';</span>
<span id="L6"><span class="lineNum"> 6</span> : : import {EngineFlags} from 'aave-helpers/v3-config-engine/EngineFlags.sol';</span>
<span id="L7"><span class="lineNum"> 7</span> : : import {Ownable} from 'solidity-utils/contracts/oz-common/Ownable.sol';</span>
<span id="L7"><span class="lineNum"> 7</span> : : import {Ownable} from 'openzeppelin-contracts/contracts/access/Ownable.sol';</span>
<span id="L8"><span class="lineNum"> 8</span> : : import {IAaveV3ConfigEngine as IEngine} from 'aave-v3-origin/periphery/contracts/v3-config-engine/AaveV3ConfigEngine.sol';</span>
<span id="L9"><span class="lineNum"> 9</span> : : import {IRiskSteward} from '../interfaces/IRiskSteward.sol';</span>
<span id="L10"><span class="lineNum"> 10</span> : : import {IDefaultInterestRateStrategyV2} from 'aave-v3-origin/core/contracts/interfaces/IDefaultInterestRateStrategyV2.sol';</span>
Expand Down Expand Up @@ -509,16 +519,22 @@
<span id="L438"><span class="lineNum"> 438</span> : : }</span>
<span id="L439"><span class="lineNum"> 439</span> : : }</span>
</pre>
</td>
</tr>
</table>
<br>
</td>
</tr>
</table>
<br>

<table width="100%" border=0 cellspacing=0 cellpadding=0>
<tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr>
<tr><td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV version 2.0-1</a></td></tr>
</table>
<br>
<table width="100%" border=0 cellspacing=0 cellpadding=0>
<tr>
<td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td>
</tr>
<tr>
<td class="versionInfo">Generated by: <a href="https://github.com//linux-test-project/lcov" target="_parent">LCOV
version 2.0-1</a></td>
</tr>
</table>
<br>

</body>
</html>

</html>
16 changes: 9 additions & 7 deletions src/contracts/AaveStewardInjector.sol
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {IRiskOracle} from './dependencies/IRiskOracle.sol';
import {IRiskSteward} from '../interfaces/IRiskSteward.sol';
import {IAaveStewardInjector, AutomationCompatibleInterface} from '../interfaces/IAaveStewardInjector.sol';
import {IAaveV3ConfigEngine as IEngine} from 'aave-v3-origin/src/contracts/extensions/v3-config-engine/IAaveV3ConfigEngine.sol';
import {Ownable} from 'solidity-utils/contracts/oz-common/Ownable.sol';
import {Ownable} from 'openzeppelin-contracts/contracts/access/Ownable.sol';

/**
* @title AaveStewardInjector
Expand Down Expand Up @@ -45,11 +45,15 @@ contract AaveStewardInjector is Ownable, IAaveStewardInjector {
* @param guardian address of the guardian / owner of the stewards injector.
* @param whitelistedAsset address of the whitelisted asset for which update can be injected.
*/
constructor(address riskOracle, address riskSteward, address guardian, address whitelistedAsset) {
constructor(
address riskOracle,
address riskSteward,
address guardian,
address whitelistedAsset
) Ownable(guardian) {
RISK_ORACLE = riskOracle;
RISK_STEWARD = riskSteward;
WHITELISTED_ASSET = whitelistedAsset;
_transferOwnership(guardian);
}

/**
Expand Down Expand Up @@ -108,13 +112,11 @@ contract AaveStewardInjector is Ownable, IAaveStewardInjector {
function _canUpdateBeInjected(
IRiskOracle.RiskParameterUpdate memory updateRiskParams
) internal view returns (bool) {
return (
!isUpdateIdExecuted(updateRiskParams.updateId) &&
return (!isUpdateIdExecuted(updateRiskParams.updateId) &&
(updateRiskParams.timestamp + EXPIRATION_PERIOD > block.timestamp) &&
updateRiskParams.market == WHITELISTED_ASSET &&
keccak256(bytes(updateRiskParams.updateType)) == keccak256(bytes(WHITELISTED_UPDATE_TYPE)) &&
!isDisabled(updateRiskParams.updateId)
);
!isDisabled(updateRiskParams.updateId));
}

/**
Expand Down
8 changes: 4 additions & 4 deletions src/contracts/RiskSteward.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
pragma solidity ^0.8.0;

import {IPoolDataProvider} from 'aave-address-book/AaveV3.sol';
import {Address} from 'solidity-utils/contracts/oz-common/Address.sol';
import {SafeCast} from 'solidity-utils/contracts/oz-common/SafeCast.sol';
import {Address} from 'openzeppelin-contracts/contracts/utils/Address.sol';
import {SafeCast} from 'openzeppelin-contracts/contracts/utils/math/SafeCast.sol';
import {EngineFlags} from 'aave-v3-origin/src/contracts/extensions/v3-config-engine/EngineFlags.sol';
import {Ownable} from 'solidity-utils/contracts/oz-common/Ownable.sol';
import {Ownable} from 'openzeppelin-contracts/contracts/access/Ownable.sol';
import {IAaveV3ConfigEngine as IEngine} from 'aave-v3-origin/src/contracts/extensions/v3-config-engine/IAaveV3ConfigEngine.sol';
import {IRiskSteward} from '../interfaces/IRiskSteward.sol';
import {IDefaultInterestRateStrategyV2} from 'aave-v3-origin/src/contracts/interfaces/IDefaultInterestRateStrategyV2.sol';
Expand Down Expand Up @@ -59,7 +59,7 @@ contract RiskSteward is Ownable, IRiskSteward {
IEngine engine,
address riskCouncil,
Config memory riskConfig
) {
) Ownable(riskCouncil) {
POOL_DATA_PROVIDER = poolDataProvider;
CONFIG_ENGINE = engine;
RISK_COUNCIL = riskCouncil;
Expand Down
2 changes: 1 addition & 1 deletion tests/RiskStewardCapo.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import {ConfigEngineDeployer} from './utils/ConfigEngineDeployer.sol';
import {IPriceCapAdapter} from 'aave-capo/interfaces/IPriceCapAdapter.sol';
import {IPriceCapAdapterStable, IChainlinkAggregator} from 'aave-capo/interfaces/IPriceCapAdapterStable.sol';
import {PriceCapAdapterStable} from 'aave-capo/contracts/PriceCapAdapterStable.sol';
import {SafeCast} from 'solidity-utils/contracts/oz-common/SafeCast.sol';
import {SafeCast} from 'openzeppelin-contracts/contracts/utils/math/SafeCast.sol';

contract RiskSteward_Capo_Test is Test {
using SafeCast for uint256;
Expand Down
Loading