From 18251b22b1a0385bff11361dd4868ed98ae6607d Mon Sep 17 00:00:00 2001 From: Mubaris NK Date: Tue, 22 Dec 2020 19:55:40 +0530 Subject: [PATCH] Move Uni LP resolver --- contracts/powerResolver/balances.sol | 50 +++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/contracts/powerResolver/balances.sol b/contracts/powerResolver/balances.sol index f7e9dee..9c53290 100644 --- a/contracts/powerResolver/balances.sol +++ b/contracts/powerResolver/balances.sol @@ -5,12 +5,28 @@ interface TokenInterface { function balanceOf(address) external view returns (uint); } +interface UnipairInterface { + function totalSupply() external view returns (uint); + function token0() external view returns (address); + function token1() external view returns (address); + function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); +} + contract Resolver { struct Balances { address owner; uint[] balance; } + + struct UnipairInfo { + address token0; + address token1; + uint reserve0; + uint reserve1; + uint totalSupply; + } + function getBalances(address[] memory owners, address[] memory tknAddress) public view returns (Balances[] memory) { Balances[] memory tokensBal = new Balances[](owners.length); for (uint i = 0; i < owners.length; i++) { @@ -30,9 +46,41 @@ contract Resolver { } return tokensBal; } + + function getUnipairInfo( + address[] memory owners, + address[] memory tknAddress + ) public view returns (Balances[] memory, UnipairInfo[] memory) { + Balances[] memory tokensBal = new Balances[](owners.length); + UnipairInfo[] memory unipair = new UnipairInfo[](tknAddress.length); + + address wethAddr = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; + address ethAddr = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; + + tokensBal = getBalances(owners, tknAddress); + + for (uint i = 0; i < tknAddress.length; i++) { + UnipairInterface lp = UnipairInterface(tknAddress[i]); + address tkn0 = lp.token0() == wethAddr ? ethAddr : lp.token0(); + address tkn1 = lp.token1() == wethAddr ? ethAddr : lp.token1(); + + (uint112 res0, uint112 res1, ) = lp.getReserves(); + uint supply = lp.totalSupply(); + + unipair[i] = UnipairInfo({ + token0: tkn0, + token1: tkn1, + reserve0: res0, + reserve1: res1, + totalSupply: supply + }); + } + + return (tokensBal, unipair); + } } contract InstaPowerERC20Resolver is Resolver { string public constant name = "ERC20-Power-Resolver-v1"; -} \ No newline at end of file +}