mirror of
				https://github.com/Instadapp/dsa-connectors.git
				synced 2024-07-29 22:37:00 +00:00 
			
		
		
		
	paybackOnBehalfOf added - Mainnet
This commit is contained in:
		
							parent
							
								
									a65d9dd7a6
								
							
						
					
					
						commit
						9255d1a77e
					
				|  | @ -53,4 +53,12 @@ contract Events { | |||
| 		uint256 getId, | ||||
| 		uint256 setId | ||||
| 	); | ||||
| 	event LogPaybackOnBehalfOf( | ||||
| 		address token, | ||||
| 		uint256 amt, | ||||
| 		uint256 rateMode, | ||||
| 		address onBehalfOf, | ||||
| 		uint256 getId, | ||||
| 		uint256 setId | ||||
| 	); | ||||
| } | ||||
|  |  | |||
|  | @ -50,6 +50,21 @@ abstract contract Helpers is DSMath, Basic { | |||
| 		return rateMode == 1 ? stableDebt : variableDebt; | ||||
| 	} | ||||
| 
 | ||||
| 	/** | ||||
| 	 * @dev Get OnBehalfOf user's total debt balance & fee for an asset | ||||
| 	 * @param token token address of the debt.(For ETH: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE) | ||||
| 	 * @param rateMode Borrow rate mode (Stable = 1, Variable = 2) | ||||
| 	 */ | ||||
| 	function getOnBehalfOfPaybackBalance(address token, uint256 rateMode, address onBehalfOf) | ||||
| 		internal | ||||
| 		view | ||||
| 		returns (uint256) | ||||
| 	{ | ||||
| 		(, uint256 stableDebt, uint256 variableDebt, , , , , , ) = aaveData | ||||
| 			.getUserReserveData(token, onBehalfOf); | ||||
| 		return rateMode == 1 ? stableDebt : variableDebt; | ||||
| 	} | ||||
| 
 | ||||
| 	/** | ||||
| 	 * @dev Get total collateral balance for an asset | ||||
| 	 * @param token token address of the collateral.(For ETH: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE) | ||||
|  |  | |||
|  | @ -313,6 +313,52 @@ abstract contract AaveResolver is Events, Helpers { | |||
| 		_eventParam = abi.encode(token, _amt, rateMode, getId, setId); | ||||
| 	} | ||||
| 
 | ||||
| 	/** | ||||
| 	 * @dev Payback borrowed ETH/ERC20_Token on behalf of a user. | ||||
| 	 * @notice Payback debt owed on behalf os a user. | ||||
| 	 * @param token The address of the token to payback.(For ETH: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE) | ||||
| 	 * @param amt The amount of the token to payback. (For max: `uint256(-1)`) | ||||
| 	 * @param rateMode The type of debt paying back. (For Stable: 1, Variable: 2) | ||||
| 	 * @param onBehalfOf Address of user who's debt to repay. | ||||
| 	 * @param getId ID to retrieve amt. | ||||
| 	 * @param setId ID stores the amount of tokens paid back. | ||||
| 	 */ | ||||
| 	function paybackOnBehalfOf( | ||||
| 		address token, | ||||
| 		uint256 amt, | ||||
| 		uint256 rateMode, | ||||
| 		address onBehalfOf, | ||||
| 		uint256 getId, | ||||
| 		uint256 setId | ||||
| 	) | ||||
| 		external | ||||
| 		payable | ||||
| 		returns (string memory _eventName, bytes memory _eventParam) | ||||
| 	{ | ||||
| 		uint256 _amt = getUint(getId, amt); | ||||
| 
 | ||||
| 		AaveInterface aave = AaveInterface(aaveProvider.getPool()); | ||||
| 
 | ||||
| 		bool isEth = token == ethAddr; | ||||
| 		address _token = isEth ? wethAddr : token; | ||||
| 
 | ||||
| 		TokenInterface tokenContract = TokenInterface(_token); | ||||
| 
 | ||||
| 		_amt = _amt == uint256(-1) ? getOnBehalfOfPaybackBalance(_token, rateMode, onBehalfOf) : _amt; | ||||
| 
 | ||||
| 		if (isEth) convertEthToWeth(isEth, tokenContract, _amt); | ||||
| 
 | ||||
| 		approve(tokenContract, address(aave), _amt); | ||||
| 
 | ||||
| 		aave.repay(_token, _amt, rateMode, onBehalfOf); | ||||
| 
 | ||||
| 		setUint(setId, _amt); | ||||
| 
 | ||||
| 		_eventName = "LogPaybackOnBehalfOf(address,uint256,uint256,address,uint256,uint256)"; | ||||
| 		_eventParam = abi.encode(token, _amt, rateMode, onBehalfOf, getId, setId); | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 	/** | ||||
| 	 * @dev Enable collateral | ||||
| 	 * @notice Enable an array of tokens as collateral | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Shriya Tyagi
						Shriya Tyagi