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

deploy Base markets and swapper #44

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 2 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 .npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@angleprotocol:registry=https://npm.pkg.github.com
884 changes: 884 additions & 0 deletions broadcast/MorphoDeployMarket.s.sol/1/run-1718798365.json

Large diffs are not rendered by default.

836 changes: 836 additions & 0 deletions broadcast/MorphoDeployMarket.s.sol/1/run-1718798547.json

Large diffs are not rendered by default.

848 changes: 703 additions & 145 deletions broadcast/MorphoDeployMarket.s.sol/1/run-latest.json

Large diffs are not rendered by default.

2,160 changes: 2,160 additions & 0 deletions broadcast/MorphoDeployMarket.s.sol/8453/run-1718802537.json

Large diffs are not rendered by default.

1,600 changes: 1,600 additions & 0 deletions broadcast/MorphoDeployMarket.s.sol/8453/run-1718805764.json

Large diffs are not rendered by default.

1,570 changes: 1,570 additions & 0 deletions broadcast/MorphoDeployMarket.s.sol/8453/run-1718805986.json

Large diffs are not rendered by default.

581 changes: 581 additions & 0 deletions broadcast/MorphoDeployMarket.s.sol/8453/run-1718964091.json

Large diffs are not rendered by default.

603 changes: 603 additions & 0 deletions broadcast/MorphoDeployMarket.s.sol/8453/run-1718964354.json

Large diffs are not rendered by default.

603 changes: 603 additions & 0 deletions broadcast/MorphoDeployMarket.s.sol/8453/run-latest.json

Large diffs are not rendered by default.

