From e82e99488e931867998575d53c10eb90dae1c1dc Mon Sep 17 00:00:00 2001 From: Samyak Jain <34437877+KaymasJain@users.noreply.github.com> Date: Fri, 8 May 2020 21:26:06 +1000 Subject: [PATCH] added getPosition in curve resolver --- protocols/curve.sol | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/protocols/curve.sol b/protocols/curve.sol index c80d5ba..df87d9c 100644 --- a/protocols/curve.sol +++ b/protocols/curve.sol @@ -33,6 +33,8 @@ interface ICurveZap { interface TokenInterface { function decimals() external view returns (uint); + function totalSupply() external view returns (uint256); + function balanceOf(address) external view returns (uint); } @@ -191,6 +193,28 @@ contract Resolver is CurveHelpers { curveAmt = ICurve(getCurveSwapAddr()).calc_token_amount(amts, false); unitAmt = getWithdrawtUnitAmt(token, withdrawAmt, curveAmt, slippage); } + + function getPosition( + address user + ) public view returns ( + uint userBal, + uint totalSupply, + uint userShare, + uint poolDaiBal, + uint poolUsdcBal, + uint poolUsdtBal, + uint poolSusdBal + ) { + TokenInterface curveToken = TokenInterface(getCurveTokenAddr()); + userBal = curveToken.balanceOf(user); + totalSupply = curveToken.totalSupply(); + userShare = wdiv(userBal, totalSupply); + ICurve curveContract = ICurve(getCurveSwapAddr()); + poolDaiBal = TokenInterface(curveContract.underlying_coins(0)).balanceOf(getCurveSwapAddr()); + poolUsdcBal = TokenInterface(curveContract.underlying_coins(1)).balanceOf(getCurveSwapAddr()); + poolUsdtBal = TokenInterface(curveContract.underlying_coins(2)).balanceOf(getCurveSwapAddr()); + poolSusdBal = TokenInterface(curveContract.underlying_coins(3)).balanceOf(getCurveSwapAddr()); + } }