// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.28; 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[] memory calls) external payable returns (uint256 blockNumber, bytes[] memory returnData); function aggregate3(Call3[] memory calls) external payable returns (Result[] memory returnData); function aggregate3Value(Call3Value[] memory calls) external payable returns (Result[] memory returnData); function blockAndAggregate( Call[] memory calls ) external payable returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData); function tryAggregate( bool requireSuccess, Call[] memory calls ) external payable returns (Result[] memory returnData); function tryBlockAndAggregate( bool requireSuccess, Call[] memory 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); }