mirror of
https://github.com/Instadapp/dsa-connectors.git
synced 2024-07-29 22:37:00 +00:00
chore: clean up
This commit is contained in:
parent
cc7f53860c
commit
9c83fd0924
|
@ -3,6 +3,9 @@ pragma solidity ^0.7.6;
|
||||||
import { DSMath } from "../../common/math.sol";
|
import { DSMath } from "../../common/math.sol";
|
||||||
import { Basic } from "../../common/basic.sol";
|
import { Basic } from "../../common/basic.sol";
|
||||||
|
|
||||||
|
import { TokenInterface } from "../../common/interfaces.sol";
|
||||||
|
import { ISavingsContractV2, IBoostedSavingsVault } from "./interface.sol";
|
||||||
|
|
||||||
abstract contract Helpers is DSMath, Basic {
|
abstract contract Helpers is DSMath, Basic {
|
||||||
address internal constant mUsdToken =
|
address internal constant mUsdToken =
|
||||||
0xe2f2a5C287993345a840Db3B0845fbC70f5935a5;
|
0xe2f2a5C287993345a840Db3B0845fbC70f5935a5;
|
||||||
|
@ -10,4 +13,87 @@ abstract contract Helpers is DSMath, Basic {
|
||||||
0x30647a72Dc82d7Fbb1123EA74716aB8A317Eac19;
|
0x30647a72Dc82d7Fbb1123EA74716aB8A317Eac19;
|
||||||
address internal constant imUsdVault =
|
address internal constant imUsdVault =
|
||||||
0x78BefCa7de27d07DC6e71da295Cc2946681A6c7B;
|
0x78BefCa7de27d07DC6e71da295Cc2946681A6c7B;
|
||||||
|
|
||||||
|
/***************************************
|
||||||
|
Internal
|
||||||
|
****************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev Deposit to Save from any asset
|
||||||
|
* @notice Called internally from deposit functions
|
||||||
|
* @param _token Address of token to deposit
|
||||||
|
* @param _amount Amount of token to deposit
|
||||||
|
* @param _path Path to mint mUSD (only needed for Feeder Pool)
|
||||||
|
* @return _eventName Event name
|
||||||
|
* @return _eventParam Event parameters
|
||||||
|
*/
|
||||||
|
|
||||||
|
function _deposit(
|
||||||
|
address _token,
|
||||||
|
uint256 _amount,
|
||||||
|
address _path
|
||||||
|
) internal returns (string memory _eventName, bytes memory _eventParam) {
|
||||||
|
// 1. Deposit mUSD to Save
|
||||||
|
approve(TokenInterface(mUsdToken), imUsdToken, _amount);
|
||||||
|
uint256 credits = ISavingsContractV2(imUsdToken).depositSavings(
|
||||||
|
_amount
|
||||||
|
);
|
||||||
|
|
||||||
|
// 2. Stake imUSD to Vault
|
||||||
|
approve(TokenInterface(imUsdToken), imUsdVault, credits);
|
||||||
|
IBoostedSavingsVault(imUsdVault).stake(credits);
|
||||||
|
|
||||||
|
// 3. Log Events
|
||||||
|
_eventName = "LogDeposit(address,uint256,address)";
|
||||||
|
_eventParam = abi.encode(_token, _amount, _path);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev Withdraws from Save
|
||||||
|
* @notice Withdraws token supported by mStable from Save
|
||||||
|
* @param _credits Credits to withdraw
|
||||||
|
* @return amountWithdrawn Amount withdrawn in mUSD
|
||||||
|
*/
|
||||||
|
|
||||||
|
function _withdraw(uint256 _credits)
|
||||||
|
internal
|
||||||
|
returns (uint256 amountWithdrawn)
|
||||||
|
{
|
||||||
|
// 1. Withdraw from Vault
|
||||||
|
// approve(TokenInterface(imUsdVault), imUsdToken, _credits);
|
||||||
|
IBoostedSavingsVault(imUsdVault).withdraw(_credits);
|
||||||
|
|
||||||
|
// 2. Withdraw from Save
|
||||||
|
approve(TokenInterface(imUsdToken), imUsdVault, _credits);
|
||||||
|
amountWithdrawn = ISavingsContractV2(imUsdToken).redeemCredits(
|
||||||
|
_credits
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev Returns the reward tokens
|
||||||
|
* @notice Gets the reward tokens from the vault contract
|
||||||
|
* @return rewardToken Address of reward token
|
||||||
|
*/
|
||||||
|
|
||||||
|
function _getRewardTokens() internal view returns (address rewardToken) {
|
||||||
|
rewardToken = address(
|
||||||
|
IBoostedSavingsVault(imUsdVault).getRewardToken()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev Returns the internal balances of the rewardToken and platformToken
|
||||||
|
* @notice Gets current balances of rewardToken and platformToken, used for calculating rewards accrued
|
||||||
|
* @param _rewardToken Address of reward token
|
||||||
|
* @return a Amount of reward token
|
||||||
|
*/
|
||||||
|
|
||||||
|
function _getRewardInternalBal(address _rewardToken)
|
||||||
|
internal
|
||||||
|
view
|
||||||
|
returns (uint256 a)
|
||||||
|
{
|
||||||
|
a = TokenInterface(_rewardToken).balanceOf(address(this));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,11 +7,11 @@ pragma solidity ^0.7.6;
|
||||||
|
|
||||||
import { Helpers } from "./helpers.sol";
|
import { Helpers } from "./helpers.sol";
|
||||||
import { Events } from "./events.sol";
|
import { Events } from "./events.sol";
|
||||||
import { IMasset, ISavingsContractV2, IBoostedSavingsVault, IFeederPool } from "./interface.sol";
|
|
||||||
import { TokenInterface } from "../../common/interfaces.sol";
|
import { TokenInterface } from "../../common/interfaces.sol";
|
||||||
|
import { IMasset, IBoostedSavingsVault, IFeederPool } from "./interface.sol";
|
||||||
|
|
||||||
abstract contract mStableResolver is Events, Helpers {
|
abstract contract mStableResolver is Events, Helpers {
|
||||||
//
|
|
||||||
/***************************************
|
/***************************************
|
||||||
CORE
|
CORE
|
||||||
****************************************/
|
****************************************/
|
||||||
|
@ -31,7 +31,6 @@ abstract contract mStableResolver is Events, Helpers {
|
||||||
uint256 _amount,
|
uint256 _amount,
|
||||||
uint256 _minOut
|
uint256 _minOut
|
||||||
) external returns (string memory _eventName, bytes memory _eventParam) {
|
) external returns (string memory _eventName, bytes memory _eventParam) {
|
||||||
//
|
|
||||||
uint256 mintedAmount = _amount;
|
uint256 mintedAmount = _amount;
|
||||||
address path;
|
address path;
|
||||||
|
|
||||||
|
@ -71,7 +70,6 @@ abstract contract mStableResolver is Events, Helpers {
|
||||||
uint256 _minOut,
|
uint256 _minOut,
|
||||||
address _path
|
address _path
|
||||||
) external returns (string memory _eventName, bytes memory _eventParam) {
|
) external returns (string memory _eventName, bytes memory _eventParam) {
|
||||||
//
|
|
||||||
require(_path != address(0), "Path must be set");
|
require(_path != address(0), "Path must be set");
|
||||||
require(
|
require(
|
||||||
IMasset(mUsdToken).bAssetIndexes(_token) == 0,
|
IMasset(mUsdToken).bAssetIndexes(_token) == 0,
|
||||||
|
@ -140,7 +138,6 @@ abstract contract mStableResolver is Events, Helpers {
|
||||||
uint256 _minOut,
|
uint256 _minOut,
|
||||||
address _path
|
address _path
|
||||||
) external returns (string memory _eventName, bytes memory _eventParam) {
|
) external returns (string memory _eventName, bytes memory _eventParam) {
|
||||||
//
|
|
||||||
require(_path != address(0), "Path must be set");
|
require(_path != address(0), "Path must be set");
|
||||||
require(
|
require(
|
||||||
IMasset(mUsdToken).bAssetIndexes(_token) == 0,
|
IMasset(mUsdToken).bAssetIndexes(_token) == 0,
|
||||||
|
@ -203,7 +200,6 @@ abstract contract mStableResolver is Events, Helpers {
|
||||||
uint256 _amount,
|
uint256 _amount,
|
||||||
uint256 _minOut
|
uint256 _minOut
|
||||||
) external returns (string memory _eventName, bytes memory _eventParam) {
|
) external returns (string memory _eventName, bytes memory _eventParam) {
|
||||||
//
|
|
||||||
approve(TokenInterface(_input), mUsdToken, _amount);
|
approve(TokenInterface(_input), mUsdToken, _amount);
|
||||||
uint256 amountSwapped;
|
uint256 amountSwapped;
|
||||||
|
|
||||||
|
@ -258,7 +254,6 @@ abstract contract mStableResolver is Events, Helpers {
|
||||||
uint256 _minOut,
|
uint256 _minOut,
|
||||||
address _path
|
address _path
|
||||||
) external returns (string memory _eventName, bytes memory _eventParam) {
|
) external returns (string memory _eventName, bytes memory _eventParam) {
|
||||||
//
|
|
||||||
uint256 amountSwapped;
|
uint256 amountSwapped;
|
||||||
|
|
||||||
approve(TokenInterface(_input), _path, _amount);
|
approve(TokenInterface(_input), _path, _amount);
|
||||||
|
@ -276,90 +271,6 @@ abstract contract mStableResolver is Events, Helpers {
|
||||||
_eventName = "LogSwap(address,address,uint256,uint256)";
|
_eventName = "LogSwap(address,address,uint256,uint256)";
|
||||||
_eventParam = abi.encode(_input, _output, _amount, amountSwapped);
|
_eventParam = abi.encode(_input, _output, _amount, amountSwapped);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***************************************
|
|
||||||
Internal
|
|
||||||
****************************************/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Deposit to Save from any asset
|
|
||||||
* @notice Called internally from deposit functions
|
|
||||||
* @param _token Address of token to deposit
|
|
||||||
* @param _amount Amount of token to deposit
|
|
||||||
* @param _path Path to mint mUSD (only needed for Feeder Pool)
|
|
||||||
* @return _eventName Event name
|
|
||||||
* @return _eventParam Event parameters
|
|
||||||
*/
|
|
||||||
|
|
||||||
function _deposit(
|
|
||||||
address _token,
|
|
||||||
uint256 _amount,
|
|
||||||
address _path
|
|
||||||
) internal returns (string memory _eventName, bytes memory _eventParam) {
|
|
||||||
//
|
|
||||||
// 1. Deposit mUSD to Save
|
|
||||||
approve(TokenInterface(mUsdToken), imUsdToken, _amount);
|
|
||||||
uint256 credits = ISavingsContractV2(imUsdToken).depositSavings(
|
|
||||||
_amount
|
|
||||||
);
|
|
||||||
|
|
||||||
// 2. Stake imUSD to Vault
|
|
||||||
approve(TokenInterface(imUsdToken), imUsdVault, credits);
|
|
||||||
IBoostedSavingsVault(imUsdVault).stake(credits);
|
|
||||||
|
|
||||||
// 3. Log Events
|
|
||||||
_eventName = "LogDeposit(address,uint256,address)";
|
|
||||||
_eventParam = abi.encode(_token, _amount, _path);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Withdraws from Save
|
|
||||||
* @notice Withdraws token supported by mStable from Save
|
|
||||||
* @param _credits Credits to withdraw
|
|
||||||
* @return amountWithdrawn Amount withdrawn in mUSD
|
|
||||||
*/
|
|
||||||
|
|
||||||
function _withdraw(uint256 _credits)
|
|
||||||
internal
|
|
||||||
returns (uint256 amountWithdrawn)
|
|
||||||
{
|
|
||||||
// 1. Withdraw from Vault
|
|
||||||
// approve(TokenInterface(imUsdVault), imUsdToken, _credits);
|
|
||||||
IBoostedSavingsVault(imUsdVault).withdraw(_credits);
|
|
||||||
|
|
||||||
// 2. Withdraw from Save
|
|
||||||
approve(TokenInterface(imUsdToken), imUsdVault, _credits);
|
|
||||||
amountWithdrawn = ISavingsContractV2(imUsdToken).redeemCredits(
|
|
||||||
_credits
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Returns the reward tokens
|
|
||||||
* @notice Gets the reward tokens from the vault contract
|
|
||||||
* @return rewardToken Address of reward token
|
|
||||||
*/
|
|
||||||
|
|
||||||
function _getRewardTokens() internal view returns (address rewardToken) {
|
|
||||||
rewardToken = address(
|
|
||||||
IBoostedSavingsVault(imUsdVault).getRewardToken()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Returns the internal balances of the rewardToken and platformToken
|
|
||||||
* @notice Gets current balances of rewardToken and platformToken, used for calculating rewards accrued
|
|
||||||
* @param _rewardToken Address of reward token
|
|
||||||
* @return a Amount of reward token
|
|
||||||
*/
|
|
||||||
|
|
||||||
function _getRewardInternalBal(address _rewardToken)
|
|
||||||
internal
|
|
||||||
view
|
|
||||||
returns (uint256 a)
|
|
||||||
{
|
|
||||||
a = TokenInterface(_rewardToken).balanceOf(address(this));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
contract ConnectV2mStable is mStableResolver {
|
contract ConnectV2mStable is mStableResolver {
|
||||||
|
|
|
@ -3,25 +3,104 @@ pragma solidity ^0.7.6;
|
||||||
import { DSMath } from "../../common/math.sol";
|
import { DSMath } from "../../common/math.sol";
|
||||||
import { Basic } from "../../common/basic.sol";
|
import { Basic } from "../../common/basic.sol";
|
||||||
|
|
||||||
// import { SaveWrapper } from "./interface.sol";
|
import { ISavingsContractV2, IStakingRewardsWithPlatformToken } from "./interface.sol";
|
||||||
|
import { TokenInterface } from "../../common/interfaces.sol";
|
||||||
// interfaces here
|
|
||||||
// import { AaveLendingPoolProviderInterface, AaveDataProviderInterface } from "./interface.sol";
|
|
||||||
|
|
||||||
abstract contract Helpers is DSMath, Basic {
|
abstract contract Helpers is DSMath, Basic {
|
||||||
// Helpers go here
|
|
||||||
/*
|
|
||||||
* @dev SaveWrapper address
|
|
||||||
*/
|
|
||||||
// SaveWrapper internal constant saveWrapper =
|
|
||||||
// SaveWrapper(0x299081f52738A4204C3D58264ff44f6F333C6c88);
|
|
||||||
|
|
||||||
// Addresses that will be important for the contract
|
|
||||||
|
|
||||||
address internal constant mUsdToken =
|
address internal constant mUsdToken =
|
||||||
0xE840B73E5287865EEc17d250bFb1536704B43B21;
|
0xE840B73E5287865EEc17d250bFb1536704B43B21;
|
||||||
address internal constant imUsdToken =
|
address internal constant imUsdToken =
|
||||||
0x5290Ad3d83476CA6A2b178Cd9727eE1EF72432af;
|
0x5290Ad3d83476CA6A2b178Cd9727eE1EF72432af;
|
||||||
address internal constant imUsdVault =
|
address internal constant imUsdVault =
|
||||||
0x32aBa856Dc5fFd5A56Bcd182b13380e5C855aa29;
|
0x32aBa856Dc5fFd5A56Bcd182b13380e5C855aa29;
|
||||||
|
|
||||||
|
/***************************************
|
||||||
|
Internal
|
||||||
|
****************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev Deposit to Save from any asset
|
||||||
|
* @notice Called internally from deposit functions
|
||||||
|
* @param _token Address of token to deposit
|
||||||
|
* @param _amount Amount of token to deposit
|
||||||
|
* @param _path Path to mint mUSD (only needed for Feeder Pool)
|
||||||
|
* @return _eventName Event name
|
||||||
|
* @return _eventParam Event parameters
|
||||||
|
*/
|
||||||
|
|
||||||
|
function _deposit(
|
||||||
|
address _token,
|
||||||
|
uint256 _amount,
|
||||||
|
address _path
|
||||||
|
) internal returns (string memory _eventName, bytes memory _eventParam) {
|
||||||
|
// 1. Deposit mUSD to Save
|
||||||
|
approve(TokenInterface(mUsdToken), imUsdToken, _amount);
|
||||||
|
uint256 credits = ISavingsContractV2(imUsdToken).depositSavings(
|
||||||
|
_amount
|
||||||
|
);
|
||||||
|
|
||||||
|
// 2. Stake imUSD to Vault
|
||||||
|
approve(TokenInterface(imUsdToken), imUsdVault, credits);
|
||||||
|
IStakingRewardsWithPlatformToken(imUsdVault).stake(credits);
|
||||||
|
|
||||||
|
// 3. Log Events
|
||||||
|
_eventName = "LogDeposit(address,uint256,address)";
|
||||||
|
_eventParam = abi.encode(_token, _amount, _path);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev Withdraws from Save
|
||||||
|
* @notice Withdraws token supported by mStable from Save
|
||||||
|
* @param _credits Credits to withdraw
|
||||||
|
* @return amountWithdrawn Amount withdrawn in mUSD
|
||||||
|
*/
|
||||||
|
|
||||||
|
function _withdraw(uint256 _credits)
|
||||||
|
internal
|
||||||
|
returns (uint256 amountWithdrawn)
|
||||||
|
{
|
||||||
|
// 1. Withdraw from Vault
|
||||||
|
IStakingRewardsWithPlatformToken(imUsdVault).withdraw(_credits);
|
||||||
|
|
||||||
|
// 2. Withdraw from Save
|
||||||
|
approve(TokenInterface(imUsdToken), imUsdVault, _credits);
|
||||||
|
amountWithdrawn = ISavingsContractV2(imUsdToken).redeemCredits(
|
||||||
|
_credits
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev Returns the reward tokens
|
||||||
|
* @notice Gets the reward tokens from the vault contract
|
||||||
|
* @return rewardToken Address of reward token
|
||||||
|
* @return platformToken Address of platform token
|
||||||
|
*/
|
||||||
|
|
||||||
|
function _getRewardTokens()
|
||||||
|
internal
|
||||||
|
returns (address rewardToken, address platformToken)
|
||||||
|
{
|
||||||
|
rewardToken = IStakingRewardsWithPlatformToken(imUsdVault)
|
||||||
|
.getRewardToken();
|
||||||
|
platformToken = IStakingRewardsWithPlatformToken(imUsdVault)
|
||||||
|
.getPlatformToken();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev Returns the internal balances of the rewardToken and platformToken
|
||||||
|
* @notice Gets current balances of rewardToken and platformToken, used for calculating rewards accrued
|
||||||
|
* @param _rewardToken Address of reward token
|
||||||
|
* @param _platformToken Address of platform token
|
||||||
|
* @return a Amount of reward token
|
||||||
|
* @return b Amount of platform token
|
||||||
|
*/
|
||||||
|
|
||||||
|
function _getRewardInternalBal(address _rewardToken, address _platformToken)
|
||||||
|
internal
|
||||||
|
view
|
||||||
|
returns (uint256 a, uint256 b)
|
||||||
|
{
|
||||||
|
a = TokenInterface(_rewardToken).balanceOf(address(this));
|
||||||
|
b = TokenInterface(_platformToken).balanceOf(address(this));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,11 +7,10 @@ pragma solidity ^0.7.6;
|
||||||
|
|
||||||
import { Helpers } from "./helpers.sol";
|
import { Helpers } from "./helpers.sol";
|
||||||
import { Events } from "./events.sol";
|
import { Events } from "./events.sol";
|
||||||
import { IMasset, ISavingsContractV2, IStakingRewardsWithPlatformToken, IFeederPool } from "./interface.sol";
|
import { IMasset, IStakingRewardsWithPlatformToken, IFeederPool } from "./interface.sol";
|
||||||
import { TokenInterface } from "../../common/interfaces.sol";
|
import { TokenInterface } from "../../common/interfaces.sol";
|
||||||
|
|
||||||
abstract contract PmStableResolver is Events, Helpers {
|
abstract contract PmStableResolver is Events, Helpers {
|
||||||
//
|
|
||||||
/***************************************
|
/***************************************
|
||||||
CORE
|
CORE
|
||||||
****************************************/
|
****************************************/
|
||||||
|
@ -31,7 +30,6 @@ abstract contract PmStableResolver is Events, Helpers {
|
||||||
uint256 _amount,
|
uint256 _amount,
|
||||||
uint256 _minOut
|
uint256 _minOut
|
||||||
) external returns (string memory _eventName, bytes memory _eventParam) {
|
) external returns (string memory _eventName, bytes memory _eventParam) {
|
||||||
//
|
|
||||||
uint256 mintedAmount = _amount;
|
uint256 mintedAmount = _amount;
|
||||||
address path;
|
address path;
|
||||||
|
|
||||||
|
@ -71,7 +69,6 @@ abstract contract PmStableResolver is Events, Helpers {
|
||||||
uint256 _minOut,
|
uint256 _minOut,
|
||||||
address _path
|
address _path
|
||||||
) external returns (string memory _eventName, bytes memory _eventParam) {
|
) external returns (string memory _eventName, bytes memory _eventParam) {
|
||||||
//
|
|
||||||
require(_path != address(0), "Path must be set");
|
require(_path != address(0), "Path must be set");
|
||||||
require(
|
require(
|
||||||
IMasset(mUsdToken).bAssetIndexes(_token) == 0,
|
IMasset(mUsdToken).bAssetIndexes(_token) == 0,
|
||||||
|
@ -140,7 +137,6 @@ abstract contract PmStableResolver is Events, Helpers {
|
||||||
uint256 _minOut,
|
uint256 _minOut,
|
||||||
address _path
|
address _path
|
||||||
) external returns (string memory _eventName, bytes memory _eventParam) {
|
) external returns (string memory _eventName, bytes memory _eventParam) {
|
||||||
//
|
|
||||||
require(_path != address(0), "Path must be set");
|
require(_path != address(0), "Path must be set");
|
||||||
require(
|
require(
|
||||||
IMasset(mUsdToken).bAssetIndexes(_token) == 0,
|
IMasset(mUsdToken).bAssetIndexes(_token) == 0,
|
||||||
|
@ -219,7 +215,6 @@ abstract contract PmStableResolver is Events, Helpers {
|
||||||
uint256 _amount,
|
uint256 _amount,
|
||||||
uint256 _minOut
|
uint256 _minOut
|
||||||
) external returns (string memory _eventName, bytes memory _eventParam) {
|
) external returns (string memory _eventName, bytes memory _eventParam) {
|
||||||
//
|
|
||||||
approve(TokenInterface(_input), mUsdToken, _amount);
|
approve(TokenInterface(_input), mUsdToken, _amount);
|
||||||
uint256 amountSwapped;
|
uint256 amountSwapped;
|
||||||
|
|
||||||
|
@ -274,7 +269,6 @@ abstract contract PmStableResolver is Events, Helpers {
|
||||||
uint256 _minOut,
|
uint256 _minOut,
|
||||||
address _path
|
address _path
|
||||||
) external returns (string memory _eventName, bytes memory _eventParam) {
|
) external returns (string memory _eventName, bytes memory _eventParam) {
|
||||||
//
|
|
||||||
uint256 amountSwapped;
|
uint256 amountSwapped;
|
||||||
|
|
||||||
approve(TokenInterface(_input), _path, _amount);
|
approve(TokenInterface(_input), _path, _amount);
|
||||||
|
@ -292,97 +286,6 @@ abstract contract PmStableResolver is Events, Helpers {
|
||||||
_eventName = "LogSwap(address,address,uint256,uint256)";
|
_eventName = "LogSwap(address,address,uint256,uint256)";
|
||||||
_eventParam = abi.encode(_input, _output, _amount, amountSwapped);
|
_eventParam = abi.encode(_input, _output, _amount, amountSwapped);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***************************************
|
|
||||||
Internal
|
|
||||||
****************************************/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Deposit to Save from any asset
|
|
||||||
* @notice Called internally from deposit functions
|
|
||||||
* @param _token Address of token to deposit
|
|
||||||
* @param _amount Amount of token to deposit
|
|
||||||
* @param _path Path to mint mUSD (only needed for Feeder Pool)
|
|
||||||
* @return _eventName Event name
|
|
||||||
* @return _eventParam Event parameters
|
|
||||||
*/
|
|
||||||
|
|
||||||
function _deposit(
|
|
||||||
address _token,
|
|
||||||
uint256 _amount,
|
|
||||||
address _path
|
|
||||||
) internal returns (string memory _eventName, bytes memory _eventParam) {
|
|
||||||
//
|
|
||||||
// 1. Deposit mUSD to Save
|
|
||||||
approve(TokenInterface(mUsdToken), imUsdToken, _amount);
|
|
||||||
uint256 credits = ISavingsContractV2(imUsdToken).depositSavings(
|
|
||||||
_amount
|
|
||||||
);
|
|
||||||
|
|
||||||
// 2. Stake imUSD to Vault
|
|
||||||
approve(TokenInterface(imUsdToken), imUsdVault, credits);
|
|
||||||
IStakingRewardsWithPlatformToken(imUsdVault).stake(credits);
|
|
||||||
|
|
||||||
// 3. Log Events
|
|
||||||
_eventName = "LogDeposit(address,uint256,address)";
|
|
||||||
_eventParam = abi.encode(_token, _amount, _path);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Withdraws from Save
|
|
||||||
* @notice Withdraws token supported by mStable from Save
|
|
||||||
* @param _credits Credits to withdraw
|
|
||||||
* @return amountWithdrawn Amount withdrawn in mUSD
|
|
||||||
*/
|
|
||||||
|
|
||||||
function _withdraw(uint256 _credits)
|
|
||||||
internal
|
|
||||||
returns (uint256 amountWithdrawn)
|
|
||||||
{
|
|
||||||
// 1. Withdraw from Vault
|
|
||||||
IStakingRewardsWithPlatformToken(imUsdVault).withdraw(_credits);
|
|
||||||
|
|
||||||
// 2. Withdraw from Save
|
|
||||||
approve(TokenInterface(imUsdToken), imUsdVault, _credits);
|
|
||||||
amountWithdrawn = ISavingsContractV2(imUsdToken).redeemCredits(
|
|
||||||
_credits
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Returns the reward tokens
|
|
||||||
* @notice Gets the reward tokens from the vault contract
|
|
||||||
* @return rewardToken Address of reward token
|
|
||||||
* @return platformToken Address of platform token
|
|
||||||
*/
|
|
||||||
|
|
||||||
function _getRewardTokens()
|
|
||||||
internal
|
|
||||||
returns (address rewardToken, address platformToken)
|
|
||||||
{
|
|
||||||
rewardToken = IStakingRewardsWithPlatformToken(imUsdVault)
|
|
||||||
.getRewardToken();
|
|
||||||
platformToken = IStakingRewardsWithPlatformToken(imUsdVault)
|
|
||||||
.getPlatformToken();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev Returns the internal balances of the rewardToken and platformToken
|
|
||||||
* @notice Gets current balances of rewardToken and platformToken, used for calculating rewards accrued
|
|
||||||
* @param _rewardToken Address of reward token
|
|
||||||
* @param _platformToken Address of platform token
|
|
||||||
* @return a Amount of reward token
|
|
||||||
* @return b Amount of platform token
|
|
||||||
*/
|
|
||||||
|
|
||||||
function _getRewardInternalBal(address _rewardToken, address _platformToken)
|
|
||||||
internal
|
|
||||||
view
|
|
||||||
returns (uint256 a, uint256 b)
|
|
||||||
{
|
|
||||||
a = TokenInterface(_rewardToken).balanceOf(address(this));
|
|
||||||
b = TokenInterface(_platformToken).balanceOf(address(this));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
contract ConnectV2PmStable is PmStableResolver {
|
contract ConnectV2PmStable is PmStableResolver {
|
||||||
|
|
|
@ -3,7 +3,7 @@ import { IERC20Minimal__factory } from "../../../typechain";
|
||||||
import { BigNumber as BN } from "ethers";
|
import { BigNumber as BN } from "ethers";
|
||||||
|
|
||||||
export const DEAD_ADDRESS = "0x0000000000000000000000000000000000000001";
|
export const DEAD_ADDRESS = "0x0000000000000000000000000000000000000001";
|
||||||
export const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
|
export const ZERO_ADDRESS = ethers.constants.AddressZero;
|
||||||
|
|
||||||
export const DEFAULT_DECIMALS = 18;
|
export const DEFAULT_DECIMALS = 18;
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ import { IERC20Minimal__factory } from "../../../typechain";
|
||||||
import { BigNumber as BN } from "ethers";
|
import { BigNumber as BN } from "ethers";
|
||||||
|
|
||||||
export const DEAD_ADDRESS = "0x0000000000000000000000000000000000000001";
|
export const DEAD_ADDRESS = "0x0000000000000000000000000000000000000001";
|
||||||
export const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
|
export const ZERO_ADDRESS = ethers.constants.AddressZero;
|
||||||
|
|
||||||
export const DEFAULT_DECIMALS = 18;
|
export const DEFAULT_DECIMALS = 18;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user