feat: Add foundry environment and CI
This commit is contained in:
73
foundry/lib/forge-std/src/interfaces/IMulticall3.sol
Normal file
73
foundry/lib/forge-std/src/interfaces/IMulticall3.sol
Normal file
@@ -0,0 +1,73 @@
|
||||
// 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);
|
||||
}
|
||||
Reference in New Issue
Block a user