66 changes: 66 additions & 0 deletions broadcast/MorphoInteractMarket.s.sol/1/run-1718873598.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
{
"transactions": [
{
"hash": "0x5cca4e0b57e4cedc568ea04ada90ad483c2fcdd0457d08756b51e55a9d20a1f8",
"transactionType": "CALL",
"contractName": null,
"contractAddress": "0xc9dfd5c18f12a3ba6293001700810602efe0c45b",
"function": "setMaxImpliedRate(uint256)",
"arguments": [
"1000000000000000000000"
],
"transaction": {
"from": "0x0c2553e4b9dfa9f83b1a6d3eab96c4baab42d430",
"to": "0xc9dfd5c18f12a3ba6293001700810602efe0c45b",
"gas": "0xe58b",
"value": "0x0",
"input": "0x3406b6d100000000000000000000000000000000000000000000003635c9adc5dea00000",
"nonce": "0x1",
"chainId": "0x1"
},
"additionalContracts": [],
"isFixedGasLimit": false
}
],
"receipts": [
{
"status": "0x1",
"cumulativeGasUsed": "0xa630",
"logs": [
{
"address": "0xc9dfd5c18f12a3ba6293001700810602efe0c45b",
"topics": [
"0x1693f12ff158ba72b61d65dce0487c8c9166916e22e284990a7e42b5f38b080a"
],
"data": "0x00000000000000000000000000000000000000000000003635c9adc5dea00000",
"blockHash": "0x0335e45dc28df8a6a1ad682618a9d3c57425a580df0611dd10be3d68ffe4655a",
"blockNumber": "0x1333002",
"blockTimestamp": "0x6673edf0",
"transactionHash": "0x5cca4e0b57e4cedc568ea04ada90ad483c2fcdd0457d08756b51e55a9d20a1f8",
"transactionIndex": "0x0",
"logIndex": "0x0",
"removed": false
}
],
"logsBloom": "0x00000000000000080000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000008000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"type": "0x2",
"transactionHash": "0x5cca4e0b57e4cedc568ea04ada90ad483c2fcdd0457d08756b51e55a9d20a1f8",
"transactionIndex": "0x0",
"blockHash": "0x0335e45dc28df8a6a1ad682618a9d3c57425a580df0611dd10be3d68ffe4655a",
"blockNumber": "0x1333002",
"gasUsed": "0xa630",
"effectiveGasPrice": "0x3426eb458",
"blobGasPrice": "0x9",
"from": "0x0c2553e4b9dfa9f83b1a6d3eab96c4baab42d430",
"to": "0xc9dfd5c18f12a3ba6293001700810602efe0c45b",
"contractAddress": null,
"root": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"libraries": [],
"pending": [],
"returns": {},
"timestamp": 1718873598,
"chain": 1,
"commit": "371fb94"
}
24 changes: 12 additions & 12 deletions broadcast/MorphoInteractMarket.s.sol/1/run-latest.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"transactions": [
{
"hash": "0xed6469495ac957b5149d5fa048ba2b6bac6d02a766cc345411f9bd662a4860e3",
"hash": "0x5cca4e0b57e4cedc568ea04ada90ad483c2fcdd0457d08756b51e55a9d20a1f8",
"transactionType": "CALL",
"contractName": null,
"contractAddress": "0xc9dfd5c18f12a3ba6293001700810602efe0c45b",
Expand Down Expand Up @@ -33,24 +33,24 @@
"0x1693f12ff158ba72b61d65dce0487c8c9166916e22e284990a7e42b5f38b080a"
],
"data": "0x00000000000000000000000000000000000000000000003635c9adc5dea00000",
"blockHash": "0x2432ab3c86c8d4800edf9fff8d292cbb6fa1fd1f63a20e65d0c5cce78a790bf7",
"blockNumber": "0x132fd7d",
"blockTimestamp": "0x66718dda",
"transactionHash": "0xed6469495ac957b5149d5fa048ba2b6bac6d02a766cc345411f9bd662a4860e3",
"blockHash": "0x0335e45dc28df8a6a1ad682618a9d3c57425a580df0611dd10be3d68ffe4655a",
"blockNumber": "0x1333002",
"blockTimestamp": "0x6673edf0",
"transactionHash": "0x5cca4e0b57e4cedc568ea04ada90ad483c2fcdd0457d08756b51e55a9d20a1f8",
"transactionIndex": "0x0",
"logIndex": "0x0",
"removed": false
}
],
"logsBloom": "0x00000000000000080000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000008000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"type": "0x2",
"transactionHash": "0xed6469495ac957b5149d5fa048ba2b6bac6d02a766cc345411f9bd662a4860e3",
"transactionHash": "0x5cca4e0b57e4cedc568ea04ada90ad483c2fcdd0457d08756b51e55a9d20a1f8",
"transactionIndex": "0x0",
"blockHash": "0x2432ab3c86c8d4800edf9fff8d292cbb6fa1fd1f63a20e65d0c5cce78a790bf7",
"blockNumber": "0x132fd7d",
"blockHash": "0x0335e45dc28df8a6a1ad682618a9d3c57425a580df0611dd10be3d68ffe4655a",
"blockNumber": "0x1333002",
"gasUsed": "0xa630",
"effectiveGasPrice": "0x21eebfb67",
"blobGasPrice": "0xa",
"effectiveGasPrice": "0x3426eb458",
"blobGasPrice": "0x9",
"from": "0x0c2553e4b9dfa9f83b1a6d3eab96c4baab42d430",
"to": "0xc9dfd5c18f12a3ba6293001700810602efe0c45b",
"contractAddress": null,
Expand All @@ -60,7 +60,7 @@
"libraries": [],
"pending": [],
"returns": {},
"timestamp": 1718717920,
"timestamp": 1718873598,
"chain": 1,
"commit": "b73230c"
"commit": "371fb94"
}

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion lib/borrow-contracts
Submodule borrow-contracts updated 38 files
+52 −0 broadcast/PTezETHOracle.s.sol/1/run-1718178882.json
+50 −0 broadcast/PTezETHOracle.s.sol/1/run-1718179163.json
+52 −0 broadcast/PTezETHOracle.s.sol/1/run-1718694630.json
+50 −0 broadcast/PTezETHOracle.s.sol/1/run-1718694747.json
+50 −0 broadcast/PTezETHOracle.s.sol/1/run-latest.json
+52 −0 broadcast/PTweETHOracle.s.sol/1/run-1718178605.json
+52 −0 broadcast/PTweETHOracle.s.sol/1/run-1718178658.json
+52 −0 broadcast/PTweETHOracle.s.sol/1/run-1718178819.json
+50 −0 broadcast/PTweETHOracle.s.sol/1/run-1718179107.json
+52 −0 broadcast/PTweETHOracle.s.sol/1/run-1718694502.json
+52 −0 broadcast/PTweETHOracle.s.sol/1/run-1718694528.json
+52 −0 broadcast/PTweETHOracle.s.sol/1/run-1718694611.json
+50 −0 broadcast/PTweETHOracle.s.sol/1/run-1718694851.json
+21 −23 broadcast/PTweETHOracle.s.sol/1/run-latest.json
+93 −0 contracts/external/pyth/PythAggregatorV3.sol
+143 −0 contracts/interfaces/pyth/IPyth.sol
+33 −0 contracts/interfaces/pyth/PythStructs.sol
+2 −0 contracts/oracle/BaseFeedPTPendle.sol
+5 −5 contracts/oracle/BaseOraclePTPendle.sol
+26 −0 contracts/oracle/FeedPTForSY.sol
+2 −2 contracts/oracle/implementations/mainnet/EUR/OraclePTweETHEUR.sol
+41 −0 contracts/oracle/morpho/mainnet/MorphoFeedPTezETHDec24.sol
+1 −2 contracts/oracle/morpho/mainnet/MorphoFeedPTweETH.sol
+40 −0 contracts/oracle/morpho/mainnet/MorphoFeedPTweETHDec24.sol
+1 −1 lib/forge-std
+1 −1 lib/pendle-core-v2-public
+1 −1 lib/utils
+1 −1 package.json
+34 −0 scripts/foundry/mainnet/PTezETHOracle.s.sol
+4 −4 scripts/foundry/mainnet/PTweETHOracle.s.sol
+1 −6 test/foundry/oracles/morpho/MorphoChainlinkOracleTest.t.sol
+14 −38 test/foundry/oracles/pendle/BaseOraclePTPendle.t.sol
+18 −9 test/foundry/oracles/pendle/MorphoFeedPTPendle.t.sol
+5 −5 test/foundry/oracles/pendle/MorphoFeedPTUSDe.t.sol
+93 −0 test/foundry/oracles/pendle/MorphoFeedPTezETHDec24.t.sol
+7 −6 test/foundry/oracles/pendle/MorphoFeedPTweETH.t.sol
+93 −0 test/foundry/oracles/pendle/MorphoFeedPTweETHDec24.t.sol
+6 −5 test/foundry/oracles/pendle/OraclePTweETH.t.sol
2 changes: 1 addition & 1 deletion lib/utils
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
"url": "https://github.com/AngleProtocol/boilerplate/issues"
},
"devDependencies": {
"@angleprotocol/sdk": "1.0.100",
"@angleprotocol/sdk": "v2.11.10",
"@chainlink/contracts": "0.2.1",
"@ethersproject/abi": "^5.7.0",
"@ethersproject/providers": "^5.7.1",
Expand Down
47 changes: 47 additions & 0 deletions scripts/foundry/base/BaseConstants.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.17;

contract BaseConstants {
address public constant ONE_INCH = 0x111111125421cA6dc452d289314280a0f8842A65;
address public constant MORPHO_BLUE = 0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb;
address public constant ANGLE_ROUTER = 0x423Cf4cD872F912D278DF2F54Ae58Aa8073cb38c;
address public constant UNI_V3_ROUTER = 0x2626664c2603336E57B271c5C0b26F421741e481;
address public constant PYTH_ROUTER = 0x8250f4aF4B972684F7b336503E2D6dFeDeB1487a;

uint256 public constant BASE_TOKENS = 10 ** 18;
uint64 public constant BASE_PARAMS = 10 ** 9;

address constant ezETH = 0x2416092f143378750bb29b79eD961ab195CcEea5;
address constant weETH = 0x04C0599Ae5A44757c0af6F9eC3b93da8976c150A;
address constant wstETH = 0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452;
address constant cbETH = 0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22;

// Chainlink
address constant ETH_USD_ORACLE = address(0x71041dddad3595F9CEd3DcCFBe3D1F4b0a16Bb70);
// Chainlink
address constant EZETH_ETH_ORACLE = address(0x960BDD1dFD20d7c98fa482D793C3dedD73A113a3);
// Chainlink
address constant WEETH_ETH_ORACLE = address(0xFC1415403EbB0c693f9a7844b92aD2Ff24775C65);
bytes32 constant WEETH_USD_PYTH_ID = 0x9ee4e7c60b940440a261eb54b6d8149c23b580ed7da3139f7f08f4ea29dad395;
// Chainlink
address constant WSTETH_ETH_ORACLE = address(0xa669E5272E60f78299F4824495cE01a3923f4380);
bytes32 constant WSTETH_USD_PYTH_ID = 0x6df640f3b8963d8f8358f791f352b8364513f6ab1cca5ed3f1f7b5448980e784;
// Chainlink
address constant CBETH_ETH_ORACLE = 0x806b4Ac04501c29769051e42783cF04dCE41440b;
bytes32 constant CBETH_USD_PYTH_ID = 0x15ecddd26d49e1a8f1de9376ebebc03916ede873447c1255d2d5891b92ce5717;

address constant MORPHO_ORACLE_FACTORY = 0x2DC205F24BCb6B311E5cdf0745B0741648Aebd3d;
address constant IRM_MODEL = 0x46415998764C29aB2a25CbeA6254146D50D22687;

uint256 constant LLTV_91 = 0.915 ether;
uint256 constant LLTV_86 = 0.86 ether;
uint256 constant LLTV_77 = 0.77 ether;
uint256 constant LLTV_62 = 0.625 ether;

uint32 constant _TWAP_DURATION = 1 hours;
uint32 constant _STALE_PERIOD = 24 hours;
uint256 constant _MAX_IMPLIED_RATE = 0.5 ether;

uint256 constant BASE_DEPOSIT_ETH_AMOUNT = 0.002 ether;
uint256 constant BASE_DEPOSIT_USD_AMOUNT = 1 ether;
}
178 changes: 178 additions & 0 deletions scripts/foundry/base/morpho/MorphoDeployMarket.s.sol
0xtekgrinder marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.17;

import "forge-std/Script.sol";
import { console } from "forge-std/console.sol";
import { StdCheats, StdAssertions } from "forge-std/Test.sol";
import "borrow/interfaces/ICoreBorrow.sol";
import { PythAggregatorV3 } from "borrow/external/pyth/PythAggregatorV3.sol";
import "../BaseConstants.s.sol";
import { MarketParams } from "morpho-blue/libraries/MarketParamsLib.sol";
import { IMorpho } from "morpho-blue/interfaces/IMorpho.sol";
import { IOracle as IMorphoOracle } from "morpho-blue/interfaces/IOracle.sol";
import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
import "borrow-staked/interfaces/external/morpho/IMorphoChainlinkOracleV2Factory.sol";
import { MorphoBalancesLib } from "morpho-blue/libraries/periphery/MorphoBalancesLib.sol";
import { MarketParamsLib } from "morpho-blue/libraries/MarketParamsLib.sol";
import { CommonUtils } from "utils/src/CommonUtils.sol";
import "utils/src/Constants.sol";

contract MorphoDeployBaseMarket is Script, CommonUtils, BaseConstants, StdCheats, StdAssertions {
using MorphoBalancesLib for IMorpho;
using MarketParamsLib for MarketParams;

ICoreBorrow coreBorrow;
address USDA;
address deployer;

function run() external {
uint256 deployerPrivateKey = vm.envUint("KEEPER_PRIVATE_KEY");
deployer = vm.addr(deployerPrivateKey);

vm.startBroadcast(deployerPrivateKey);

// Can be changed to a new MockCoreBorrow if you want to manipulate the price
coreBorrow = ICoreBorrow(_chainToContract(CHAIN_BASE, ContractType.CoreBorrow));
USDA = _chainToContract(CHAIN_BASE, ContractType.AgUSD);

MarketParams memory params;
bytes memory emptyData;
address oracle;
bytes32 salt;

{
address collateral = cbETH;
oracle = IMorphoChainlinkOracleV2Factory(MORPHO_ORACLE_FACTORY).createMorphoChainlinkOracleV2(
address(0),
1,
address(CBETH_ETH_ORACLE),
address(ETH_USD_ORACLE),
IERC20Metadata(collateral).decimals(),
address(0),
1,
address(0),
address(0),
IERC20Metadata(USDA).decimals(),
salt
);

uint256 price = IMorphoOracle(oracle).price();
// Because with the max implied rate there is a discount compared to the on chain price (3250)
assertApproxEqAbs(price, 3800 * 10 ** 36, 50 * 10 ** 36);
params.collateralToken = collateral;
params.lltv = LLTV_86;
params.irm = IRM_MODEL;
params.oracle = oracle;
params.loanToken = USDA;
IMorpho(MORPHO_BLUE).createMarket(params);

initMarket(params, BASE_DEPOSIT_ETH_AMOUNT);
}

{
address collateral = weETH;

// deploy the Pyth wrapper
PythAggregatorV3 pythFeed = new PythAggregatorV3(PYTH_ROUTER, WEETH_USD_PYTH_ID);
oracle = IMorphoChainlinkOracleV2Factory(MORPHO_ORACLE_FACTORY).createMorphoChainlinkOracleV2(
address(0),
1,
address(pythFeed),
address(0),
IERC20Metadata(collateral).decimals(),
address(0),
1,
address(0),
address(0),
IERC20Metadata(USDA).decimals(),
salt
);

uint256 price = IMorphoOracle(oracle).price();
// Because with the max implied rate there is a discount compared to the on chain price (3250)
assertApproxEqAbs(price, 3670 * 10 ** 36, 50 * 10 ** 36);
params.collateralToken = collateral;
params.lltv = LLTV_86;
params.irm = IRM_MODEL;
params.oracle = oracle;
params.loanToken = USDA;
IMorpho(MORPHO_BLUE).createMarket(params);

initMarket(params, BASE_DEPOSIT_ETH_AMOUNT);
}

{
address collateral = ezETH;
// oracle = IMorphoChainlinkOracleV2Factory(MORPHO_ORACLE_FACTORY).createMorphoChainlinkOracleV2(
// address(0),
// 1,
// address(EZETH_ETH_ORACLE),
// address(ETH_USD_ORACLE),
// IERC20Metadata(collateral).decimals(),
// address(0),
// 1,
// address(0),
// address(0),
// IERC20Metadata(USDA).decimals(),
// salt
// );
// Oracle already deployed by someone else
oracle = 0x4B5086653F9db675df31a618971e0EC26f6f081F;

uint256 price = IMorphoOracle(oracle).price();
// Because with the max implied rate there is a discount compared to the on chain price (3250)
assertApproxEqAbs(price, 3540 * 10 ** 36, 50 ** 36);
params.collateralToken = collateral;
params.lltv = LLTV_86;
params.irm = IRM_MODEL;
params.oracle = oracle;
params.loanToken = USDA;
IMorpho(MORPHO_BLUE).createMarket(params);

initMarket(params, BASE_DEPOSIT_ETH_AMOUNT);
}

{
address collateral = wstETH;
// oracle = IMorphoChainlinkOracleV2Factory(MORPHO_ORACLE_FACTORY).createMorphoChainlinkOracleV2(
// address(0),
// 1,
// address(WSTETH_ETH_ORACLE),
// address(ETH_USD_ORACLE),
// IERC20Metadata(collateral).decimals(),
// address(0),
// 1,
// address(0),
// address(0),
// IERC20Metadata(USDA).decimals(),
// salt
// );
// Oracle already deployed by someone else
oracle = 0x040ba460Ed355833a0693348421C7f1fd831D0c7;

uint256 price = IMorphoOracle(oracle).price();
// Because with the max implied rate there is a discount compared to the on chain price (3250)
assertApproxEqAbs(price, 4100 * 10 ** 36, 50 * 10 ** 36);
params.collateralToken = collateral;
params.lltv = LLTV_86;
params.irm = IRM_MODEL;
params.oracle = oracle;
params.loanToken = USDA;
IMorpho(MORPHO_BLUE).createMarket(params);

initMarket(params, BASE_DEPOSIT_ETH_AMOUNT);
}

vm.stopBroadcast();
}

function initMarket(MarketParams memory params, uint256 amountCollateral) internal {
bytes memory emptyData;
IERC20(params.loanToken).approve(MORPHO_BLUE, BASE_DEPOSIT_USD_AMOUNT);
IMorpho(MORPHO_BLUE).supply(params, BASE_DEPOSIT_USD_AMOUNT, 0, deployer, emptyData);
IERC20(params.collateralToken).approve(MORPHO_BLUE, amountCollateral);
IMorpho(MORPHO_BLUE).supplyCollateral(params, amountCollateral, deployer, emptyData);
IMorpho(MORPHO_BLUE).borrow(params, (BASE_DEPOSIT_USD_AMOUNT * 9) / 10, 0, deployer, deployer);
}
}
33 changes: 33 additions & 0 deletions scripts/foundry/base/morpho/SwapperLevMorphoGenericERC4626.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.17;

import "forge-std/Script.sol";
import { console } from "forge-std/console.sol";
import "borrow/interfaces/ICoreBorrow.sol";
import "borrow/interfaces/IAngleRouterSidechain.sol";
import "borrow/interfaces/external/uniswap/IUniswapRouter.sol";
import { ERC4626GenericLevSwapper } from "borrow-staked/swapper/LevSwapper/ERC4626GenericLevSwapper.sol";
import "../BaseConstants.s.sol";
import { IMorpho } from "morpho-blue/interfaces/IMorpho.sol";
import { CommonUtils } from "utils/src/CommonUtils.sol";
import "utils/src/Constants.sol";

contract BaseERC4626SwapperLevMorphoGenericERC4626 is Script, CommonUtils, BaseConstants {
function run() external {
uint256 deployerPrivateKey = vm.envUint("DEPLOYER_PRIVATE_KEY");
address deployer = vm.addr(deployerPrivateKey);
vm.startBroadcast(deployerPrivateKey);

ERC4626GenericLevSwapper swapperGenericERC4626 = new ERC4626GenericLevSwapper(
ICoreBorrow(_chainToContract(CHAIN_BASE, ContractType.CoreBorrow)),
IUniswapV3Router(UNI_V3_ROUTER),
ONE_INCH,
IAngleRouterSidechain(ANGLE_ROUTER),
IMorpho(MORPHO_BLUE)
);

console.log("Successfully deployed generic ERC4626 swapper: ", address(swapperGenericERC4626));

vm.stopBroadcast();
}
}
Loading