Skip to content

Commit

Permalink
deploy ip token and manager contracts
Browse files Browse the repository at this point in the history
  • Loading branch information
ncitron committed Oct 24, 2021
1 parent 77df466 commit 3816d53
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 12 deletions.
3 changes: 2 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{
"solidity.packageDefaultDependenciesDirectory": "lib",
"solidity.packageDefaultDependenciesContractsDirectory": "src"
"solidity.packageDefaultDependenciesContractsDirectory": "src",
"solidity.compileUsingRemoteVersion": "v0.6.10+commit.00c0fcaf"
}
60 changes: 51 additions & 9 deletions src/IntrinsicProdRebalancing.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,36 +4,78 @@ pragma solidity 0.6.10;
import "ds-test/test.sol";

import { BaseManagerV2 } from "indexcoop/contracts/manager/BaseManagerV2.sol";
import { CompoundWrapV2Adapter } from "setprotocol/contracts/protocol/integration/wrap-v2/CompoundWrapV2Adapter.sol";
import { IPRebalanceExtension } from "indexcoop/contracts/adapters/IPRebalanceExtension.sol";
import { SetTokenCreator } from "setprotocol/contracts/protocol/SetTokenCreator.sol";
import { StandardTokenMock } from "indexcoop/contracts/mocks/StandardTokenMock.sol";
import { TransformHelperMock } from "indexcoop/contracts/mocks/TransformHelperMock.sol";
import { WrapTokenMock} from "indexcoop/contracts/mocks/WrapTokenMock.sol";

import { IBaseManager } from "indexcoop/contracts/interfaces/IBaseManager.sol";
import { IGeneralIndexModule } from "indexcoop/contracts/interfaces/IGeneralIndexModule.sol";
import { IAirdropModule } from "indexcoop/contracts/interfaces/IAirdropModule.sol";
import { ISetToken as ISetTokenSet } from "setprotocol/contracts/interfaces/ISetToken.sol";
import { ISetToken as ISetTokenIndex } from "indexcoop/contracts/interfaces/ISetToken.sol";
import { SetTokenCreator } from "setprotocol/contracts/protocol/SetTokenCreator.sol";

import { PreciseUnitMath } from "indexcoop/contracts/lib/PreciseUnitMath.sol";
import { SafeCast } from "@openzeppelin/contracts/utils/SafeCast.sol";

import { SetFixture } from "./utils/SetFixture.sol";

contract IntrinsicProdRebalancing is DSTest {
using PreciseUnitMath for uint256;
using SafeCast for uint256;

SetFixture setFixture;
BaseManagerV2 baseManager;
IPRebalanceExtension ipRebalanceExtension;

function setUp() public {
setFixture = new SetFixture();
SetTokenCreator factory = setFixture.setTokenCreator();
StandardTokenMock dai;
WrapTokenMock cDai;

address[] memory components = new address[](1);
components[0] = address(0x1);
uint256 cDaiExchangeRate;
TransformHelperMock compTransformHelper;

int256[] memory units = new int256[](1);
units[0] = 1 ether;
function setUp() public {
setFixture = new SetFixture(address(this));
SetTokenCreator factory = setFixture.setTokenCreator();

address[] memory modules = new address[](4);
modules[0] = address(setFixture.generalIndexModule());
modules[1] = address(setFixture.basicIssuanceModule());
modules[2] = address(setFixture.airdropModule());
modules[3] = address(setFixture.wrapModuleV2());

// create mock components
dai = new StandardTokenMock(address(this), 10000 ether, "DAI", "DAI", 18);
cDaiExchangeRate = 1.19438 ether;
cDai = new WrapTokenMock("Compound Dai", "cDAI", 18, dai, cDaiExchangeRate);

// create set
address[] memory components = new address[](2);
components[0] = address(dai);
components[1] = address(cDai);

int256[] memory units = new int256[](2);
units[0] = 0.7 ether;
units[1] = cDaiExchangeRate.preciseMul(0.3 ether).toInt256();

ISetTokenIndex setToken = ISetTokenIndex(factory.create(components, units, modules, address(this), "Test Yield Set", "YIELD"));
baseManager = new BaseManagerV2(setToken, address(this), address(0x3));

// deploy IPRebalanceExtension
ipRebalanceExtension = new IPRebalanceExtension(
IBaseManager(address(baseManager)),
IGeneralIndexModule(address(setFixture.generalIndexModule())),
IAirdropModule(address(setFixture.airdropModule()))
);

// deploy TransferHelpers
compTransformHelper = new TransformHelperMock(cDaiExchangeRate, address(setFixture.wrapModuleV2()), "MockWrapV2Adapter");

baseManager = new BaseManagerV2(setToken, address(0x2), address(0x3));
// setup wrap adapter
CompoundWrapV2Adapter wrapAdapter = new CompoundWrapV2Adapter();
setFixture.integrationRegistry().addIntegration(address(setFixture.wrapModuleV2()), "MockWrapV2Adapter", address(wrapAdapter));
}

function test_setFixture() public {
Expand Down
5 changes: 3 additions & 2 deletions src/utils/SetFixture.sol
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,15 @@ contract SetFixture {

WETH9 public weth;

constructor() public {
constructor(address _owner) public {
weth = new WETH9();
controller = new Controller(msg.sender);
controller = new Controller(_owner);

IWETH wethInterface = IWETH(address(weth));
IController controllerInterface = IController(address(controller));

integrationRegistry = new IntegrationRegistry(controllerInterface);
integrationRegistry.transferOwnership(_owner);
setTokenCreator = new SetTokenCreator(controllerInterface);

airdropModule = new AirdropModule(controllerInterface);
Expand Down

0 comments on commit 3816d53

Please sign in to comment.