{
  "compiler": {
    "version": "0.8.27+commit.40a35a09"
  },
  "language": "Solidity",
  "output": {
    "abi": [
      {
        "inputs": [
          {
            "internalType": "struct IMulticall3.Call[]",
            "name": "calls",
            "type": "tuple[]",
            "components": [
              {
                "internalType": "address",
                "name": "target",
                "type": "address"
              },
              {
                "internalType": "bytes",
                "name": "callData",
                "type": "bytes"
              }
            ]
          }
        ],
        "stateMutability": "payable",
        "type": "function",
        "name": "aggregate",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "blockNumber",
            "type": "uint256"
          },
          {
            "internalType": "bytes[]",
            "name": "returnData",
            "type": "bytes[]"
          }
        ]
      },
      {
        "inputs": [
          {
            "internalType": "struct IMulticall3.Call3[]",
            "name": "calls",
            "type": "tuple[]",
            "components": [
              {
                "internalType": "address",
                "name": "target",
                "type": "address"
              },
              {
                "internalType": "bool",
                "name": "allowFailure",
                "type": "bool"
              },
              {
                "internalType": "bytes",
                "name": "callData",
                "type": "bytes"
              }
            ]
          }
        ],
        "stateMutability": "payable",
        "type": "function",
        "name": "aggregate3",
        "outputs": [
          {
            "internalType": "struct IMulticall3.Result[]",
            "name": "returnData",
            "type": "tuple[]",
            "components": [
              {
                "internalType": "bool",
                "name": "success",
                "type": "bool"
              },
              {
                "internalType": "bytes",
                "name": "returnData",
                "type": "bytes"
              }
            ]
          }
        ]
      },
      {
        "inputs": [
          {
            "internalType": "struct IMulticall3.Call3Value[]",
            "name": "calls",
            "type": "tuple[]",
            "components": [
              {
                "internalType": "address",
                "name": "target",
                "type": "address"
              },
              {
                "internalType": "bool",
                "name": "allowFailure",
                "type": "bool"
              },
              {
                "internalType": "uint256",
                "name": "value",
                "type": "uint256"
              },
              {
                "internalType": "bytes",
                "name": "callData",
                "type": "bytes"
              }
            ]
          }
        ],
        "stateMutability": "payable",
        "type": "function",
        "name": "aggregate3Value",
        "outputs": [
          {
            "internalType": "struct IMulticall3.Result[]",
            "name": "returnData",
            "type": "tuple[]",
            "components": [
              {
                "internalType": "bool",
                "name": "success",
                "type": "bool"
              },
              {
                "internalType": "bytes",
                "name": "returnData",
                "type": "bytes"
              }
            ]
          }
        ]
      },
      {
        "inputs": [
          {
            "internalType": "struct IMulticall3.Call[]",
            "name": "calls",
            "type": "tuple[]",
            "components": [
              {
                "internalType": "address",
                "name": "target",
                "type": "address"
              },
              {
                "internalType": "bytes",
                "name": "callData",
                "type": "bytes"
              }
            ]
          }
        ],
        "stateMutability": "payable",
        "type": "function",
        "name": "blockAndAggregate",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "blockNumber",
            "type": "uint256"
          },
          {
            "internalType": "bytes32",
            "name": "blockHash",
            "type": "bytes32"
          },
          {
            "internalType": "struct IMulticall3.Result[]",
            "name": "returnData",
            "type": "tuple[]",
            "components": [
              {
                "internalType": "bool",
                "name": "success",
                "type": "bool"
              },
              {
                "internalType": "bytes",
                "name": "returnData",
                "type": "bytes"
              }
            ]
          }
        ]
      },
      {
        "inputs": [],
        "stateMutability": "view",
        "type": "function",
        "name": "getBasefee",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "basefee",
            "type": "uint256"
          }
        ]
      },
      {
        "inputs": [
          {
            "internalType": "uint256",
            "name": "blockNumber",
            "type": "uint256"
          }
        ],
        "stateMutability": "view",
        "type": "function",
        "name": "getBlockHash",
        "outputs": [
          {
            "internalType": "bytes32",
            "name": "blockHash",
            "type": "bytes32"
          }
        ]
      },
      {
        "inputs": [],
        "stateMutability": "view",
        "type": "function",
        "name": "getBlockNumber",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "blockNumber",
            "type": "uint256"
          }
        ]
      },
      {
        "inputs": [],
        "stateMutability": "view",
        "type": "function",
        "name": "getChainId",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "chainid",
            "type": "uint256"
          }
        ]
      },
      {
        "inputs": [],
        "stateMutability": "view",
        "type": "function",
        "name": "getCurrentBlockCoinbase",
        "outputs": [
          {
            "internalType": "address",
            "name": "coinbase",
            "type": "address"
          }
        ]
      },
      {
        "inputs": [],
        "stateMutability": "view",
        "type": "function",
        "name": "getCurrentBlockDifficulty",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "difficulty",
            "type": "uint256"
          }
        ]
      },
      {
        "inputs": [],
        "stateMutability": "view",
        "type": "function",
        "name": "getCurrentBlockGasLimit",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "gaslimit",
            "type": "uint256"
          }
        ]
      },
      {
        "inputs": [],
        "stateMutability": "view",
        "type": "function",
        "name": "getCurrentBlockTimestamp",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "timestamp",
            "type": "uint256"
          }
        ]
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "addr",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function",
        "name": "getEthBalance",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "balance",
            "type": "uint256"
          }
        ]
      },
      {
        "inputs": [],
        "stateMutability": "view",
        "type": "function",
        "name": "getLastBlockHash",
        "outputs": [
          {
            "internalType": "bytes32",
            "name": "blockHash",
            "type": "bytes32"
          }
        ]
      },
      {
        "inputs": [
          {
            "internalType": "bool",
            "name": "requireSuccess",
            "type": "bool"
          },
          {
            "internalType": "struct IMulticall3.Call[]",
            "name": "calls",
            "type": "tuple[]",
            "components": [
              {
                "internalType": "address",
                "name": "target",
                "type": "address"
              },
              {
                "internalType": "bytes",
                "name": "callData",
                "type": "bytes"
              }
            ]
          }
        ],
        "stateMutability": "payable",
        "type": "function",
        "name": "tryAggregate",
        "outputs": [
          {
            "internalType": "struct IMulticall3.Result[]",
            "name": "returnData",
            "type": "tuple[]",
            "components": [
              {
                "internalType": "bool",
                "name": "success",
                "type": "bool"
              },
              {
                "internalType": "bytes",
                "name": "returnData",
                "type": "bytes"
              }
            ]
          }
        ]
      },
      {
        "inputs": [
          {
            "internalType": "bool",
            "name": "requireSuccess",
            "type": "bool"
          },
          {
            "internalType": "struct IMulticall3.Call[]",
            "name": "calls",
            "type": "tuple[]",
            "components": [
              {
                "internalType": "address",
                "name": "target",
                "type": "address"
              },
              {
                "internalType": "bytes",
                "name": "callData",
                "type": "bytes"
              }
            ]
          }
        ],
        "stateMutability": "payable",
        "type": "function",
        "name": "tryBlockAndAggregate",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "blockNumber",
            "type": "uint256"
          },
          {
            "internalType": "bytes32",
            "name": "blockHash",
            "type": "bytes32"
          },
          {
            "internalType": "struct IMulticall3.Result[]",
            "name": "returnData",
            "type": "tuple[]",
            "components": [
              {
                "internalType": "bool",
                "name": "success",
                "type": "bool"
              },
              {
                "internalType": "bytes",
                "name": "returnData",
                "type": "bytes"
              }
            ]
          }
        ]
      }
    ],
    "devdoc": {
      "kind": "dev",
      "methods": {},
      "version": 1
    },
    "userdoc": {
      "kind": "user",
      "methods": {},
      "version": 1
    }
  },
  "settings": {
    "remappings": [
      "@openzeppelin/=node_modules/@openzeppelin/",
      "@prb/math/=node_modules/@prb/math/",
      "eth-gas-reporter/=node_modules/eth-gas-reporter/",
      "forge-std/=lib/forge-std/src/",
      "hardhat/=node_modules/hardhat/"
    ],
    "optimizer": {
      "enabled": true,
      "runs": 10000
    },
    "metadata": {
      "bytecodeHash": "ipfs"
    },
    "compilationTarget": {
      "lib/forge-std/src/interfaces/IMulticall3.sol": "IMulticall3"
    },
    "evmVersion": "cancun",
    "libraries": {},
    "viaIR": true
  },
  "sources": {
    "lib/forge-std/src/interfaces/IMulticall3.sol": {
      "keccak256": "0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a",
      "urls": [
        "bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0",
        "dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"
      ],
      "license": "MIT"
    }
  },
  "version": 1
}