diff --git a/contracts/receivers/aave-v2-receiver/interfaces.sol b/contracts/receivers/aave-v2-receiver/interfaces.sol index 5ff7f9a..de752af 100644 --- a/contracts/receivers/aave-v2-receiver/interfaces.sol +++ b/contracts/receivers/aave-v2-receiver/interfaces.sol @@ -100,4 +100,9 @@ interface AaveInterface { interface InstaListInterface { function accountID(address) external view returns (uint); -} \ No newline at end of file +} + + +interface WETHTokenInterface { + function deposit(address user, bytes memory depositData) external payable; +} diff --git a/contracts/receivers/aave-v2-receiver/main.sol b/contracts/receivers/aave-v2-receiver/main.sol index 5578bb9..62db294 100644 --- a/contracts/receivers/aave-v2-receiver/main.sol +++ b/contracts/receivers/aave-v2-receiver/main.sol @@ -4,7 +4,7 @@ pragma experimental ABIEncoderV2; import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/SafeERC20.sol"; import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import { TokenInterface } from "../../common/interfaces.sol"; -import { AccountInterface, AaveData, AaveInterface, IndexInterface } from "./interfaces.sol"; +import { AccountInterface, AaveData, AaveInterface, IndexInterface, WETHTokenInterface } from "./interfaces.sol"; import { Events } from "./events.sol"; import { Helpers } from "./helpers.sol"; @@ -56,6 +56,14 @@ contract MigrateResolver is Helpers, Events { TokenInterface(wmaticAddr).deposit{value: address(this).balance}(); } } + + if (_token == wethAddr) { + TokenInterface wethPosContract = TokenInterface(wethPosAddr); + if (wethPosContract.balanceOf(address(this)) > 0) { + WETHTokenInterface(wethAddr).deposit(address(this), abi.encode(wethPosContract.balanceOf(address(this)))); + } + } + IERC20 _tokenContract = IERC20(_token); uint _tokenBal = _tokenContract.balanceOf(address(this)); if (_tokenBal > 0) { @@ -108,7 +116,7 @@ contract AaveV2Migrator is MigrateResolver { isPositionSafe(); - emit LogAaveV2Migrate(dsa, supplyTokens, borrowTokens, supplyAmts, supplyAmts); + emit LogAaveV2Migrate(dsa, supplyTokens, borrowTokens, supplyAmts, borrowAmts); } function onStateReceive(uint256 stateId, bytes calldata receivedData) external { diff --git a/contracts/receivers/aave-v2-receiver/variables.sol b/contracts/receivers/aave-v2-receiver/variables.sol index 6a08122..e16f60d 100644 --- a/contracts/receivers/aave-v2-receiver/variables.sol +++ b/contracts/receivers/aave-v2-receiver/variables.sol @@ -36,12 +36,22 @@ contract Variables { */ InstaListInterface public constant instaList = InstaListInterface(0x839c2D3aDe63DF5b0b8F3E57D5e145057Ab41556); - /** * @dev Matic StateReceiver contract */ address public constant maticReceiver = 0x0000000000000000000000000000000000001001; + /** + * @dev WETH POS address + */ + address public constant wethPosAddr = 0xAe740d42E4ff0C5086b2b5b5d149eB2F9e1A754F; + + /** + * @dev WETH address + */ + address public constant wethAddr = 0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619; + + // Storage variables //