alloy-multicall 0.1.4

Multicall for everyone.
Documentation
#![allow(missing_docs)]

use alloy_sol_types::sol;

sol! {
  #[derive(Debug)]
  #[sol(rpc, abi)]
  /// Module containing types and functions of the Multicall3 contract.
  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);
  }
}