mirror of
https://github.com/Instadapp/dsa-resolvers-deprecated.git
synced 2024-07-29 22:38:16 +00:00
91 lines
2.7 KiB
Solidity
91 lines
2.7 KiB
Solidity
pragma solidity ^0.6.10;
|
|
pragma experimental ABIEncoderV2;
|
|
|
|
import {TokenInterface} from "./interface.sol";
|
|
|
|
contract Resolver {
|
|
struct TokenData {
|
|
bool isToken;
|
|
string name;
|
|
string symbol;
|
|
uint256 decimals;
|
|
}
|
|
|
|
function getTokenDetails(address[] memory tknAddress)
|
|
public
|
|
view
|
|
returns (TokenData[] memory)
|
|
{
|
|
TokenData[] memory tokenDatas = new TokenData[](tknAddress.length);
|
|
for (uint256 i = 0; i < tknAddress.length; i++) {
|
|
if (tknAddress[i] == 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE) {
|
|
tokenDatas[i] = TokenData(true, "ETHER", "ETH", 18);
|
|
} else {
|
|
TokenInterface token = TokenInterface(tknAddress[i]);
|
|
bool isToken = true;
|
|
|
|
try token.symbol() {} catch {
|
|
isToken = false;
|
|
continue;
|
|
}
|
|
|
|
try token.name() {} catch {
|
|
isToken = false;
|
|
continue;
|
|
}
|
|
|
|
try token.decimals() {} catch {
|
|
isToken = false;
|
|
continue;
|
|
}
|
|
|
|
tokenDatas[i] = TokenData(
|
|
true,
|
|
token.name(),
|
|
token.symbol(),
|
|
token.decimals()
|
|
);
|
|
}
|
|
}
|
|
return tokenDatas;
|
|
}
|
|
|
|
function getBalances(address owner, address[] memory tknAddress)
|
|
public
|
|
view
|
|
returns (uint256[] memory)
|
|
{
|
|
uint256[] memory tokensBal = new uint256[](tknAddress.length);
|
|
for (uint256 i = 0; i < tknAddress.length; i++) {
|
|
if (tknAddress[i] == 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE) {
|
|
tokensBal[i] = owner.balance;
|
|
} else {
|
|
TokenInterface token = TokenInterface(tknAddress[i]);
|
|
tokensBal[i] = token.balanceOf(owner);
|
|
}
|
|
}
|
|
return tokensBal;
|
|
}
|
|
|
|
function getAllowances(
|
|
address owner,
|
|
address spender,
|
|
address[] memory tknAddress
|
|
) public view returns (uint256[] memory) {
|
|
uint256[] memory tokenAllowances = new uint256[](tknAddress.length);
|
|
for (uint256 i = 0; i < tknAddress.length; i++) {
|
|
if (tknAddress[i] == 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE) {
|
|
tokenAllowances[i] = 0;
|
|
} else {
|
|
TokenInterface token = TokenInterface(tknAddress[i]);
|
|
tokenAllowances[i] = token.allowance(owner, spender);
|
|
}
|
|
}
|
|
return tokenAllowances;
|
|
}
|
|
}
|
|
|
|
contract InstaERC20Resolver is Resolver {
|
|
string public constant name = "ERC20-Resolver-v1.1";
|
|
}
|