64 lines
2.4 KiB
Solidity
64 lines
2.4 KiB
Solidity
/**
|
|
*Submitted for verification at Etherscan.io on 2021-04-07
|
|
*/
|
|
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
pragma solidity ^0.8.3;
|
|
|
|
/**
|
|
* @title An Ether or token balance scanner
|
|
* @author Maarten Zuidhoorn
|
|
* @author Luit Hollander
|
|
*/
|
|
abstract contract BalanceScanner {
|
|
struct Result {
|
|
bool success;
|
|
bytes data;
|
|
}
|
|
|
|
/**
|
|
* @notice Get the Ether balance for all addresses specified
|
|
* @param addresses The addresses to get the Ether balance for
|
|
* @return results The Ether balance for all addresses in the same order as specified
|
|
*/
|
|
function etherBalances(address[] calldata addresses) external virtual view returns (Result[] memory results);
|
|
|
|
/**
|
|
* @notice Get the ERC-20 token balance of `token` for all addresses specified
|
|
* @dev This does not check if the `token` address specified is actually an ERC-20 token
|
|
* @param addresses The addresses to get the token balance for
|
|
* @param token The address of the ERC-20 token contract
|
|
* @return results The token balance for all addresses in the same order as specified
|
|
*/
|
|
function tokenBalances(address[] calldata addresses, address token) external virtual view returns (Result[] memory results);
|
|
|
|
/**
|
|
* @notice Get the ERC-20 token balance from multiple contracts for a single owner
|
|
* @param owner The address of the token owner
|
|
* @param contracts The addresses of the ERC-20 token contracts
|
|
* @return results The token balances in the same order as the addresses specified
|
|
*/
|
|
function tokensBalance(address owner, address[] calldata contracts) external virtual view returns (Result[] memory results);
|
|
|
|
/**
|
|
* @notice Call multiple contracts with the provided arbitrary data
|
|
* @param contracts The contracts to call
|
|
* @param data The data to call the contracts with
|
|
* @return results The raw result of the contract calls
|
|
*/
|
|
function call(address[] calldata contracts, bytes[] calldata data) external virtual view returns (Result[] memory results);
|
|
|
|
/**
|
|
* @notice Call multiple contracts with the provided arbitrary data
|
|
* @param contracts The contracts to call
|
|
* @param data The data to call the contracts with
|
|
* @param gas The amount of gas to call the contracts with
|
|
* @return results The raw result of the contract calls
|
|
*/
|
|
function call(
|
|
address[] calldata contracts,
|
|
bytes[] calldata data,
|
|
uint256 gas
|
|
) public view virtual returns (Result[] memory results);
|
|
} |