{
  "_format": "hh-sol-artifact-1",
  "contractName": "Multicall2",
  "sourceName": "contracts/offchain-helpers/Multicall2.sol",
  "abi": [
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "callData",
              "type": "bytes"
            }
          ],
          "internalType": "struct Multicall2.Call[]",
          "name": "calls",
          "type": "tuple[]"
        }
      ],
      "name": "aggregate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        },
        {
          "internalType": "bytes[]",
          "name": "returnData",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "callData",
              "type": "bytes"
            }
          ],
          "internalType": "struct Multicall2.Call[]",
          "name": "calls",
          "type": "tuple[]"
        }
      ],
      "name": "blockAndAggregate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "blockHash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "internalType": "bytes",
              "name": "returnData",
              "type": "bytes"
            }
          ],
          "internalType": "struct Multicall2.Result[]",
          "name": "returnData",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        }
      ],
      "name": "getBlockHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "blockHash",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getBlockNumber",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getCurrentBlockCoinbase",
      "outputs": [
        {
          "internalType": "address",
          "name": "coinbase",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getCurrentBlockDifficulty",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "difficulty",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getCurrentBlockGasLimit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "gaslimit",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getCurrentBlockTimestamp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "getEthBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getLastBlockHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "blockHash",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "requireSuccess",
          "type": "bool"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "callData",
              "type": "bytes"
            }
          ],
          "internalType": "struct Multicall2.Call[]",
          "name": "calls",
          "type": "tuple[]"
        }
      ],
      "name": "tryAggregate",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "internalType": "bytes",
              "name": "returnData",
              "type": "bytes"
            }
          ],
          "internalType": "struct Multicall2.Result[]",
          "name": "returnData",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "requireSuccess",
          "type": "bool"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "callData",
              "type": "bytes"
            }
          ],
          "internalType": "struct Multicall2.Call[]",
          "name": "calls",
          "type": "tuple[]"
        }
      ],
      "name": "tryBlockAndAggregate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "blockHash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "internalType": "bytes",
              "name": "returnData",
              "type": "bytes"
            }
          ],
          "internalType": "struct Multicall2.Result[]",
          "name": "returnData",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x6080604052348015600e575f5ffd5b506109668061001c5f395ff3fe608060405234801561000f575f5ffd5b50600436106100a2575f3560e01c80630f28c97d146100a6578063252dba42146100bb57806327e86d6e146100dc578063399542e9146100e457806342cbb15c146101065780634d2301cc1461010c57806372425d9d1461012757806386d516e81461012d578063a8b0574e14610133578063bce38bd714610141578063c3077fa914610161578063ee82ac5e14610174575b5f5ffd5b425b6040519081526020015b60405180910390f35b6100ce6100c93660046106b9565b610186565b6040516100b292919061073f565b6100a86102fb565b6100f76100f23660046107a9565b61030d565b6040516100b29392919061086c565b436100a8565b6100a861011a366004610893565b6001600160a01b03163190565b446100a8565b456100a8565b6040514181526020016100b2565b61015461014f3660046107a9565b610325565b6040516100b291906108b3565b6100f761016f3660046106b9565b6104cb565b6100a86101823660046108c5565b4090565b805143906060906001600160401b038111156101a4576101a46104e7565b6040519080825280602002602001820160405280156101d757816020015b60608152602001906001900390816101c25790505b5090505f5b83518110156102f5575f5f8583815181106101f9576101f96108dc565b60200260200101515f01516001600160a01b031686848151811061021f5761021f6108dc565b60200260200101516020015160405161023891906108f0565b5f604051808303815f865af19150503d805f8114610271576040519150601f19603f3d011682016040523d82523d5f602084013e610276565b606091505b5091509150816102cd5760405162461bcd60e51b815260206004820181905260248201527f4d756c746963616c6c206167677265676174653a2063616c6c206661696c656460448201526064015b60405180910390fd5b808484815181106102e0576102e06108dc565b602090810291909101015250506001016101dc565b50915091565b5f61030760014361090b565b40905090565b438040606061031c8585610325565b90509250925092565b606081516001600160401b03811115610340576103406104e7565b60405190808252806020026020018201604052801561038557816020015b604080518082019091525f81526060602082015281526020019060019003908161035e5790505b5090505f5b82518110156104c4575f5f8483815181106103a7576103a76108dc565b60200260200101515f01516001600160a01b03168584815181106103cd576103cd6108dc565b6020026020010151602001516040516103e691906108f0565b5f604051808303815f865af19150503d805f811461041f576040519150601f19603f3d011682016040523d82523d5f602084013e610424565b606091505b5091509150851561048657816104865760405162461bcd60e51b815260206004820152602160248201527f4d756c746963616c6c32206167677265676174653a2063616c6c206661696c656044820152601960fa1b60648201526084016102c4565b60405180604001604052808315158152602001828152508484815181106104af576104af6108dc565b6020908102919091010152505060010161038a565b5092915050565b5f5f60606104da60018561030d565b9196909550909350915050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b038111828210171561051d5761051d6104e7565b60405290565b604051601f8201601f191681016001600160401b038111828210171561054b5761054b6104e7565b604052919050565b80356001600160a01b0381168114610569575f5ffd5b919050565b5f82601f83011261057d575f5ffd5b81356001600160401b03811115610596576105966104e7565b8060051b6105a660208201610523565b918252602081850181019290810190868411156105c1575f5ffd5b6020860192505b838310156106af5782356001600160401b038111156105e5575f5ffd5b86016040818903601f190112156105fa575f5ffd5b6106026104fb565b61060e60208301610553565b815260408201356001600160401b03811115610628575f5ffd5b60208184010192505088601f83011261063f575f5ffd5b81356001600160401b03811115610658576106586104e7565b61066b601f8201601f1916602001610523565b8181528a602083860101111561067f575f5ffd5b816020850160208301375f60208383010152806020840152505080845250506020820191506020830192506105c8565b9695505050505050565b5f602082840312156106c9575f5ffd5b81356001600160401b038111156106de575f5ffd5b6106ea8482850161056e565b949350505050565b5f5b8381101561070c5781810151838201526020016106f4565b50505f910152565b5f815180845261072b8160208601602086016106f2565b601f01601f19169290920160200192915050565b5f604082018483526040602084015280845180835260608501915060608160051b8601019250602086015f5b8281101561079c57605f19878603018452610787858351610714565b9450602093840193919091019060010161076b565b5092979650505050505050565b5f5f604083850312156107ba575f5ffd5b823580151581146107c9575f5ffd5b915060208301356001600160401b038111156107e3575f5ffd5b6107ef8582860161056e565b9150509250929050565b5f82825180855260208501945060208160051b830101602085015f5b8381101561086057601f19858403018852815180511515845260208101519050604060208501526108496040850182610714565b6020998a0199909450929092019150600101610815565b50909695505050505050565b838152826020820152606060408201525f61088a60608301846107f9565b95945050505050565b5f602082840312156108a3575f5ffd5b6108ac82610553565b9392505050565b602081525f6108ac60208301846107f9565b5f602082840312156108d5575f5ffd5b5035919050565b634e487b7160e01b5f52603260045260245ffd5b5f82516109018184602087016106f2565b9190910192915050565b8181038181111561092a57634e487b7160e01b5f52601160045260245ffd5b9291505056fea2646970667358221220c0b85bf820703ba123391568760af68a9e3e25f35e2db2134854b35c08522aff64736f6c634300081e0033",
  "deployedBytecode": "0x608060405234801561000f575f5ffd5b50600436106100a2575f3560e01c80630f28c97d146100a6578063252dba42146100bb57806327e86d6e146100dc578063399542e9146100e457806342cbb15c146101065780634d2301cc1461010c57806372425d9d1461012757806386d516e81461012d578063a8b0574e14610133578063bce38bd714610141578063c3077fa914610161578063ee82ac5e14610174575b5f5ffd5b425b6040519081526020015b60405180910390f35b6100ce6100c93660046106b9565b610186565b6040516100b292919061073f565b6100a86102fb565b6100f76100f23660046107a9565b61030d565b6040516100b29392919061086c565b436100a8565b6100a861011a366004610893565b6001600160a01b03163190565b446100a8565b456100a8565b6040514181526020016100b2565b61015461014f3660046107a9565b610325565b6040516100b291906108b3565b6100f761016f3660046106b9565b6104cb565b6100a86101823660046108c5565b4090565b805143906060906001600160401b038111156101a4576101a46104e7565b6040519080825280602002602001820160405280156101d757816020015b60608152602001906001900390816101c25790505b5090505f5b83518110156102f5575f5f8583815181106101f9576101f96108dc565b60200260200101515f01516001600160a01b031686848151811061021f5761021f6108dc565b60200260200101516020015160405161023891906108f0565b5f604051808303815f865af19150503d805f8114610271576040519150601f19603f3d011682016040523d82523d5f602084013e610276565b606091505b5091509150816102cd5760405162461bcd60e51b815260206004820181905260248201527f4d756c746963616c6c206167677265676174653a2063616c6c206661696c656460448201526064015b60405180910390fd5b808484815181106102e0576102e06108dc565b602090810291909101015250506001016101dc565b50915091565b5f61030760014361090b565b40905090565b438040606061031c8585610325565b90509250925092565b606081516001600160401b03811115610340576103406104e7565b60405190808252806020026020018201604052801561038557816020015b604080518082019091525f81526060602082015281526020019060019003908161035e5790505b5090505f5b82518110156104c4575f5f8483815181106103a7576103a76108dc565b60200260200101515f01516001600160a01b03168584815181106103cd576103cd6108dc565b6020026020010151602001516040516103e691906108f0565b5f604051808303815f865af19150503d805f811461041f576040519150601f19603f3d011682016040523d82523d5f602084013e610424565b606091505b5091509150851561048657816104865760405162461bcd60e51b815260206004820152602160248201527f4d756c746963616c6c32206167677265676174653a2063616c6c206661696c656044820152601960fa1b60648201526084016102c4565b60405180604001604052808315158152602001828152508484815181106104af576104af6108dc565b6020908102919091010152505060010161038a565b5092915050565b5f5f60606104da60018561030d565b9196909550909350915050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b038111828210171561051d5761051d6104e7565b60405290565b604051601f8201601f191681016001600160401b038111828210171561054b5761054b6104e7565b604052919050565b80356001600160a01b0381168114610569575f5ffd5b919050565b5f82601f83011261057d575f5ffd5b81356001600160401b03811115610596576105966104e7565b8060051b6105a660208201610523565b918252602081850181019290810190868411156105c1575f5ffd5b6020860192505b838310156106af5782356001600160401b038111156105e5575f5ffd5b86016040818903601f190112156105fa575f5ffd5b6106026104fb565b61060e60208301610553565b815260408201356001600160401b03811115610628575f5ffd5b60208184010192505088601f83011261063f575f5ffd5b81356001600160401b03811115610658576106586104e7565b61066b601f8201601f1916602001610523565b8181528a602083860101111561067f575f5ffd5b816020850160208301375f60208383010152806020840152505080845250506020820191506020830192506105c8565b9695505050505050565b5f602082840312156106c9575f5ffd5b81356001600160401b038111156106de575f5ffd5b6106ea8482850161056e565b949350505050565b5f5b8381101561070c5781810151838201526020016106f4565b50505f910152565b5f815180845261072b8160208601602086016106f2565b601f01601f19169290920160200192915050565b5f604082018483526040602084015280845180835260608501915060608160051b8601019250602086015f5b8281101561079c57605f19878603018452610787858351610714565b9450602093840193919091019060010161076b565b5092979650505050505050565b5f5f604083850312156107ba575f5ffd5b823580151581146107c9575f5ffd5b915060208301356001600160401b038111156107e3575f5ffd5b6107ef8582860161056e565b9150509250929050565b5f82825180855260208501945060208160051b830101602085015f5b8381101561086057601f19858403018852815180511515845260208101519050604060208501526108496040850182610714565b6020998a0199909450929092019150600101610815565b50909695505050505050565b838152826020820152606060408201525f61088a60608301846107f9565b95945050505050565b5f602082840312156108a3575f5ffd5b6108ac82610553565b9392505050565b602081525f6108ac60208301846107f9565b5f602082840312156108d5575f5ffd5b5035919050565b634e487b7160e01b5f52603260045260245ffd5b5f82516109018184602087016106f2565b9190910192915050565b8181038181111561092a57634e487b7160e01b5f52601160045260245ffd5b9291505056fea2646970667358221220c0b85bf820703ba123391568760af68a9e3e25f35e2db2134854b35c08522aff64736f6c634300081e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
