{
  "_format": "hh-sol-artifact-1",
  "contractName": "AstraInterfaceMulticall",
  "sourceName": "contracts/multicall/AstraInterfaceMulticall.sol",
  "abi": [
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "callData",
              "type": "bytes"
            }
          ],
          "internalType": "struct AstraInterfaceMulticall.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 AstraInterfaceMulticall.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 AstraInterfaceMulticall.Result[]",
          "name": "returnData",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "getAMBBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "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": [],
      "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 AstraInterfaceMulticall.Call[]",
          "name": "calls",
          "type": "tuple[]"
        }
      ],
      "name": "tryAggregate",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "internalType": "bytes",
              "name": "returnData",
              "type": "bytes"
            }
          ],
          "internalType": "struct AstraInterfaceMulticall.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 AstraInterfaceMulticall.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 AstraInterfaceMulticall.Result[]",
          "name": "returnData",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5061091e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806386d516e81161007157806386d516e814610132578063a8b0574e1461013a578063bce38bd71461014f578063c3077fa91461016f578063cc4c6e1914610182578063ee82ac5e14610195576100b4565b80630f28c97d146100b9578063252dba42146100d757806327e86d6e146100f8578063399542e91461010057806342cbb15c1461012257806372425d9d1461012a575b600080fd5b6100c16101a8565b6040516100ce9190610785565b60405180910390f35b6100ea6100e5366004610605565b6101ac565b6040516100ce929190610804565b6100c16102ea565b61011361010e366004610640565b6102f3565b6040516100ce9392919061086c565b6100c161030b565b6100c161030f565b6100c1610313565b610142610317565b6040516100ce919061075e565b61016261015d366004610640565b61031b565b6040516100ce9190610772565b61011361017d366004610605565b610470565b6100c16101903660046105e4565b61048d565b6100c16101a3366004610692565b61049a565b4290565b8051439060609067ffffffffffffffff811180156101c957600080fd5b506040519080825280602002602001820160405280156101fd57816020015b60608152602001906001900390816101e85790505b50905060005b83518110156102e45760008085838151811061021b57fe5b6020026020010151600001516001600160a01b031686848151811061023c57fe5b6020026020010151602001516040516102559190610742565b6000604051808303816000865af19150503d8060008114610292576040519150601f19603f3d011682016040523d82523d6000602084013e610297565b606091505b5091509150816102c25760405162461bcd60e51b81526004016102b9906107cf565b60405180910390fd5b808484815181106102cf57fe5b60209081029190910101525050600101610203565b50915091565b60001943014090565b4380406060610302858561031b565b90509250925092565b4390565b4490565b4590565b4190565b6060815167ffffffffffffffff8111801561033557600080fd5b5060405190808252806020026020018201604052801561036f57816020015b61035c61049e565b8152602001906001900390816103545790505b50905060005b82518110156104695760008084838151811061038d57fe5b6020026020010151600001516001600160a01b03168584815181106103ae57fe5b6020026020010151602001516040516103c79190610742565b6000604051808303816000865af19150503d8060008114610404576040519150601f19603f3d011682016040523d82523d6000602084013e610409565b606091505b5091509150851561043157816104315760405162461bcd60e51b81526004016102b99061078e565b604051806040016040528083151581526020018281525084848151811061045457fe5b60209081029190910101525050600101610375565b5092915050565b60008060606104806001856102f3565b9196909550909350915050565b6001600160a01b03163190565b4090565b60408051808201909152600081526060602082015290565b80356001600160a01b03811681146104cd57600080fd5b919050565b600082601f8301126104e2578081fd5b8135602067ffffffffffffffff808311156104f957fe5b6105068283850201610894565b83815282810190868401865b868110156105d657813589016040601f198181848f03011215610533578a8bfd5b81518281018181108a8211171561054657fe5b8352610553848b016104b6565b81528284013589811115610565578c8dfd5b8085019450508d603f850112610579578b8cfd5b898401358981111561058757fe5b6105978b84601f84011601610894565b92508083528e848287010111156105ac578c8dfd5b808486018c85013782018a018c9052808a0191909152865250509285019290850190600101610512565b509098975050505050505050565b6000602082840312156105f5578081fd5b6105fe826104b6565b9392505050565b600060208284031215610616578081fd5b813567ffffffffffffffff81111561062c578182fd5b610638848285016104d2565b949350505050565b60008060408385031215610652578081fd5b82358015158114610661578182fd5b9150602083013567ffffffffffffffff81111561067c578182fd5b610688858286016104d2565b9150509250929050565b6000602082840312156106a3578081fd5b5035919050565b60008282518085526020808601955080818302840101818601855b8481101561070957858303601f19018952815180511515845284015160408585018190526106f581860183610716565b9a86019a94505050908301906001016106c5565b5090979650505050505050565b6000815180845261072e8160208601602086016108b8565b601f01601f19169290920160200192915050565b600082516107548184602087016108b8565b9190910192915050565b6001600160a01b0391909116815260200190565b6000602082526105fe60208301846106aa565b90815260200190565b60208082526021908201527f4d756c746963616c6c32206167677265676174653a2063616c6c206661696c656040820152601960fa1b606082015260800190565b6020808252818101527f4d756c746963616c6c206167677265676174653a2063616c6c206661696c6564604082015260600190565b600060408201848352602060408185015281855180845260608601915060608382028701019350828701855b8281101561085e57605f1988870301845261084c868351610716565b95509284019290840190600101610830565b509398975050505050505050565b60008482528360208301526060604083015261088b60608301846106aa565b95945050505050565b60405181810167ffffffffffffffff811182821017156108b057fe5b604052919050565b60005b838110156108d35781810151838201526020016108bb565b838111156108e2576000848401525b5050505056fea2646970667358221220c7166feb0b164dcfef87aef9f4ec637e7b1d39c00417ab444a5d98800ce1179f64736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806386d516e81161007157806386d516e814610132578063a8b0574e1461013a578063bce38bd71461014f578063c3077fa91461016f578063cc4c6e1914610182578063ee82ac5e14610195576100b4565b80630f28c97d146100b9578063252dba42146100d757806327e86d6e146100f8578063399542e91461010057806342cbb15c1461012257806372425d9d1461012a575b600080fd5b6100c16101a8565b6040516100ce9190610785565b60405180910390f35b6100ea6100e5366004610605565b6101ac565b6040516100ce929190610804565b6100c16102ea565b61011361010e366004610640565b6102f3565b6040516100ce9392919061086c565b6100c161030b565b6100c161030f565b6100c1610313565b610142610317565b6040516100ce919061075e565b61016261015d366004610640565b61031b565b6040516100ce9190610772565b61011361017d366004610605565b610470565b6100c16101903660046105e4565b61048d565b6100c16101a3366004610692565b61049a565b4290565b8051439060609067ffffffffffffffff811180156101c957600080fd5b506040519080825280602002602001820160405280156101fd57816020015b60608152602001906001900390816101e85790505b50905060005b83518110156102e45760008085838151811061021b57fe5b6020026020010151600001516001600160a01b031686848151811061023c57fe5b6020026020010151602001516040516102559190610742565b6000604051808303816000865af19150503d8060008114610292576040519150601f19603f3d011682016040523d82523d6000602084013e610297565b606091505b5091509150816102c25760405162461bcd60e51b81526004016102b9906107cf565b60405180910390fd5b808484815181106102cf57fe5b60209081029190910101525050600101610203565b50915091565b60001943014090565b4380406060610302858561031b565b90509250925092565b4390565b4490565b4590565b4190565b6060815167ffffffffffffffff8111801561033557600080fd5b5060405190808252806020026020018201604052801561036f57816020015b61035c61049e565b8152602001906001900390816103545790505b50905060005b82518110156104695760008084838151811061038d57fe5b6020026020010151600001516001600160a01b03168584815181106103ae57fe5b6020026020010151602001516040516103c79190610742565b6000604051808303816000865af19150503d8060008114610404576040519150601f19603f3d011682016040523d82523d6000602084013e610409565b606091505b5091509150851561043157816104315760405162461bcd60e51b81526004016102b99061078e565b604051806040016040528083151581526020018281525084848151811061045457fe5b60209081029190910101525050600101610375565b5092915050565b60008060606104806001856102f3565b9196909550909350915050565b6001600160a01b03163190565b4090565b60408051808201909152600081526060602082015290565b80356001600160a01b03811681146104cd57600080fd5b919050565b600082601f8301126104e2578081fd5b8135602067ffffffffffffffff808311156104f957fe5b6105068283850201610894565b83815282810190868401865b868110156105d657813589016040601f198181848f03011215610533578a8bfd5b81518281018181108a8211171561054657fe5b8352610553848b016104b6565b81528284013589811115610565578c8dfd5b8085019450508d603f850112610579578b8cfd5b898401358981111561058757fe5b6105978b84601f84011601610894565b92508083528e848287010111156105ac578c8dfd5b808486018c85013782018a018c9052808a0191909152865250509285019290850190600101610512565b509098975050505050505050565b6000602082840312156105f5578081fd5b6105fe826104b6565b9392505050565b600060208284031215610616578081fd5b813567ffffffffffffffff81111561062c578182fd5b610638848285016104d2565b949350505050565b60008060408385031215610652578081fd5b82358015158114610661578182fd5b9150602083013567ffffffffffffffff81111561067c578182fd5b610688858286016104d2565b9150509250929050565b6000602082840312156106a3578081fd5b5035919050565b60008282518085526020808601955080818302840101818601855b8481101561070957858303601f19018952815180511515845284015160408585018190526106f581860183610716565b9a86019a94505050908301906001016106c5565b5090979650505050505050565b6000815180845261072e8160208601602086016108b8565b601f01601f19169290920160200192915050565b600082516107548184602087016108b8565b9190910192915050565b6001600160a01b0391909116815260200190565b6000602082526105fe60208301846106aa565b90815260200190565b60208082526021908201527f4d756c746963616c6c32206167677265676174653a2063616c6c206661696c656040820152601960fa1b606082015260800190565b6020808252818101527f4d756c746963616c6c206167677265676174653a2063616c6c206661696c6564604082015260600190565b600060408201848352602060408185015281855180845260608601915060608382028701019350828701855b8281101561085e57605f1988870301845261084c868351610716565b95509284019290840190600101610830565b509398975050505050505050565b60008482528360208301526060604083015261088b60608301846106aa565b95945050505050565b60405181810167ffffffffffffffff811182821017156108b057fe5b604052919050565b60005b838110156108d35781810151838201526020016108bb565b838111156108e2576000848401525b5050505056fea2646970667358221220c7166feb0b164dcfef87aef9f4ec637e7b1d39c00417ab444a5d98800ce1179f64736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
