Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions config/ContractNames.sol
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ contract ContractNames {
string public constant LevelUsdReserveName = "Level USD Reserve V0.0";
string public constant LevelUsdReserveManagerName = "Level USD Reserve Manager V0.0";
string public constant LevelUsdRewardsManagerName = "Level USD Rewards Manager V0.0";
string public constant LevelUsdSwapManagerName = "Level USD Swap Manager V0.0";

string public constant LevelUsdReserveDeployer = "Level USD Reserve Deployer V0.0";
string public constant LevelERC4626OracleFactoryName = "Level ERC4626 Oracle Factory V0.0";
Expand Down
27 changes: 27 additions & 0 deletions config/deploy/BaseConfig.sol
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,22 @@ import {stdJson} from "forge-std/StdJson.sol";

import {console2} from "forge-std/console2.sol";
import {IPool} from "@level/src/v2/interfaces/aave/IPool.sol";
import {IRedemption} from "@level/src/v2/interfaces/superstate/IRedemption.sol";
import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol";
import {ERC4626OracleFactory} from "@level/src/v2/oracles/ERC4626OracleFactory.sol";

import {IMetaMorpho} from "@level/src/v2/interfaces/morpho/IMetaMorpho.sol";
import {IMetaMorphoV1_1} from "@level/src/v2/interfaces/morpho/IMetaMorphoV1_1.sol";
import {IERC4626Oracle} from "@level/src/v2/interfaces/level/IERC4626Oracle.sol";
import {IERC4626} from "@openzeppelin/contracts/interfaces/IERC4626.sol";
import {AggregatorV3Interface} from "@level/src/v2/interfaces/AggregatorV3Interface.sol";
import {IMulticall3} from "forge-std/interfaces/IMulticall3.sol";
import {PauserGuard} from "@level/src/v2/common/guard/PauserGuard.sol";
import {StrictRolesAuthority} from "@level/src/v2/auth/StrictRolesAuthority.sol";
import {LevelReserveLens} from "@level/src/v2/lens/LevelReserveLens.sol";
import {LevelReserveLensMorphoOracle} from "@level/src/v1/lens/LevelReserveLensMorphoOracle.sol";
import {ISwapRouter} from "@level/src/v2/interfaces/uniswap/ISwapRouter.sol";
import {SwapManager} from "@level/src/v2/usd/SwapManager.sol";

contract BaseConfig {
using stdJson for string;
Expand All @@ -35,6 +39,8 @@ contract BaseConfig {
LevelContracts levelContracts;
PeripheryContracts periphery;
MorphoVaults morphoVaults;
SparkVaults sparkVaults;
UmbrellaVaults umbrellaVaults;
Oracles oracles;
}

Expand All @@ -45,6 +51,21 @@ contract BaseConfig {
ERC20 slvlUsd;
ERC20 aUsdc;
ERC20 aUsdt;
ERC20 ustb;
ERC20 wrappedM;
}

struct UmbrellaVaults {
ERC4626Vault waUsdcStakeToken;
}

struct SparkVaults {
ERC4626Vault sUsdc;
}

struct ERC4626Vault {
IERC4626 vault;
IERC4626Oracle oracle;
}

struct Users {
Expand All @@ -65,6 +86,7 @@ contract BaseConfig {
ERC4626OracleFactory erc4626OracleFactory;
PauserGuard pauserGuard;
LevelReserveLens levelReserveLens;
SwapManager swapManager;
}

struct MorphoVaults {
Expand All @@ -88,12 +110,17 @@ contract BaseConfig {
IPool aaveV3;
IMulticall3 multicall3;
LevelReserveLensMorphoOracle levelReserveLensMorphoOracle;
IRedemption ustbRedemptionIdle;
ISwapRouter uniswapV3Router;
}

struct Oracles {
AggregatorV3Interface usdc;
AggregatorV3Interface usdt;
AggregatorV3Interface ustb;
AggregatorV3Interface aUsdt;
AggregatorV3Interface aUsdc;
AggregatorV3Interface mNav;
}

Config public config;
Expand Down
48 changes: 36 additions & 12 deletions config/deploy/Mainnet.sol
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import {ERC20} from "@solmate/src/tokens/ERC20.sol";
import {IPool} from "@level/src/v2/interfaces/aave/IPool.sol";
import {ERC4626OracleFactory} from "@level/src/v2/oracles/ERC4626OracleFactory.sol";
import {IERC4626Oracle} from "@level/src/v2/interfaces/level/IERC4626Oracle.sol";
import {IERC4626} from "@openzeppelin/contracts/interfaces/IERC4626.sol";
import {IMetaMorpho} from "@level/src/v2/interfaces/morpho/IMetaMorpho.sol";
import {IMetaMorphoV1_1} from "@level/src/v2/interfaces/morpho/IMetaMorphoV1_1.sol";

Expand All @@ -21,6 +22,9 @@ import {PauserGuard} from "@level/src/v2/common/guard/PauserGuard.sol";
import {StrictRolesAuthority} from "@level/src/v2/auth/StrictRolesAuthority.sol";
import {LevelReserveLens} from "@level/src/v2/lens/LevelReserveLens.sol";
import {LevelReserveLensMorphoOracle} from "@level/src/v1/lens/LevelReserveLensMorphoOracle.sol";
import {IRedemption} from "@level/src/v2/interfaces/superstate/IRedemption.sol";
import {ISwapRouter} from "@level/src/v2/interfaces/uniswap/ISwapRouter.sol";
import {SwapManager} from "@level/src/v2/usd/SwapManager.sol";

contract Mainnet is BaseConfig {
uint256 public constant chainId = 1;
Expand All @@ -38,12 +42,17 @@ contract Mainnet is BaseConfig {
lvlUsd: ERC20(0x7C1156E515aA1A2E851674120074968C905aAF37),
slvlUsd: ERC20(0x4737D9b4592B40d51e110b94c9C043c6654067Ae),
aUsdc: ERC20(0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c),
aUsdt: ERC20(0x23878914EFE38d27C4D67Ab83ed1b93A74D4086a)
aUsdt: ERC20(0x23878914EFE38d27C4D67Ab83ed1b93A74D4086a),
ustb: ERC20(0x43415eB6ff9DB7E26A15b704e7A3eDCe97d31C4e),
wrappedM: ERC20(0x437cc33344a0B27A429f795ff6B469C72698B291)
}),
oracles: Oracles({
usdc: AggregatorV3Interface(0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6),
usdt: AggregatorV3Interface(0x3E7d1eAB13ad0104d2750B8863b489D65364e32D),
ustb: AggregatorV3Interface(0x289B5036cd942e619E1Ee48670F98d214E745AAC)
ustb: AggregatorV3Interface(0x289B5036cd942e619E1Ee48670F98d214E745AAC),
aUsdt: AggregatorV3Interface(0x380adC857Cd3d0531C0821B5D52F34737C4eCDC4),
aUsdc: AggregatorV3Interface(0x95CCDE4C1bb3d56639d22185aa2f95EcfebD7F22),
mNav: AggregatorV3Interface(0xC28198Df9aee1c4990994B35ff51eFA4C769e534)
}),
users: Users({
admin: 0x343ACce723339D5A417411D8Ff57fde8886E91dc,
Expand All @@ -53,20 +62,21 @@ contract Mainnet is BaseConfig {
hexagateGatekeepers: hexagateGatekeepers
}),
levelContracts: LevelContracts({
rolesAuthority: StrictRolesAuthority(address(0)),
levelMintingV2: LevelMintingV2(address(0)),
boringVault: BoringVault(payable(address(0))),
vaultManager: VaultManager(address(0)),
rewardsManager: RewardsManager(address(0)),
rolesAuthority: StrictRolesAuthority(0xc8425ACE617acA1dDcB09Cb7784b67403440098A),
levelMintingV2: LevelMintingV2(0x9136aB0294986267b71BeED86A75eeb3336d09E1),
boringVault: BoringVault(payable(0x834D9c7688ca1C10479931dE906bCC44879A0446)),
vaultManager: VaultManager(0x5f432430C515964C299bb4F277CdAb0fCC074E25),
rewardsManager: RewardsManager(0xBD05B8B22fE4ccf093a6206C63Cc39f02345E0DA),
adminTimelock: TimelockController(payable(0x0798880E772009DDf6eF062F2Ef32c738119d086)),
erc4626OracleFactory: ERC4626OracleFactory(address(0)),
pauserGuard: PauserGuard(address(0)),
levelReserveLens: LevelReserveLens(0x29759944834e08acE755dcEA71491413f7e2CBAD)
erc4626OracleFactory: ERC4626OracleFactory(0xe0eEe186FD22485c2aDA2Eb3fc77d34D2Ae3Abd2),
pauserGuard: PauserGuard(0x9f3328E60Cb9418dBde038B54d588dFEA2C0B6f9),
levelReserveLens: LevelReserveLens(0x29759944834e08acE755dcEA71491413f7e2CBAD), // update impl to: 0xF56c770c4E021848ac7D1DB67D48AA1B4b56e02f
swapManager: SwapManager(address(0))
}),
morphoVaults: MorphoVaults({
steakhouseUsdc: MetaMorphoVault({
vault: IMetaMorpho(0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB),
oracle: IERC4626Oracle(address(0))
oracle: IERC4626Oracle(0x9E42af55431E15fb25615a9E57B028117f0Bee5a)
}),
steakhouseUsdt: MetaMorphoVault({
vault: IMetaMorpho(0xbEef047a543E45807105E51A8BBEFCc5950fcfBa),
Expand All @@ -81,10 +91,24 @@ contract Mainnet is BaseConfig {
oracle: IERC4626Oracle(address(0))
})
}),
sparkVaults: SparkVaults({
sUsdc: ERC4626Vault({
vault: IERC4626(0xBc65ad17c5C0a2A4D159fa5a503f4992c7B545FE),
oracle: IERC4626Oracle(address(0))
})
}),
umbrellaVaults: UmbrellaVaults({
waUsdcStakeToken: ERC4626Vault({
vault: IERC4626(0x6bf183243FdD1e306ad2C4450BC7dcf6f0bf8Aa6),
oracle: IERC4626Oracle(address(0))
})
}),
periphery: PeripheryContracts({
aaveV3: IPool(0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2),
multicall3: IMulticall3(0xcA11bde05977b3631167028862bE2a173976CA11),
levelReserveLensMorphoOracle: LevelReserveLensMorphoOracle(0x625bB4f5133Ff9F6d43e21F15add35BE46387903)
levelReserveLensMorphoOracle: LevelReserveLensMorphoOracle(0x625bB4f5133Ff9F6d43e21F15add35BE46387903),
ustbRedemptionIdle: IRedemption(0x4c21B7577C8FE8b0B0669165ee7C8f67fa1454Cf),
uniswapV3Router: ISwapRouter(0xE592427A0AEce92De3Edee1F18E0157C05861564)
})
});

Expand Down
26 changes: 22 additions & 4 deletions config/deploy/Sepolia.sol
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import {ERC20} from "@solmate/src/tokens/ERC20.sol";
import {IPool} from "@level/src/v2/interfaces/aave/IPool.sol";
import {ERC4626OracleFactory} from "@level/src/v2/oracles/ERC4626OracleFactory.sol";
import {IERC4626Oracle} from "@level/src/v2/interfaces/level/IERC4626Oracle.sol";
import {IERC4626} from "@openzeppelin/contracts/interfaces/IERC4626.sol";
import {IMetaMorpho} from "@level/src/v2/interfaces/morpho/IMetaMorpho.sol";
import {IMetaMorphoV1_1} from "@level/src/v2/interfaces/morpho/IMetaMorphoV1_1.sol";

Expand All @@ -22,6 +23,9 @@ import {StrictRolesAuthority} from "@level/src/v2/auth/StrictRolesAuthority.sol"

import {LevelReserveLens} from "@level/src/v2/lens/LevelReserveLens.sol";
import {LevelReserveLensMorphoOracle} from "@level/src/v1/lens/LevelReserveLensMorphoOracle.sol";
import {IRedemption} from "@level/src/v2/interfaces/superstate/IRedemption.sol";
import {ISwapRouter} from "@level/src/v2/interfaces/uniswap/ISwapRouter.sol";
import {SwapManager} from "@level/src/v2/usd/SwapManager.sol";

contract Sepolia is BaseConfig {
uint256 public constant chainId = 11155111;
Expand All @@ -38,12 +42,17 @@ contract Sepolia is BaseConfig {
lvlUsd: ERC20(0xd770C092e4AcA4Cdb187829C350062C43F6f79EB),
slvlUsd: ERC20(0xeFE4aB4013beca790A957e12330C7283AB97a047),
aUsdc: ERC20(address(0)),
aUsdt: ERC20(address(0))
aUsdt: ERC20(address(0)),
ustb: ERC20(0x39727692cF58137Bd8c401eFE87Cc8A190D62ead),
wrappedM: ERC20(address(0))
}),
oracles: Oracles({
usdc: AggregatorV3Interface(0xA2F78ab2355fe2f984D808B5CeE7FD0A93D5270E),
usdt: AggregatorV3Interface(address(0)),
ustb: AggregatorV3Interface(address(0))
ustb: AggregatorV3Interface(0x732d3C7515356eAB22E3F3DcA183c5c65102d518),
aUsdc: AggregatorV3Interface(address(0)),
aUsdt: AggregatorV3Interface(address(0)),
mNav: AggregatorV3Interface(address(0))
}),
users: Users({
admin: 0xb2522DC238DEA8a821dEcE38a1d46eC5C4708256,
Expand All @@ -61,7 +70,8 @@ contract Sepolia is BaseConfig {
adminTimelock: TimelockController(payable(0x980bF41Dc21fA48BE87a421002c18a6c803d480C)),
erc4626OracleFactory: ERC4626OracleFactory(0xe9D32Aade0228A8de8E54b48b8020DA2907449fb),
pauserGuard: PauserGuard(0xABf29A4a281f6ea06883DedeA962127f9b0621f9),
levelReserveLens: LevelReserveLens(address(0))
levelReserveLens: LevelReserveLens(address(0)),
swapManager: SwapManager(address(0))
}),
morphoVaults: MorphoVaults({
steakhouseUsdc: MetaMorphoVault({
Expand All @@ -72,10 +82,18 @@ contract Sepolia is BaseConfig {
re7Usdc: MetaMorphoV1_1Vault({vault: IMetaMorphoV1_1(address(0)), oracle: IERC4626Oracle(address(0))}),
steakhouseUsdtLite: MetaMorphoV1_1Vault({vault: IMetaMorphoV1_1(address(0)), oracle: IERC4626Oracle(address(0))})
}),
sparkVaults: SparkVaults({
sUsdc: ERC4626Vault({vault: IERC4626(address(0)), oracle: IERC4626Oracle(address(0))})
}),
umbrellaVaults: UmbrellaVaults({
waUsdcStakeToken: ERC4626Vault({vault: IERC4626(address(0)), oracle: IERC4626Oracle(address(0))})
}),
periphery: PeripheryContracts({
aaveV3: IPool(0x6Ae43d3271ff6888e7Fc43Fd7321a503ff738951),
multicall3: IMulticall3(0xcA11bde05977b3631167028862bE2a173976CA11),
levelReserveLensMorphoOracle: LevelReserveLensMorphoOracle(address(0))
levelReserveLensMorphoOracle: LevelReserveLensMorphoOracle(address(0)),
ustbRedemptionIdle: IRedemption(0xd33d340CdbEf8E879C827199BD7D9705b21e18c9),
uniswapV3Router: ISwapRouter(address(0))
})
});

Expand Down
17 changes: 0 additions & 17 deletions node_modules/.bin/openzeppelin-upgrades-core

This file was deleted.

1 change: 0 additions & 1 deletion node_modules/@openzeppelin/upgrades-core

This file was deleted.

3 changes: 2 additions & 1 deletion remappings.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@ forge-std/=lib/forge-std/src/
@openzeppelin-4.9.0/contracts/=lib/openzeppelin-contracts-4.9.0/contracts/
@openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/
@solmate=lib/solmate
@openzeppelin-upgrades/=lib/openzeppelin-foundry-upgrades/
@openzeppelin-upgrades/=lib/openzeppelin-foundry-upgrades/
@uniswap-v3-core/=lib/v3-core/contracts/
Loading
Loading