arnaucube
arnaucube/poseidon-solidity-examplePublic Self-hosted repository
poseidon-solidity-example/lib/forge-std/src/interfaces/IMulticall3.sol
lib/forge-std/src/interfaces/IMulticall3.solRaw
 1// SPDX-License-Identifier: MIT
 2pragma solidity >=0.6.2 <0.9.0;
 3
 4pragma experimental ABIEncoderV2;
 5
 6interface IMulticall3 {
 7    struct Call {
 8        address target;
 9        bytes callData;
10    }
11
12    struct Call3 {
13        address target;
14        bool allowFailure;
15        bytes callData;
16    }
17
18    struct Call3Value {
19        address target;
20        bool allowFailure;
21        uint256 value;
22        bytes callData;
23    }
24
25    struct Result {
26        bool success;
27        bytes returnData;
28    }
29
30    function aggregate(Call[] calldata calls)
31        external
32        payable
33        returns (uint256 blockNumber, bytes[] memory returnData);
34
35    function aggregate3(Call3[] calldata calls) external payable returns (Result[] memory returnData);
36
37    function aggregate3Value(Call3Value[] calldata calls) external payable returns (Result[] memory returnData);
38
39    function blockAndAggregate(Call[] calldata calls)
40        external
41        payable
42        returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData);
43
44    function getBasefee() external view returns (uint256 basefee);
45
46    function getBlockHash(uint256 blockNumber) external view returns (bytes32 blockHash);
47
48    function getBlockNumber() external view returns (uint256 blockNumber);
49
50    function getChainId() external view returns (uint256 chainid);
51
52    function getCurrentBlockCoinbase() external view returns (address coinbase);
53
54    function getCurrentBlockDifficulty() external view returns (uint256 difficulty);
55
56    function getCurrentBlockGasLimit() external view returns (uint256 gaslimit);
57
58    function getCurrentBlockTimestamp() external view returns (uint256 timestamp);
59
60    function getEthBalance(address addr) external view returns (uint256 balance);
61
62    function getLastBlockHash() external view returns (bytes32 blockHash);
63
64    function tryAggregate(bool requireSuccess, Call[] calldata calls)
65        external
66        payable
67        returns (Result[] memory returnData);
68
69    function tryBlockAndAggregate(bool requireSuccess, Call[] calldata calls)
70        external
71        payable
72        returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData);
73}