mirror of
https://github.com/Instadapp/dsa-connectors.git
synced 2024-07-29 22:37:00 +00:00
update
This commit is contained in:
parent
fa6886e033
commit
e56ca991e7
|
@ -3,92 +3,101 @@
|
|||
pragma solidity ^0.7.0;
|
||||
pragma experimental ABIEncoderV2;
|
||||
|
||||
import {DSMath} from "../../common/math.sol";
|
||||
import {Basic} from "../../common/basic.sol";
|
||||
import { DSMath } from "../../common/math.sol";
|
||||
import { Basic } from "../../common/basic.sol";
|
||||
import "./interface.sol";
|
||||
|
||||
contract Helpers is DSMath, Basic {
|
||||
IMasterChefV2 immutable masterChefV2 =
|
||||
IMasterChefV2(0xEF0881eC094552b2e128Cf945EF17a6752B4Ec5d);
|
||||
IMasterChef immutable masterChef =
|
||||
IMasterChef(0xc2EdaD668740f1aA35E4D8f227fB8E17dcA888Cd);
|
||||
ISushiSwapFactory immutable factory =
|
||||
ISushiSwapFactory(0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac);
|
||||
IMasterChefV2 immutable masterChefV2 =
|
||||
IMasterChefV2(0xEF0881eC094552b2e128Cf945EF17a6752B4Ec5d);
|
||||
IMasterChef immutable masterChef =
|
||||
IMasterChef(0xc2EdaD668740f1aA35E4D8f227fB8E17dcA888Cd);
|
||||
ISushiSwapFactory immutable factory =
|
||||
ISushiSwapFactory(0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac);
|
||||
|
||||
struct Metadata {
|
||||
uint256 poolId;
|
||||
uint256 version;
|
||||
address lpToken;
|
||||
}
|
||||
struct Metadata {
|
||||
uint256 poolId;
|
||||
uint256 version;
|
||||
address lpToken;
|
||||
}
|
||||
|
||||
function _deposit(Metadata memory data, uint256 _amount) internal {
|
||||
if(data.version == 2)
|
||||
masterChefV2.deposit(data.poolId, _amount, address(this));
|
||||
else
|
||||
masterChef.deposit(data.poolId, _amount);
|
||||
}
|
||||
function _deposit(Metadata memory data, uint256 _amount) internal {
|
||||
if (data.version == 2)
|
||||
masterChefV2.deposit(data.poolId, _amount, address(this));
|
||||
else masterChef.deposit(data.poolId, _amount);
|
||||
}
|
||||
|
||||
function _withdraw(Metadata memory data, uint256 _amount) internal {
|
||||
if(data.version == 2)
|
||||
masterChefV2.withdraw(data.poolId, _amount, address(this));
|
||||
else
|
||||
masterChef.withdraw(data.poolId, _amount);
|
||||
}
|
||||
function _withdraw(Metadata memory data, uint256 _amount) internal {
|
||||
if (data.version == 2)
|
||||
masterChefV2.withdraw(data.poolId, _amount, address(this));
|
||||
else masterChef.withdraw(data.poolId, _amount);
|
||||
}
|
||||
|
||||
function _harvest(Metadata memory data) internal {
|
||||
masterChefV2.harvest(data.poolId, address(this));
|
||||
}
|
||||
function _harvest(Metadata memory data) internal {
|
||||
masterChefV2.harvest(data.poolId, address(this));
|
||||
}
|
||||
|
||||
function _withdrawAndHarvest(Metadata memory data, uint256 _amount) internal {
|
||||
if(data.version == 2)
|
||||
masterChefV2.withdrawAndHarvest(data.poolId, _amount, address(this));
|
||||
else _withdraw(data, _amount);
|
||||
}
|
||||
function _withdrawAndHarvest(Metadata memory data, uint256 _amount)
|
||||
internal
|
||||
{
|
||||
if (data.version == 2)
|
||||
masterChefV2.withdrawAndHarvest(
|
||||
data.poolId,
|
||||
_amount,
|
||||
address(this)
|
||||
);
|
||||
else _withdraw(data, _amount);
|
||||
}
|
||||
|
||||
function _emergencyWithdraw(Metadata memory data) internal {
|
||||
if(data.version == 2)
|
||||
masterChefV2.emergencyWithdraw(data.poolId, address(this));
|
||||
else
|
||||
masterChef.emergencyWithdraw(data.poolId, address(this));
|
||||
}
|
||||
function _emergencyWithdraw(Metadata memory data) internal {
|
||||
if (data.version == 2)
|
||||
masterChefV2.emergencyWithdraw(data.poolId, address(this));
|
||||
else masterChef.emergencyWithdraw(data.poolId, address(this));
|
||||
}
|
||||
|
||||
function _getPoolId(address tokenA, address tokenB)
|
||||
internal
|
||||
view
|
||||
returns (Metadata memory data)
|
||||
{
|
||||
address pair = factory.getPair(tokenA, tokenB);
|
||||
uint256 length = masterChefV2.poolLength();
|
||||
data.version = 2;
|
||||
data.poolId = uint256(-1);
|
||||
function _getPoolId(address tokenA, address tokenB)
|
||||
internal
|
||||
view
|
||||
returns (Metadata memory data)
|
||||
{
|
||||
address pair = factory.getPair(tokenA, tokenB);
|
||||
uint256 length = masterChefV2.poolLength();
|
||||
data.version = 2;
|
||||
data.poolId = uint256(-1);
|
||||
|
||||
for (uint256 i = 0; i < length; i++) {
|
||||
data.lpToken = masterChefV2.lpToken(i);
|
||||
if (pair == data.lpToken) {
|
||||
data.poolId = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (uint256 i = 0; i < length; i++) {
|
||||
data.lpToken = masterChefV2.lpToken(i);
|
||||
if (pair == data.lpToken) {
|
||||
data.poolId = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
uint256 lengthV1 = masterChef.poolLength();
|
||||
for (uint256 i = 0; i < lengthV1; i++) {
|
||||
(data.lpToken, , , ) = masterChef.poolInfo(i);
|
||||
if (pair == data.lpToken) {
|
||||
data.poolId = i;
|
||||
data.version = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
uint256 lengthV1 = masterChef.poolLength();
|
||||
for (uint256 i = 0; i < lengthV1; i++) {
|
||||
(data.lpToken, , , ) = masterChef.poolInfo(i);
|
||||
if (pair == data.lpToken) {
|
||||
data.poolId = i;
|
||||
data.version = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function _getUserInfo(Metadata memory data)
|
||||
internal
|
||||
view
|
||||
returns (uint256 lpAmount, uint256 rewardsAmount)
|
||||
{
|
||||
if(data.version == 2)
|
||||
(lpAmount, rewardsAmount) = masterChefV2.userInfo(data.poolId, address(this));
|
||||
else
|
||||
(lpAmount, rewardsAmount) = masterChef.userInfo(data.poolId, address(this));
|
||||
}
|
||||
function _getUserInfo(Metadata memory data)
|
||||
internal
|
||||
view
|
||||
returns (uint256 lpAmount, uint256 rewardsAmount)
|
||||
{
|
||||
if (data.version == 2)
|
||||
(lpAmount, rewardsAmount) = masterChefV2.userInfo(
|
||||
data.poolId,
|
||||
address(this)
|
||||
);
|
||||
else
|
||||
(lpAmount, rewardsAmount) = masterChef.userInfo(
|
||||
data.poolId,
|
||||
address(this)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,116 +2,125 @@ pragma solidity ^0.7.0;
|
|||
pragma experimental ABIEncoderV2;
|
||||
|
||||
struct UserInfo {
|
||||
uint256 amount;
|
||||
uint256 rewardDebt;
|
||||
uint256 amount;
|
||||
uint256 rewardDebt;
|
||||
}
|
||||
|
||||
struct PoolInfo {
|
||||
IERC20 lpToken; // Address of LP token contract.
|
||||
uint256 allocPoint; // How many allocation points assigned to this pool. SUSHIs to distribute per block.
|
||||
uint256 lastRewardBlock; // Last block number that SUSHIs distribution occurs.
|
||||
uint256 accSushiPerShare; // Accumulated SUSHIs per share, times 1e12. See below.
|
||||
IERC20 lpToken; // Address of LP token contract.
|
||||
uint256 allocPoint; // How many allocation points assigned to this pool. SUSHIs to distribute per block.
|
||||
uint256 lastRewardBlock; // Last block number that SUSHIs distribution occurs.
|
||||
uint256 accSushiPerShare; // Accumulated SUSHIs per share, times 1e12. See below.
|
||||
}
|
||||
|
||||
interface IERC20 {
|
||||
function totalSupply() external view returns (uint256);
|
||||
function totalSupply() external view returns (uint256);
|
||||
|
||||
function balanceOf(address account) external view returns (uint256);
|
||||
function balanceOf(address account) external view returns (uint256);
|
||||
|
||||
function allowance(address owner, address spender) external view returns (uint256);
|
||||
function allowance(address owner, address spender)
|
||||
external
|
||||
view
|
||||
returns (uint256);
|
||||
|
||||
function approve(address spender, uint256 amount) external returns (bool);
|
||||
function approve(address spender, uint256 amount) external returns (bool);
|
||||
|
||||
event Transfer(address indexed from, address indexed to, uint256 value);
|
||||
event Approval(address indexed owner, address indexed spender, uint256 value);
|
||||
event Transfer(address indexed from, address indexed to, uint256 value);
|
||||
event Approval(
|
||||
address indexed owner,
|
||||
address indexed spender,
|
||||
uint256 value
|
||||
);
|
||||
|
||||
/// @notice EIP 2612
|
||||
function permit(
|
||||
address owner,
|
||||
address spender,
|
||||
uint256 value,
|
||||
uint256 deadline,
|
||||
uint8 v,
|
||||
bytes32 r,
|
||||
bytes32 s
|
||||
) external;
|
||||
/// @notice EIP 2612
|
||||
function permit(
|
||||
address owner,
|
||||
address spender,
|
||||
uint256 value,
|
||||
uint256 deadline,
|
||||
uint8 v,
|
||||
bytes32 r,
|
||||
bytes32 s
|
||||
) external;
|
||||
}
|
||||
|
||||
interface IMasterChef {
|
||||
function poolLength() external view returns (uint256);
|
||||
function poolLength() external view returns (uint256);
|
||||
|
||||
function updatePool(uint256 pid) external returns (PoolInfo memory);
|
||||
function updatePool(uint256 pid) external returns (PoolInfo memory);
|
||||
|
||||
function poolInfo(uint256 pid) external view returns (address, uint256, uint256, uint256);
|
||||
function poolInfo(uint256 pid)
|
||||
external
|
||||
view
|
||||
returns (
|
||||
address,
|
||||
uint256,
|
||||
uint256,
|
||||
uint256
|
||||
);
|
||||
|
||||
function userInfo(uint256 _pid, address _user)
|
||||
external
|
||||
view
|
||||
returns (uint256, uint256);
|
||||
function userInfo(uint256 _pid, address _user)
|
||||
external
|
||||
view
|
||||
returns (uint256, uint256);
|
||||
|
||||
function deposit(
|
||||
uint256 pid,
|
||||
uint256 amount
|
||||
) external;
|
||||
function deposit(uint256 pid, uint256 amount) external;
|
||||
|
||||
function withdraw(
|
||||
uint256 pid,
|
||||
uint256 amount
|
||||
) external;
|
||||
function withdraw(uint256 pid, uint256 amount) external;
|
||||
|
||||
function emergencyWithdraw(uint256 pid, address to) external;
|
||||
function emergencyWithdraw(uint256 pid, address to) external;
|
||||
}
|
||||
|
||||
interface IMasterChefV2 {
|
||||
function poolLength() external view returns (uint256);
|
||||
function poolLength() external view returns (uint256);
|
||||
|
||||
function updatePool(uint256 pid) external returns (PoolInfo memory);
|
||||
function updatePool(uint256 pid) external returns (PoolInfo memory);
|
||||
|
||||
function lpToken(uint256 pid) external view returns (address);
|
||||
function lpToken(uint256 pid) external view returns (address);
|
||||
|
||||
function userInfo(uint256 _pid, address _user)
|
||||
external
|
||||
view
|
||||
returns (uint256, uint256);
|
||||
function userInfo(uint256 _pid, address _user)
|
||||
external
|
||||
view
|
||||
returns (uint256, uint256);
|
||||
|
||||
function deposit(
|
||||
uint256 pid,
|
||||
uint256 amount,
|
||||
address to
|
||||
) external;
|
||||
function deposit(
|
||||
uint256 pid,
|
||||
uint256 amount,
|
||||
address to
|
||||
) external;
|
||||
|
||||
function withdraw(
|
||||
uint256 pid,
|
||||
uint256 amount,
|
||||
address to
|
||||
) external;
|
||||
function withdraw(
|
||||
uint256 pid,
|
||||
uint256 amount,
|
||||
address to
|
||||
) external;
|
||||
|
||||
function emergencyWithdraw(uint256 pid, address to) external;
|
||||
function emergencyWithdraw(uint256 pid, address to) external;
|
||||
|
||||
function harvest(uint256 pid, address to) external;
|
||||
function harvest(uint256 pid, address to) external;
|
||||
|
||||
function withdrawAndHarvest(
|
||||
uint256 pid,
|
||||
uint256 amount,
|
||||
address to
|
||||
) external;
|
||||
function withdrawAndHarvest(
|
||||
uint256 pid,
|
||||
uint256 amount,
|
||||
address to
|
||||
) external;
|
||||
}
|
||||
|
||||
interface ISushiSwapFactory {
|
||||
function getPair(address tokenA, address tokenB)
|
||||
external
|
||||
view
|
||||
returns (address pair);
|
||||
function getPair(address tokenA, address tokenB)
|
||||
external
|
||||
view
|
||||
returns (address pair);
|
||||
|
||||
function allPairs(uint256) external view returns (address pair);
|
||||
function allPairs(uint256) external view returns (address pair);
|
||||
|
||||
function allPairsLength() external view returns (uint256);
|
||||
function allPairsLength() external view returns (uint256);
|
||||
|
||||
function feeTo() external view returns (address);
|
||||
function feeTo() external view returns (address);
|
||||
|
||||
function feeToSetter() external view returns (address);
|
||||
function feeToSetter() external view returns (address);
|
||||
|
||||
function createPair(address tokenA, address tokenB)
|
||||
external
|
||||
returns (address pair);
|
||||
function createPair(address tokenA, address tokenB)
|
||||
external
|
||||
returns (address pair);
|
||||
}
|
||||
|
|
|
@ -202,7 +202,7 @@ abstract contract SushipswapIncentiveResolver is Helpers, Events {
|
|||
require(data.poolId != uint256(-1), "pool-does-not-exist");
|
||||
(uint256 lpAmount, uint256 rewardsAmount) = _getUserInfo(data);
|
||||
_emergencyWithdraw(data);
|
||||
_eventName = "LogEmergencyWithdraw(address,addressuint256,uint256,uint256,uint256)";
|
||||
_eventName = "LogEmergencyWithdraw(address,address,uint256,uint256,uint256,uint256)";
|
||||
_eventParam = abi.encode(
|
||||
token1,
|
||||
token2,
|
||||
|
|
Loading…
Reference in New Issue
Block a user