dsa-resolvers-deprecated/contracts/protocols/balances.sol
2020-06-25 19:59:53 +05:30

35 lines
1.4 KiB
Solidity

pragma solidity ^0.6.0;
interface TokenInterface {
function balanceOf(address) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint256);
}
contract InstaBalanceResolver {
function getBalances(address owner, address[] memory tknAddress) public view returns (uint[] memory) {
uint[] memory tokensBal = new uint[](tknAddress.length);
for (uint 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 getAllowance(address owner, address spender, address[] memory tknAddress) public view returns (uint[] memory) {
uint[] memory tokenAllowances = new uint[](tknAddress.length);
for (uint i = 0; i < tknAddress.length; i++) {
if (tknAddress[i] == 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE) {
tokenAllowances[i] = uint(-1);
} else {
TokenInterface token = TokenInterface(tknAddress[i]);
tokenAllowances[i] = token.allowance(owner, spender);
}
}
return tokenAllowances;
}
}