From 6211c526d8912a14c79ba8806063acfcbfc6fad9 Mon Sep 17 00:00:00 2001 From: Samyak Jain <34437877+KaymasJain@users.noreply.github.com> Date: Sat, 26 Jun 2021 18:30:03 +0530 Subject: [PATCH] updated all the functions other adjust --- .../mainnet/connectors/liquity/events.sol | 6 ++- .../mainnet/connectors/liquity/interface.sol | 2 + contracts/mainnet/connectors/liquity/main.sol | 39 +++++++++++++------ 3 files changed, 34 insertions(+), 13 deletions(-) diff --git a/contracts/mainnet/connectors/liquity/events.sol b/contracts/mainnet/connectors/liquity/events.sol index 8dc24320..47105414 100644 --- a/contracts/mainnet/connectors/liquity/events.sol +++ b/contracts/mainnet/connectors/liquity/events.sol @@ -38,6 +38,7 @@ contract Events { uint lqtyGain, address frontendTag, uint getDepositId, + uint setDepositId, uint setEthGainId, uint setLqtyGainId ); @@ -45,6 +46,7 @@ contract Events { uint amount, uint ethGain, uint lqtyGain, + uint getWithdrawId, uint setWithdrawId, uint setEthGainId, uint setLqtyGainId @@ -52,7 +54,7 @@ contract Events { event LogStabilityMoveEthGainToTrove(address indexed borrower, uint amount); /* Staking */ - event LogStake(address indexed borrower, uint amount, uint getStakeId, uint setEthGainId, uint setLusdGainId); - event LogUnstake(address indexed borrower, uint amount, uint setUnstakeId, uint setEthGainId, uint setLusdGainId); + event LogStake(address indexed borrower, uint amount, uint setStakeId, uint getStakeId, uint setEthGainId, uint setLusdGainId); + event LogUnstake(address indexed borrower, uint amount, uint getUnstakeId, uint setUnstakeId, uint setEthGainId, uint setLusdGainId); event LogClaimStakingGains(address indexed borrower, uint ethGain, uint lusdGain, uint setEthGainId, uint setLusdGainId); } diff --git a/contracts/mainnet/connectors/liquity/interface.sol b/contracts/mainnet/connectors/liquity/interface.sol index b7318356..8ffd65d1 100644 --- a/contracts/mainnet/connectors/liquity/interface.sol +++ b/contracts/mainnet/connectors/liquity/interface.sol @@ -54,6 +54,7 @@ interface StabilityPoolLike { function withdrawETHGainToTrove(address _upperHint, address _lowerHint) external; function getDepositorETHGain(address _depositor) external view returns (uint); function getDepositorLQTYGain(address _depositor) external view returns (uint); + function getCompoundedLUSDDeposit(address _depositor) external view returns (uint); } interface StakingLike { @@ -61,6 +62,7 @@ interface StakingLike { function unstake(uint _LQTYamount) external; function getPendingETHGain(address _user) external view returns (uint); function getPendingLUSDGain(address _user) external view returns (uint); + function stakes(address owner) external view returns (uint); } interface CollateralSurplusLike { diff --git a/contracts/mainnet/connectors/liquity/main.sol b/contracts/mainnet/connectors/liquity/main.sol index 643994fa..efe05d73 100644 --- a/contracts/mainnet/connectors/liquity/main.sol +++ b/contracts/mainnet/connectors/liquity/main.sol @@ -282,11 +282,14 @@ abstract contract LiquityResolver is Events, Helpers { uint amount, address frontendTag, uint getDepositId, + uint setDepositId, uint setEthGainId, uint setLqtyGainId ) external payable returns (string memory _eventName, bytes memory _eventParam) { amount = getUint(getDepositId, amount); + amount = amount == uint(-1) ? lusdToken.balanceOf(address(this)) : amount; + uint ethGain = stabilityPool.getDepositorETHGain(address(this)); uint lqtyBalanceBefore = lqtyToken.balanceOf(address(this)); @@ -295,11 +298,12 @@ abstract contract LiquityResolver is Events, Helpers { uint lqtyBalanceAfter = lqtyToken.balanceOf(address(this)); uint lqtyGain = sub(lqtyBalanceAfter, lqtyBalanceBefore); + setUint(setDepositId, amount); setUint(setEthGainId, ethGain); setUint(setLqtyGainId, lqtyGain); - _eventName = "LogStabilityDeposit(address,uint256,uint256,uint256,address,uint256,uint256,uint256)"; - _eventParam = abi.encode(address(this), amount, ethGain, lqtyGain, frontendTag, getDepositId, setEthGainId, setLqtyGainId); + _eventName = "LogStabilityDeposit(address,uint256,uint256,uint256,address,uint256,uint256,uint256,uint256)"; + _eventParam = abi.encode(address(this), amount, ethGain, lqtyGain, frontendTag, getDepositId, setDepositId, setEthGainId, setLqtyGainId); } /** @@ -312,10 +316,15 @@ abstract contract LiquityResolver is Events, Helpers { */ function stabilityWithdraw( uint amount, + uint getWithdrawId, uint setWithdrawId, uint setEthGainId, uint setLqtyGainId ) external returns (string memory _eventName, bytes memory _eventParam) { + amount = getUint(getWithdrawId, amount); + + amount = amount == uint(-1) ? StabilityPoolLike.getCompoundedLUSDDeposit(address(this)) : amount; + uint ethGain = stabilityPool.getDepositorETHGain(address(this)); uint lqtyBalanceBefore = lqtyToken.balanceOf(address(this)); @@ -328,8 +337,8 @@ abstract contract LiquityResolver is Events, Helpers { setUint(setEthGainId, ethGain); setUint(setLqtyGainId, lqtyGain); - _eventName = "LogStabilityWithdraw(address,uint256,uint256,uint256,uint256,uint256,uint256)"; - _eventParam = abi.encode(address(this), amount, ethGain, lqtyGain, setWithdrawId, setEthGainId, setLqtyGainId); + _eventName = "LogStabilityWithdraw(address,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"; + _eventParam = abi.encode(address(this), amount, ethGain, lqtyGain, getWithdrawId, setWithdrawId, setEthGainId, setLqtyGainId); } /** @@ -362,19 +371,23 @@ abstract contract LiquityResolver is Events, Helpers { function stake( uint amount, uint getStakeId, + uint setStakeId, uint setEthGainId, uint setLusdGainId ) external returns (string memory _eventName, bytes memory _eventParam) { + amount = getUint(getStakeId, amount); + amount = amount == uint(-1) ? lqtyToken.balanceOf(address(this)) : amount; + uint ethGain = staking.getPendingETHGain(address(this)); uint lusdGain = staking.getPendingLUSDGain(address(this)); - amount = getUint(getStakeId, amount); staking.stake(amount); + setUint(setStakeId, amount); setUint(setEthGainId, ethGain); setUint(setLusdGainId, lusdGain); - _eventName = "LogStake(address,uint256,uint256,uint256,uint256)"; - _eventParam = abi.encode(address(this), amount, getStakeId, setEthGainId, setLusdGainId); + _eventName = "LogStake(address,uint256,uint256,uint256,uint256,uint256)"; + _eventParam = abi.encode(address(this), amount, getStakeId, setStakeId, setEthGainId, setLusdGainId); } /** @@ -387,20 +400,24 @@ abstract contract LiquityResolver is Events, Helpers { */ function unstake( uint amount, - uint setStakeId, + uint getUnstakeId, + uint setUnstakeId, uint setEthGainId, uint setLusdGainId ) external returns (string memory _eventName, bytes memory _eventParam) { + amount = getUint(getUnstakeId, amount); + amount = amount == uint(-1) ? staking.stakes(address(this)) : amount; + uint ethGain = staking.getPendingETHGain(address(this)); uint lusdGain = staking.getPendingLUSDGain(address(this)); staking.unstake(amount); - setUint(setStakeId, amount); + setUint(setUnstakeId, amount); setUint(setEthGainId, ethGain); setUint(setLusdGainId, lusdGain); - _eventName = "LogUnstake(address,uint256,uint256,uint256,uint256)"; - _eventParam = abi.encode(address(this), amount, setStakeId, setEthGainId, setLusdGainId); + _eventName = "LogUnstake(address,uint256,uint256,uint256,uint256,uint256)"; + _eventParam = abi.encode(address(this), amount, getUnstakeId, setUnstakeId, setEthGainId, setLusdGainId); } /**