diff --git a/README.md b/README.md index 48eba1b..b5ad5c0 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,6 @@ forge test --fork-url optimism -vvv ## contracts -- [NovaAdapterVelo](https://optimistic.etherscan.io/address/0xA0E5013486E9fecC15835B9D9c76bB209eA48273) -- [NovaVault](https://optimistic.etherscan.io/address/0x7A8F265F2d1362ED8b6D5dd52E82741217BE8D3C) -- [NovaVaultV2](https://optimistic.etherscan.io/address/0x04b12a2590BD808F7aC01f066aae0e2f48A3991C) \ No newline at end of file +- [NovaAdapterVeloCLPool](https://optimistic.etherscan.io/address/0xD4Cd6B3e3fcd6399D534F7a07c18ed804B64e13e) +- [NovaVault](https://optimistic.etherscan.io/address/0xbf3ccf927eD469229ed834FD67004533f37a7291) +- [NovaVaultV2](https://optimistic.etherscan.io/address/0x04b12a2590BD808F7aC01f066aae0e2f48A3991C) diff --git a/script/Deploy.s.sol b/script/Deploy.s.sol deleted file mode 100644 index ba023a9..0000000 --- a/script/Deploy.s.sol +++ /dev/null @@ -1,30 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0 -pragma solidity 0.8.17; - -import "forge-std/Script.sol"; -import {NovaVaultV2} from "../src/NovaVaultV2.sol"; -import {GenericSwapFacetV3} from "@lifi/src/Facets/GenericSwapFacetV3.sol"; - -// Deploy a contract to a deterministic address with create2 factory. -contract Deploy is Script { - function run() external { - uint256 privateKey = vm.envUint("PRIVATE_KEY_OWNER"); - - vm.startBroadcast(privateKey); - - address sDAI = 0x2218a117083f5B482B0bB821d27056Ba9c04b1D3; - NovaVaultV2 vaultV2; - GenericSwapFacetV3 swapFacet; - - ////////////////// - // NovaVaultV2 Deployment - ////////////////// - - swapFacet = new GenericSwapFacetV3(); - - vaultV2 = new NovaVaultV2(sDAI, address(swapFacet)); - console.log("NovaVaultV2 address is ", address(vaultV2)); - - vm.stopBroadcast(); - } -} diff --git a/script/DeployNovaVaultAndAdapter.s.sol b/script/DeployNovaVaultAndAdapter.s.sol new file mode 100644 index 0000000..aec931e --- /dev/null +++ b/script/DeployNovaVaultAndAdapter.s.sol @@ -0,0 +1,57 @@ +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity 0.8.17; + +import "forge-std/Script.sol"; +import {NovaVault} from "../src/NovaVault.sol"; +import {NovaAdapterVeloCLPool} from "../src/adapters/NovaAdapterVeloCLPool.sol"; +import {IVelodromeCLPool} from "../src/interfaces/IVelodromeCLPool.sol"; + +// Deploy a contract to a deterministic address with create2 factory. +contract Deploy is Script { + function run() external { + uint256 privateKey = vm.envUint("PRIVATE_KEY_OWNER"); + + vm.startBroadcast(privateKey); + + address POOL = 0x131525f3FA23d65DC2B1EB8B6483a28c43B06916; + address sDAI = 0x2218a117083f5B482B0bB821d27056Ba9c04b1D3; + NovaAdapterVeloCLPool adapter; + NovaVault vault; + IVelodromeCLPool veloPool; + address stable; + address veloToken0; + address veloToken1; + address[] memory stables = new address[](1); + address[] memory novaAdapters = new address[](1); + + veloPool = IVelodromeCLPool(POOL); + veloToken0 = veloPool.token0(); + veloToken1 = veloPool.token1(); + if (veloToken0 == sDAI) { + stable = veloToken1; + } else if (veloToken1 == sDAI) { + stable = veloToken0; + } else { + revert("Velodrome pool should be made of `asset` and `savings`!"); + } + + ////////////////// + // NovaAdapterVeloCLPool Deployment + ////////////////// + + adapter = new NovaAdapterVeloCLPool(stable, sDAI, POOL); + console.log("NovaAdapterVeloCLPool address is ", address(adapter)); + + ////////////////// + // NovaVault Deployment + ////////////////// + + stables[0] = stable; + novaAdapters[0] = address(adapter); + + vault = new NovaVault(sDAI, stables, novaAdapters); + console.log("NovaVault address is ", address(vault)); + + vm.stopBroadcast(); + } +} diff --git a/script/EnableVeloSwap.s.sol b/script/EnableNovaVaultV2VeloSwap.s.sol similarity index 100% rename from script/EnableVeloSwap.s.sol rename to script/EnableNovaVaultV2VeloSwap.s.sol