mirror of
https://github.com/Instadapp/dsa-resolvers-deprecated.git
synced 2024-07-29 22:38:16 +00:00
87 lines
2.8 KiB
Solidity
87 lines
2.8 KiB
Solidity
pragma solidity ^0.6.0;
|
|
pragma experimental ABIEncoderV2;
|
|
|
|
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++) {
|
|
uint[] memory bals = new uint[](tknAddress.length);
|
|
for (uint j = 0; j < tknAddress.length; j++) {
|
|
if (tknAddress[j] == 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE) {
|
|
bals[j] = owners[i].balance;
|
|
} else {
|
|
TokenInterface token = TokenInterface(tknAddress[i]);
|
|
bals[j] = token.balanceOf(owners[i]);
|
|
}
|
|
}
|
|
tokensBal[i] = Balances({
|
|
owner: owners[i],
|
|
balance: bals
|
|
});
|
|
}
|
|
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";
|
|
}
|