mirror of
				https://github.com/Instadapp/dsa-connectors.git
				synced 2024-07-29 22:37:00 +00:00 
			
		
		
		
	updated quickswap
This commit is contained in:
		
							parent
							
								
									95ed18984f
								
							
						
					
					
						commit
						3b4e272090
					
				|  | @ -15,74 +15,80 @@ contract Helpers is DSMath, Basic { | |||
|     ISushiSwapFactory immutable factory = | ||||
|         ISushiSwapFactory(0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac); | ||||
| 
 | ||||
|     function _deposit(uint256 _pid, uint256 _amount, uint256 _version) internal { | ||||
|         if(_version == 2) | ||||
|             masterChefV2.deposit(_pid, _amount, address(this)); | ||||
|     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(_pid, _amount); | ||||
|             masterChef.deposit(data.poolId, _amount); | ||||
|     } | ||||
| 
 | ||||
|     function _withdraw(uint256 _pid, uint256 _amount, uint256 _version) internal { | ||||
|         if(_version == 2) | ||||
|             masterChefV2.withdraw(_pid, _amount, address(this)); | ||||
|     function _withdraw(Metadata memory data, uint256 _amount) internal { | ||||
|         if(data.version == 2) | ||||
|             masterChefV2.withdraw(data.poolId, _amount, address(this)); | ||||
|         else | ||||
|             masterChef.withdraw(_pid, _amount); | ||||
|             masterChef.withdraw(data.poolId, _amount); | ||||
|     } | ||||
| 
 | ||||
|     function _harvest(uint256 _pid) internal { | ||||
|         masterChefV2.harvest(_pid, address(this)); | ||||
|     function _harvest(Metadata memory data) internal { | ||||
|         masterChefV2.harvest(data.poolId, address(this)); | ||||
|     } | ||||
| 
 | ||||
|     function _withdrawAndHarvest(uint256 _pid, uint256 _amount, uint256 _version) internal { | ||||
|         if(_version == 2) | ||||
|             masterChefV2.withdrawAndHarvest(_pid, _amount, address(this)); | ||||
|         else _withdraw(_pid, _amount, _version); | ||||
|     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(uint256 _pid, uint256 _version) internal { | ||||
|         if(_version == 2) | ||||
|             masterChefV2.emergencyWithdraw(_pid, address(this)); | ||||
|     function _emergencyWithdraw(Metadata memory data) internal { | ||||
|         if(data.version == 2) | ||||
|             masterChefV2.emergencyWithdraw(data.poolId, address(this)); | ||||
|         else  | ||||
|             masterChef.emergencyWithdraw(_pid, address(this)); | ||||
|             masterChef.emergencyWithdraw(data.poolId, address(this)); | ||||
|     } | ||||
| 
 | ||||
|     function _getPoolId(address tokenA, address tokenB) | ||||
|         internal | ||||
|         view | ||||
|         returns (uint256 poolId, uint256 version, address lpToken) | ||||
|         returns (Metadata memory data) | ||||
|     { | ||||
|         address pair = factory.getPair(tokenA, tokenB); | ||||
|         uint256 length = masterChefV2.poolLength(); | ||||
|         version = 2; | ||||
|         poolId = uint256(-1); | ||||
|         data.version = 2; | ||||
|         data.poolId = uint256(-1); | ||||
| 
 | ||||
|         for (uint256 i = 0; i < length; i++) { | ||||
|             lpToken = masterChefV2.lpToken(i); | ||||
|             if (pair == lpToken) { | ||||
|                 poolId = 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++) { | ||||
|             (lpToken, , , ) = masterChef.poolInfo(i); | ||||
|             if (pair == lpToken) { | ||||
|                 poolId = i; | ||||
|                 version = 1; | ||||
|             (data.lpToken, , , ) = masterChef.poolInfo(i); | ||||
|             if (pair == data.lpToken) { | ||||
|                 data.poolId = i; | ||||
|                 data.version = 1; | ||||
|                 break; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     function _getUserInfo(uint256 _pid, uint256 _version) | ||||
|     function _getUserInfo(Metadata memory data) | ||||
|         internal | ||||
|         view | ||||
|         returns (uint256 lpAmount, uint256 rewardsAmount) | ||||
|     { | ||||
|         if(_version == 2) | ||||
|             (lpAmount, rewardsAmount) = masterChefV2.userInfo(_pid, address(this)); | ||||
|         if(data.version == 2) | ||||
|             (lpAmount, rewardsAmount) = masterChefV2.userInfo(data.poolId, address(this)); | ||||
|         else  | ||||
|             (lpAmount, rewardsAmount) = masterChef.userInfo(_pid, address(this)); | ||||
|             (lpAmount, rewardsAmount) = masterChef.userInfo(data.poolId, address(this)); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -25,7 +25,8 @@ abstract contract SushipswapIncentiveResolver is Helpers, Events { | |||
|         address token2, | ||||
|         uint256 amount, | ||||
|         uint256 getId, | ||||
|         uint256 setId | ||||
|         uint256 setId, | ||||
|         Metadata memory data | ||||
|     ) | ||||
|         external | ||||
|         payable | ||||
|  | @ -34,17 +35,19 @@ abstract contract SushipswapIncentiveResolver is Helpers, Events { | |||
|         token1 = changeEthAddrToWethAddr(token1); | ||||
|         token2 = changeEthAddrToWethAddr(token2); | ||||
|         amount = getUint(getId, amount); | ||||
|         (uint256 _pid, uint256 _version, address lpTokenAddr) = _getPoolId( | ||||
|             token1, | ||||
|             token2 | ||||
|         ); | ||||
|         setUint(setId, _pid); | ||||
|         require(_pid != uint256(-1), "pool-does-not-exist"); | ||||
|         TokenInterface lpToken = TokenInterface(lpTokenAddr); | ||||
|         if(data.poolId == uint256(-1)|| data.version < 0 || data.lpToken == address(0)){ | ||||
|             data = _getPoolId( | ||||
|                 token1, | ||||
|                 token2 | ||||
|             ); | ||||
|         } | ||||
|         setUint(setId, data.poolId); | ||||
|         require(data.poolId != uint256(-1), "pool-does-not-exist"); | ||||
|         TokenInterface lpToken = TokenInterface(data.lpToken); | ||||
|         lpToken.approve(address(masterChef), amount); | ||||
|         _deposit(_pid, amount, _version); | ||||
|         _deposit(data, amount); | ||||
|         _eventName = "LogDeposit(uint256,uint256,uint256)"; | ||||
|         _eventParam = abi.encode(_pid, _version, amount); | ||||
|         _eventParam = abi.encode(data.poolId, data.version, amount); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  | @ -61,7 +64,8 @@ abstract contract SushipswapIncentiveResolver is Helpers, Events { | |||
|         address token2, | ||||
|         uint256 amount, | ||||
|         uint256 getId, | ||||
|         uint256 setId | ||||
|         uint256 setId, | ||||
|         Metadata memory data | ||||
|     ) | ||||
|         external | ||||
|         payable | ||||
|  | @ -70,12 +74,17 @@ abstract contract SushipswapIncentiveResolver is Helpers, Events { | |||
|         token1 = changeEthAddrToWethAddr(token1); | ||||
|         token2 = changeEthAddrToWethAddr(token2); | ||||
|         amount = getUint(getId, amount); | ||||
|         (uint256 _pid, uint256 _version, ) = _getPoolId(token1, token2); | ||||
|         setUint(setId, _pid); | ||||
|         require(_pid != uint256(-1), "pool-does-not-exist"); | ||||
|         _withdraw(_pid, amount, _version); | ||||
|         if(data.poolId == uint256(-1)|| data.version < 0){ | ||||
|             data = _getPoolId( | ||||
|                 token1, | ||||
|                 token2 | ||||
|             ); | ||||
|         } | ||||
|         setUint(setId, data.poolId); | ||||
|         require(data.poolId != uint256(-1), "pool-does-not-exist"); | ||||
|         _withdraw(data, amount); | ||||
|         _eventName = "LogWithdraw(uint256,uint256,uint256)"; | ||||
|         _eventParam = abi.encode(_pid, _version, amount); | ||||
|         _eventParam = abi.encode(data.poolId, data.version, amount); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  | @ -88,7 +97,8 @@ abstract contract SushipswapIncentiveResolver is Helpers, Events { | |||
|     function harvest( | ||||
|         address token1, | ||||
|         address token2, | ||||
|         uint256 setId | ||||
|         uint256 setId, | ||||
|         Metadata memory data | ||||
|     ) | ||||
|         external | ||||
|         payable | ||||
|  | @ -96,14 +106,19 @@ abstract contract SushipswapIncentiveResolver is Helpers, Events { | |||
|     { | ||||
|         token1 = changeEthAddrToWethAddr(token1); | ||||
|         token2 = changeEthAddrToWethAddr(token2); | ||||
|         (uint256 _pid, uint256 _version, ) = _getPoolId(token1, token2); | ||||
|         setUint(setId, _pid); | ||||
|         require(_pid != uint256(-1), "pool-does-not-exist"); | ||||
|         (, uint256 rewardsAmount) = _getUserInfo(_pid, _version); | ||||
|         if (_version == 2) _harvest(_pid); | ||||
|         else _withdraw(_pid, 0, _version); | ||||
|         if(data.poolId == uint256(-1)|| data.version < 0 ){ | ||||
|             data = _getPoolId( | ||||
|                 token1, | ||||
|                 token2 | ||||
|             ); | ||||
|         } | ||||
|         setUint(setId, data.poolId); | ||||
|         require(data.poolId != uint256(-1), "pool-does-not-exist"); | ||||
|         (, uint256 rewardsAmount) = _getUserInfo(data); | ||||
|         if (data.version == 2) _harvest(data); | ||||
|         else _withdraw(data, 0); | ||||
|         _eventName = "LogHarvest(uint256,uint256,uint256)"; | ||||
|         _eventParam = abi.encode(_pid, _version, rewardsAmount); | ||||
|         _eventParam = abi.encode(data.poolId, data.version, rewardsAmount); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  | @ -120,7 +135,8 @@ abstract contract SushipswapIncentiveResolver is Helpers, Events { | |||
|         address token2, | ||||
|         uint256 amount, | ||||
|         uint256 getId, | ||||
|         uint256 setId | ||||
|         uint256 setId, | ||||
|         Metadata memory data | ||||
|     ) | ||||
|         external | ||||
|         payable | ||||
|  | @ -129,13 +145,18 @@ abstract contract SushipswapIncentiveResolver is Helpers, Events { | |||
|         token1 = changeEthAddrToWethAddr(token1); | ||||
|         token2 = changeEthAddrToWethAddr(token2); | ||||
|         amount = getUint(getId, amount); | ||||
|         (uint256 _pid, uint256 _version, ) = _getPoolId(token1, token2); | ||||
|         setUint(setId, _pid); | ||||
|         require(_pid != uint256(-1), "pool-does-not-exist"); | ||||
|         (, uint256 rewardsAmount) = _getUserInfo(_pid, _version); | ||||
|         _withdrawAndHarvest(_pid, amount, _version); | ||||
|         if(data.poolId == uint256(-1)|| data.version < 0){ | ||||
|             data = _getPoolId( | ||||
|                 token1, | ||||
|                 token2 | ||||
|             ); | ||||
|         } | ||||
|         setUint(setId, data.poolId); | ||||
|         require(data.poolId != uint256(-1), "pool-does-not-exist"); | ||||
|         (, uint256 rewardsAmount) = _getUserInfo(data); | ||||
|         _withdrawAndHarvest(data, amount); | ||||
|         _eventName = "LogWithdrawAndHarvest(uint256,uint256,uint256,uint256)"; | ||||
|         _eventParam = abi.encode(_pid, _version, amount, rewardsAmount); | ||||
|         _eventParam = abi.encode(data.poolId, data.version, amount, rewardsAmount); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  | @ -148,7 +169,8 @@ abstract contract SushipswapIncentiveResolver is Helpers, Events { | |||
|     function emergencyWithdraw( | ||||
|         address token1, | ||||
|         address token2, | ||||
|         uint256 setId | ||||
|         uint256 setId, | ||||
|         Metadata memory data | ||||
|     ) | ||||
|         external | ||||
|         payable | ||||
|  | @ -156,16 +178,18 @@ abstract contract SushipswapIncentiveResolver is Helpers, Events { | |||
|     { | ||||
|         token1 = changeEthAddrToWethAddr(token1); | ||||
|         token2 = changeEthAddrToWethAddr(token2); | ||||
|         (uint256 _pid, uint256 _version, ) = _getPoolId(token1, token2); | ||||
|         setUint(setId, _pid); | ||||
|         require(_pid != uint256(-1), "pool-does-not-exist"); | ||||
|         (uint256 lpAmount, uint256 rewardsAmount) = _getUserInfo( | ||||
|             _pid, | ||||
|             _version | ||||
|         ); | ||||
|         _emergencyWithdraw(_pid, _version); | ||||
|         if(data.poolId == uint256(-1)|| data.version < 0 ){ | ||||
|             data = _getPoolId( | ||||
|                 token1, | ||||
|                 token2 | ||||
|             ); | ||||
|         } | ||||
|         setUint(setId, data.poolId); | ||||
|         require(data.poolId != uint256(-1), "pool-does-not-exist"); | ||||
|         (uint256 lpAmount, uint256 rewardsAmount) = _getUserInfo(data); | ||||
|         _emergencyWithdraw(data); | ||||
|         _eventName = "LogEmergencyWithdraw(uint256,uint256,uint256,uint256)"; | ||||
|         _eventParam = abi.encode(_pid, _version, lpAmount, rewardsAmount); | ||||
|         _eventParam = abi.encode(data.poolId, data.version, lpAmount, rewardsAmount); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 pradyuman-verma
						pradyuman-verma