74 lines
2.1 KiB
Solidity
74 lines
2.1 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity >=0.6.2 <0.9.0;
|
|
|
|
pragma experimental ABIEncoderV2;
|
|
|
|
interface IMulticall3 {
|
|
struct Call {
|
|
address target;
|
|
bytes callData;
|
|
}
|
|
|
|
struct Call3 {
|
|
address target;
|
|
bool allowFailure;
|
|
bytes callData;
|
|
}
|
|
|
|
struct Call3Value {
|
|
address target;
|
|
bool allowFailure;
|
|
uint256 value;
|
|
bytes callData;
|
|
}
|
|
|
|
struct Result {
|
|
bool success;
|
|
bytes returnData;
|
|
}
|
|
|
|
function aggregate(Call[] calldata calls)
|
|
external
|
|
payable
|
|
returns (uint256 blockNumber, bytes[] memory returnData);
|
|
|
|
function aggregate3(Call3[] calldata calls) external payable returns (Result[] memory returnData);
|
|
|
|
function aggregate3Value(Call3Value[] calldata calls) external payable returns (Result[] memory returnData);
|
|
|
|
function blockAndAggregate(Call[] calldata calls)
|
|
external
|
|
payable
|
|
returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData);
|
|
|
|
function getBasefee() external view returns (uint256 basefee);
|
|
|
|
function getBlockHash(uint256 blockNumber) external view returns (bytes32 blockHash);
|
|
|
|
function getBlockNumber() external view returns (uint256 blockNumber);
|
|
|
|
function getChainId() external view returns (uint256 chainid);
|
|
|
|
function getCurrentBlockCoinbase() external view returns (address coinbase);
|
|
|
|
function getCurrentBlockDifficulty() external view returns (uint256 difficulty);
|
|
|
|
function getCurrentBlockGasLimit() external view returns (uint256 gaslimit);
|
|
|
|
function getCurrentBlockTimestamp() external view returns (uint256 timestamp);
|
|
|
|
function getEthBalance(address addr) external view returns (uint256 balance);
|
|
|
|
function getLastBlockHash() external view returns (bytes32 blockHash);
|
|
|
|
function tryAggregate(bool requireSuccess, Call[] calldata calls)
|
|
external
|
|
payable
|
|
returns (Result[] memory returnData);
|
|
|
|
function tryBlockAndAggregate(bool requireSuccess, Call[] calldata calls)
|
|
external
|
|
payable
|
|
returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData);
|
|
}
|