Comparing sensitive data, confidential files or internal emails?

Most legal and privacy policies prohibit uploading sensitive data online. Diffchecker Desktop ensures your confidential information never leaves your computer. Work offline and compare documents securely.

MasterHealer

Created Diff never expires
33 removals
124 lines
20 additions
112 lines
// SPDX-License-Identifier: MIT
// SPDX-License-Identifier: MIT
pragma solidity 0.8.6;
pragma solidity 0.8.6;


import "@openzeppelin/contracts/proxy/utils/Initializable.sol";
import "./libs/IMasterchef.sol";
import "./libs/IMasterchef.sol";
import "./BaseStrategyLPSingle.sol";
import "./BaseStrategyLPSingle.sol";


contract StrategyMasterChef is BaseStrategyLPSingle, Initializable {
contract StrategyMasterHealer is BaseStrategyLPSingle {
using SafeMath for uint256;
using SafeMath for uint256;
using SafeERC20 for IERC20;
using SafeERC20 for IERC20;


address public masterchefAddress;
address public masterchefAddress;
uint256 public pid;
uint256 public pid;


/**
constructor(
address[8] _configAddresses,
address[5] memory _configAddress, //vaulthealer, masterchef, unirouter, want, earned
_configAddresses[0] _vaultChefAddress,
_configAddresses[1] _masterchefAddress,
_configAddresses[2] _uniRouterAddress,
_configAddresses[3] _wantAddress,
_configAddress[4] _earnedAddress,
_configAddress[5] _usdAddress,
_configAddress[6] _bananaAddress,
*/
function initialize(
address[7] memory _configAddresses,
uint256 _pid,
uint256 _pid,
address[] memory _earnedToWnativePath,
uint256 _tolerance,
address[] memory _earnedToUsdPath,
address[] memory _earnedToWmaticPath,
address[] memory _earnedToBananaPath,
address[] memory _earnedToUsdcPath,
address[] memory _earnedToCrystlPath,
address[] memory _earnedToToken0Path,
address[] memory _earnedToToken0Path,
address[] memory _earnedToToken1Path,
address[] memory _earnedToToken1Path,
address[] memory _token0ToEarnedPath,
address[] memory _token0ToEarnedPath,
address[] memory _token1ToEarnedPath
address[] memory _token1ToEarnedPath
) external initializer {
) {
govAddress = msg.sender;
govAddress = msg.sender;
vaultChefAddress = _configAddresses[0];
vaultChefAddress = _configAddress[0];
masterchefAddress = _configAddresses[1];
masterchefAddress = _configAddress[1];
uniRouterAddress = _configAddresses[2];
uniRouterAddress = _configAddress[2];


wantAddress = _configAddresses[3];
wantAddress = _configAddress[3];
token0Address = IUniPair(wantAddress).token0();
token0Address = IUniPair(wantAddress).token0();
token1Address = IUniPair(wantAddress).token1();
token1Address = IUniPair(wantAddress).token1();


pid = _pid;
pid = _pid;
earnedAddress = _configAddresses[4];
earnedAddress = _configAddress[4];
usdAddress = _configAddresses[5];
tolerance = _tolerance;
bananaAddress = _configAddresses[6];


earnedToWnativePath = _earnedToWnativePath;
earnedToWnativePath = _earnedToWmaticPath;
earnedToUsdPath = _earnedToUsdPath;
earnedToUsdPath = _earnedToUsdcPath;
earnedToBananaPath = _earnedToBananaPath;
earnedToCrystlPath = _earnedToCrystlPath;
earnedToToken0Path = _earnedToToken0Path;
earnedToToken0Path = _earnedToToken0Path;
earnedToToken1Path = _earnedToToken1Path;
earnedToToken1Path = _earnedToToken1Path;
token0ToEarnedPath = _token0ToEarnedPath;
token0ToEarnedPath = _token0ToEarnedPath;
token1ToEarnedPath = _token1ToEarnedPath;
token1ToEarnedPath = _token1ToEarnedPath;


transferOwnership(vaultChefAddress);
transferOwnership(vaultChefAddress);
_resetAllowances();
_resetAllowances();
}
}


function _vaultDeposit(uint256 _amount) internal override {
function _vaultDeposit(uint256 _amount) internal override {
IMasterchef(masterchefAddress).deposit(pid, _amount);
IMasterchef(masterchefAddress).deposit(pid, _amount);
}
}
function _vaultWithdraw(uint256 _amount) internal override {
function _vaultWithdraw(uint256 _amount) internal override {
IMasterchef(masterchefAddress).withdraw(pid, _amount);
IMasterchef(masterchefAddress).withdraw(pid, _amount);
}
}
function _vaultHarvest() internal override {
function _vaultHarvest() internal override {
IMasterchef(masterchefAddress).withdraw(pid, 0);
IMasterchef(masterchefAddress).withdraw(pid, 0);
}
}
function vaultSharesTotal() public override view returns (uint256) {
function vaultSharesTotal() public override view returns (uint256) {
(uint256 amount,) = IMasterchef(masterchefAddress).userInfo(pid, address(this));
(uint256 amount,) = IMasterchef(masterchefAddress).userInfo(pid, address(this));
return amount;
return amount;
}
}
function wantLockedTotal() public override view returns (uint256) {
function wantLockedTotal() public override view returns (uint256) {
return IERC20(wantAddress).balanceOf(address(this))
return IERC20(wantAddress).balanceOf(address(this))
.add(vaultSharesTotal());
.add(vaultSharesTotal());
}
}


function _resetAllowances() internal override {
function _resetAllowances() internal override {
IERC20(wantAddress).safeApprove(masterchefAddress, uint256(0));
IERC20(wantAddress).safeApprove(masterchefAddress, uint256(0));
IERC20(wantAddress).safeIncreaseAllowance(
IERC20(wantAddress).safeIncreaseAllowance(
masterchefAddress,
masterchefAddress,
type(uint256).max
type(uint256).max
);
);


IERC20(earnedAddress).safeApprove(uniRouterAddress, uint256(0));
IERC20(earnedAddress).safeApprove(uniRouterAddress, uint256(0));
IERC20(earnedAddress).safeIncreaseAllowance(
IERC20(earnedAddress).safeIncreaseAllowance(
uniRouterAddress,
uniRouterAddress,
type(uint256).max
type(uint256).max
);
);


IERC20(token0Address).safeApprove(uniRouterAddress, uint256(0));
IERC20(token0Address).safeApprove(uniRouterAddress, uint256(0));
IERC20(token0Address).safeIncreaseAllowance(
IERC20(token0Address).safeIncreaseAllowance(
uniRouterAddress,
uniRouterAddress,
type(uint256).max
type(uint256).max
);
);


IERC20(token1Address).safeApprove(uniRouterAddress, uint256(0));
IERC20(token1Address).safeApprove(uniRouterAddress, uint256(0));
IERC20(token1Address).safeIncreaseAllowance(
IERC20(token1Address).safeIncreaseAllowance(
uniRouterAddress,
uniRouterAddress,
type(uint256).max
type(uint256).max
);
);


}
}
function _emergencyVaultWithdraw() internal override {
function _emergencyVaultWithdraw() internal override {
IMasterchef(masterchefAddress).emergencyWithdraw(pid);
IMasterchef(masterchefAddress).emergencyWithdraw(pid);
}
}


function _beforeDeposit(address _to) internal override {
function _beforeDeposit(address _to) internal override {
}
}


function _beforeWithdraw(address _to) internal override {
function _beforeWithdraw(address _to) internal override {
}
}
}
}