From 20a9e4fc6dc20e4983b70901a9a3fddef46e2c05 Mon Sep 17 00:00:00 2001 From: Samyak Jain <34437877+KaymasJain@users.noreply.github.com> Date: Wed, 14 Apr 2021 04:13:51 +0530 Subject: [PATCH] connector update & settle transfer --- contracts/senders/aave-v2-connector/main.sol | 26 ++++++++++++------- contracts/senders/aave-v2-migrator/events.sol | 2 ++ .../senders/aave-v2-migrator/interfaces.sol | 10 +++++++ contracts/senders/aave-v2-migrator/main.sol | 4 +-- .../senders/aave-v2-migrator/variables.sol | 5 +++- 5 files changed, 34 insertions(+), 13 deletions(-) diff --git a/contracts/senders/aave-v2-connector/main.sol b/contracts/senders/aave-v2-connector/main.sol index 794af30..19e9e92 100644 --- a/contracts/senders/aave-v2-connector/main.sol +++ b/contracts/senders/aave-v2-connector/main.sol @@ -9,21 +9,27 @@ import { Events } from "./events.sol"; contract AaveMigrateResolver is Helpers, Events { function migrate( - AaveDataRaw calldata _data, + address targetDsa, + address[] memory supplyTokens, + address[] memory borrowTokens, + uint[] memory variableBorrowAmts, + uint[] memory stableBorrowAmts, + uint[] memory supplyAmts, uint ethAmt // if ethAmt is > 0 then use migrateWithflash ) external payable returns (string memory _eventName, bytes memory _eventParam) { - require(_data.supplyTokens.length > 0, "0-length-not-allowed"); - require(_data.supplyTokens.length == _data.supplyAmts.length, "invalid-length"); - require(_data.targetDsa != address(0), "invalid-address"); + require(supplyTokens.length > 0, "0-length-not-allowed"); + require(supplyTokens.length == supplyAmts.length, "invalid-length"); + require(borrowTokens.length == variableBorrowAmts.length && borrowTokens.length == stableBorrowAmts.length, "invalid-length"); + require(targetDsa != address(0), "invalid-address"); AaveDataRaw memory data; - data.borrowTokens = _data.borrowTokens; - data.stableBorrowAmts = _data.stableBorrowAmts; - data.supplyAmts = _data.supplyAmts; - data.supplyTokens = _data.supplyTokens; - data.targetDsa = _data.targetDsa; - data.variableBorrowAmts = _data.variableBorrowAmts; + data.targetDsa = targetDsa; + data.supplyTokens = supplyTokens; + data.borrowTokens = borrowTokens; + data.variableBorrowAmts = variableBorrowAmts; + data.stableBorrowAmts = stableBorrowAmts; + data.supplyAmts = supplyAmts; for (uint i = 0; i < data.supplyTokens.length; i++) { address _token = data.supplyTokens[i] == ethAddr ? wethAddr : data.supplyTokens[i]; diff --git a/contracts/senders/aave-v2-migrator/events.sol b/contracts/senders/aave-v2-migrator/events.sol index 6f0b45f..25dbac3 100644 --- a/contracts/senders/aave-v2-migrator/events.sol +++ b/contracts/senders/aave-v2-migrator/events.sol @@ -28,4 +28,6 @@ contract Events { event variablesUpdate(uint _safeRatioGap, uint _fee, bool _depositEnable); + event settle(address[] tokens, uint[] amts); + } \ No newline at end of file diff --git a/contracts/senders/aave-v2-migrator/interfaces.sol b/contracts/senders/aave-v2-migrator/interfaces.sol index 504d291..466c5ff 100644 --- a/contracts/senders/aave-v2-migrator/interfaces.sol +++ b/contracts/senders/aave-v2-migrator/interfaces.sol @@ -95,4 +95,14 @@ interface AavePriceOracle { interface ChainLinkInterface { function latestAnswer() external view returns (int256); function decimals() external view returns (uint256); +} + +interface RootChainManagerInterface { + function depositEtherFor(address user) external payable; + function depositFor( + address user, + address rootToken, + bytes calldata depositData + ) external; + function exit(bytes calldata inputData) external; } \ No newline at end of file diff --git a/contracts/senders/aave-v2-migrator/main.sol b/contracts/senders/aave-v2-migrator/main.sol index 793cfce..aaa0e8b 100644 --- a/contracts/senders/aave-v2-migrator/main.sol +++ b/contracts/senders/aave-v2-migrator/main.sol @@ -166,11 +166,11 @@ contract LiquidityResolver is Helpers, Events { } for (uint i = 0; i < _tokens.length; i++) { aave.withdraw(_tokens[i], _amts[i], address(this)); - // TODO: transfer to polygon's receiver address "polygonReceiver" + migrator.depositFor(polygonReceiver, _tokens[i], abi.encode(_amts[i])); isPositionSafe(); } + emit settle(_tokens, _amts); } - // TODO: emit event } contract MigrateResolver is LiquidityResolver { diff --git a/contracts/senders/aave-v2-migrator/variables.sol b/contracts/senders/aave-v2-migrator/variables.sol index d4179c4..bd4ccf0 100644 --- a/contracts/senders/aave-v2-migrator/variables.sol +++ b/contracts/senders/aave-v2-migrator/variables.sol @@ -5,7 +5,8 @@ import { AaveDataProviderInterface, StateSenderInterface, IndexInterface, - FlashloanInterface + FlashloanInterface, + RootChainManagerInterface } from "./interfaces.sol"; contract Variables { @@ -69,4 +70,6 @@ contract Variables { // InstaIndex Address. IndexInterface public constant instaIndex = IndexInterface(0x2971AdFa57b20E5a416aE5a708A8655A9c74f723); + RootChainManagerInterface internal constant migrator = RootChainManagerInterface(0xA0c68C638235ee32657e8f720a23ceC1bFc77C77); + } \ No newline at end of file