{"abi":[{"type":"function","name":"executeOutput","inputs":[{"name":"output","type":"bytes","internalType":"bytes"},{"name":"proof","type":"tuple","internalType":"struct OutputValidityProof","components":[{"name":"outputIndex","type":"uint64","internalType":"uint64"},{"name":"outputHashesSiblings","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getDataAvailability","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getDeploymentBlockNumber","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNumberOfExecutedOutputs","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOutputsMerkleRootValidator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IOutputsMerkleRootValidator"}],"stateMutability":"view"},{"type":"function","name":"getTemplateHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"migrateToOutputsMerkleRootValidator","inputs":[{"name":"newOutputsMerkleRootValidator","type":"address","internalType":"contract IOutputsMerkleRootValidator"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validateOutput","inputs":[{"name":"output","type":"bytes","internalType":"bytes"},{"name":"proof","type":"tuple","internalType":"struct OutputValidityProof","components":[{"name":"outputIndex","type":"uint64","internalType":"uint64"},{"name":"outputHashesSiblings","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"validateOutputHash","inputs":[{"name":"outputHash","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"tuple","internalType":"struct OutputValidityProof","components":[{"name":"outputIndex","type":"uint64","internalType":"uint64"},{"name":"outputHashesSiblings","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"wasOutputExecuted","inputs":[{"name":"outputIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"OutputExecuted","inputs":[{"name":"outputIndex","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"output","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OutputsMerkleRootValidatorChanged","inputs":[{"name":"newOutputsMerkleRootValidator","type":"address","indexed":false,"internalType":"contract IOutputsMerkleRootValidator"}],"anonymous":false},{"type":"error","name":"InsufficientFunds","inputs":[{"name":"value","type":"uint256","internalType":"uint256"},{"name":"balance","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidOutputHashesSiblingsArrayLength","inputs":[]},{"type":"error","name":"InvalidOutputsMerkleRoot","inputs":[{"name":"outputsMerkleRoot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"OutputNotExecutable","inputs":[{"name":"output","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"OutputNotReexecutable","inputs":[{"name":"output","type":"bytes","internalType":"bytes"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"executeOutput(bytes,(uint64,bytes32[]))":"33137b76","getDataAvailability()":"f02478de","getDeploymentBlockNumber()":"b3a1acd8","getNumberOfExecutedOutputs()":"e64fab4d","getOutputsMerkleRootValidator()":"a94dfc5a","getTemplateHash()":"61b12c66","migrateToOutputsMerkleRootValidator(address)":"bf8abff8","owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b","validateOutput(bytes,(uint64,bytes32[]))":"e88d39c0","validateOutputHash(bytes32,(uint64,bytes32[]))":"08eb89ab","wasOutputExecuted(uint256)":"71891db0"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"name\":\"InsufficientFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOutputHashesSiblingsArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"outputsMerkleRoot\",\"type\":\"bytes32\"}],\"name\":\"InvalidOutputsMerkleRoot\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"}],\"name\":\"OutputNotExecutable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"}],\"name\":\"OutputNotReexecutable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"outputIndex\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"}],\"name\":\"OutputExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IOutputsMerkleRootValidator\",\"name\":\"newOutputsMerkleRootValidator\",\"type\":\"address\"}],\"name\":\"OutputsMerkleRootValidatorChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"outputIndex\",\"type\":\"uint64\"},{\"internalType\":\"bytes32[]\",\"name\":\"outputHashesSiblings\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct OutputValidityProof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"name\":\"executeOutput\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDataAvailability\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDeploymentBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumberOfExecutedOutputs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOutputsMerkleRootValidator\",\"outputs\":[{\"internalType\":\"contract IOutputsMerkleRootValidator\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTemplateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IOutputsMerkleRootValidator\",\"name\":\"newOutputsMerkleRootValidator\",\"type\":\"address\"}],\"name\":\"migrateToOutputsMerkleRootValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"outputIndex\",\"type\":\"uint64\"},{\"internalType\":\"bytes32[]\",\"name\":\"outputHashesSiblings\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct OutputValidityProof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"name\":\"validateOutput\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"outputHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"outputIndex\",\"type\":\"uint64\"},{\"internalType\":\"bytes32[]\",\"name\":\"outputHashesSiblings\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct OutputValidityProof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"name\":\"validateOutputHash\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"}],\"name\":\"wasOutputExecuted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InsufficientFunds(uint256,uint256)\":[{\"params\":{\"balance\":\"The current application contract balance\",\"value\":\"The amount of Wei necessary for the execution of the output\"}}],\"InvalidOutputHashesSiblingsArrayLength()\":[{\"details\":\"Please consult `CanonicalMachine` for the maximum number of outputs.\"}],\"OutputNotExecutable(bytes)\":[{\"params\":{\"output\":\"The output\"}}],\"OutputNotReexecutable(bytes)\":[{\"params\":{\"output\":\"The output\"}}]},\"events\":{\"OutputExecuted(uint64,bytes)\":{\"params\":{\"output\":\"The output\",\"outputIndex\":\"The index of the output\"}},\"OutputsMerkleRootValidatorChanged(address)\":{\"params\":{\"newOutputsMerkleRootValidator\":\"The new outputs Merkle root validator\"}}},\"kind\":\"dev\",\"methods\":{\"executeOutput(bytes,(uint64,bytes32[]))\":{\"details\":\"On a successful execution, emits a `OutputExecuted` event.May raise any of the errors raised by `validateOutput`, as well as `OutputNotExecutable` and `OutputNotReexecutable`.\",\"params\":{\"output\":\"The output\",\"proof\":\"The proof used to validate the output against              a claim accepted to the current outputs Merkle root validator contract\"}},\"getDataAvailability()\":{\"returns\":{\"_0\":\"Solidity ABI-encoded function call that describes the source of inputs that should be fed to the application.\"}},\"getOutputsMerkleRootValidator()\":{\"returns\":{\"_0\":\"The current outputs Merkle root validator\"}},\"getTemplateHash()\":{\"returns\":{\"_0\":\"The application's template hash\"}},\"migrateToOutputsMerkleRootValidator(address)\":{\"details\":\"Can only be called by the application owner.\",\"params\":{\"newOutputsMerkleRootValidator\":\"The new outputs Merkle root validator\"}},\"validateOutput(bytes,(uint64,bytes32[]))\":{\"details\":\"May raise any of the errors raised by `validateOutputHash`.\",\"params\":{\"output\":\"The output\",\"proof\":\"The proof used to validate the output against              a claim accepted to the current outputs Merkle root validator contract\"}},\"validateOutputHash(bytes32,(uint64,bytes32[]))\":{\"details\":\"May raise `InvalidOutputHashesSiblingsArrayLength` or `InvalidOutputsMerkleRoot`.\",\"params\":{\"outputHash\":\"The output hash\",\"proof\":\"The proof used to validate the output against              a claim accepted to the current outputs Merkle root validator contract\"}},\"wasOutputExecuted(uint256)\":{\"params\":{\"outputIndex\":\"The index of output\"},\"returns\":{\"_0\":\"Whether the output has been executed before\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"InsufficientFunds(uint256,uint256)\":[{\"notice\":\"Could not execute an output, because the application contract doesn't have enough Ether.\"}],\"InvalidOutputHashesSiblingsArrayLength()\":[{\"notice\":\"Raised when the output hashes siblings array has an invalid size.\"}],\"InvalidOutputsMerkleRoot(bytes32)\":[{\"notice\":\"Raised when the computed outputs Merkle root is invalid, according to the current outputs Merkle root validator.\"}],\"OutputNotExecutable(bytes)\":[{\"notice\":\"Could not execute an output, because the application contract doesn't know how to.\"}],\"OutputNotReexecutable(bytes)\":[{\"notice\":\"Could not execute an output, because it was already executed.\"}]},\"events\":{\"OutputExecuted(uint64,bytes)\":{\"notice\":\"MUST trigger when an output is executed.\"},\"OutputsMerkleRootValidatorChanged(address)\":{\"notice\":\"MUST trigger when a new outputs Merkle root validator is chosen.\"}},\"kind\":\"user\",\"methods\":{\"executeOutput(bytes,(uint64,bytes32[]))\":{\"notice\":\"Execute an output.\"},\"getDataAvailability()\":{\"notice\":\"Get the data availability solution used by application.\"},\"getDeploymentBlockNumber()\":{\"notice\":\"Get number of block in which contract was deployed\"},\"getNumberOfExecutedOutputs()\":{\"notice\":\"Get number of outputs executed by the application.\"},\"getOutputsMerkleRootValidator()\":{\"notice\":\"Get the current outputs Merkle root validator.\"},\"getTemplateHash()\":{\"notice\":\"Get the application's template hash.\"},\"migrateToOutputsMerkleRootValidator(address)\":{\"notice\":\"Migrate the application to a new outputs Merkle root validator.\"},\"validateOutput(bytes,(uint64,bytes32[]))\":{\"notice\":\"Validate an output.\"},\"validateOutputHash(bytes32,(uint64,bytes32[]))\":{\"notice\":\"Validate an output hash.\"},\"wasOutputExecuted(uint256)\":{\"notice\":\"Check whether an output has been executed.\"}},\"notice\":\"The base layer incarnation of an application running on the execution layer.The state of the application advances through inputs sent to an `IInputBox` contract.These inputs can be sent either directly, or indirectly through portals.Reader nodes can retrieve inputs sent to the `IInputBox` contract through events, and feed them into the machine.Validator nodes can also submit claims to the `IOutputsMerkleRootValidator` contract (see the `getOutputsMerkleRootValidator` function).Once accepted, claims can be used to validate outputs generated by the machine.Some outputs are executable, which means they can have on-chain side effects.Every application is subscribed to some outputs Merkle root validator, and may be governed by some owner. The outputs Merkle root validator has the power to accept claims, which, in turn, are used to validate outputs. Meanwhile, the owner can replace the outputs Merkle root validator at any time. Therefore, the users of an application must trust both the outputs Merkle root validator and the application owner.There are several ownership models to choose from: - no owner (address zero) - individual signer (externally-owned account) - multiple signers (multi-sig) - DAO (decentralized autonomous organization) - self-owned application (off-chain governance logic)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/dapp/IApplication.sol\":\"IApplication\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-contracts-5.2.0/=dependencies/@openzeppelin-contracts-5.2.0/\",\":forge-std-1.9.6/=dependencies/forge-std-1.9.6/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.2.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/access/IOwnable.sol\":{\"keccak256\":\"0x826f366603fe6fd715bd912d40e9b4e851c110aea5895522523d800015532f6d\",\"license\":\"Apache-2.0 (see LICENSE)\",\"urls\":[\"bzz-raw://bb115a4a30824bf77e10b63727cea83e7e1e9bf4c3079ed65e3e7c0eaa290272\",\"dweb:/ipfs/QmYpjBNmELeX1NKdPjXcqnssz65pgYpX2g6ahKXisr9aWM\"]},\"src/common/OutputValidityProof.sol\":{\"keccak256\":\"0x3bd009e3b744e160f92a84624f8c325b5a6abc8f4e8e02e4a1b8a6de73779c1c\",\"license\":\"Apache-2.0 (see LICENSE)\",\"urls\":[\"bzz-raw://73da0a877327888a637d739a49ec807a48b65fff96b9c20472b6a8a926d46ff7\",\"dweb:/ipfs/QmaHmqdhJX4RpR3xK15hhuMdVFc47GtvcUkny9ffyzD5K6\"]},\"src/consensus/IOutputsMerkleRootValidator.sol\":{\"keccak256\":\"0x133dfa71847fd6478489e983d53b08b22f5f578634c2103e96a11cd128e81d68\",\"license\":\"Apache-2.0 (see LICENSE)\",\"urls\":[\"bzz-raw://eb43c0a4aa7cd21753a3b92820da37ef58cf29aa4ef5c18a6f2face3e6e94e25\",\"dweb:/ipfs/QmezZmVZV1cfygDYPC8XheVVxaSZt92xQNdEpnRV6Xdh3M\"]},\"src/dapp/IApplication.sol\":{\"keccak256\":\"0x2f8e32fd984129fa6e95ff57a6eae42f84a5613643289af75b68f9fedda26e86\",\"license\":\"Apache-2.0 (see LICENSE)\",\"urls\":[\"bzz-raw://7b334fc95577418cdbb323118b6078cec1289075b8b72fb794828150fbc681e5\",\"dweb:/ipfs/QmNpyKbFyNdmpPXfzfH4bPj4we1A3Q1qKxGpY18rJpgx3Y\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"balance","type":"uint256"}],"type":"error","name":"InsufficientFunds"},{"inputs":[],"type":"error","name":"InvalidOutputHashesSiblingsArrayLength"},{"inputs":[{"internalType":"bytes32","name":"outputsMerkleRoot","type":"bytes32"}],"type":"error","name":"InvalidOutputsMerkleRoot"},{"inputs":[{"internalType":"bytes","name":"output","type":"bytes"}],"type":"error","name":"OutputNotExecutable"},{"inputs":[{"internalType":"bytes","name":"output","type":"bytes"}],"type":"error","name":"OutputNotReexecutable"},{"inputs":[{"internalType":"uint64","name":"outputIndex","type":"uint64","indexed":false},{"internalType":"bytes","name":"output","type":"bytes","indexed":false}],"type":"event","name":"OutputExecuted","anonymous":false},{"inputs":[{"internalType":"contract IOutputsMerkleRootValidator","name":"newOutputsMerkleRootValidator","type":"address","indexed":false}],"type":"event","name":"OutputsMerkleRootValidatorChanged","anonymous":false},{"inputs":[{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"struct OutputValidityProof","name":"proof","type":"tuple","components":[{"internalType":"uint64","name":"outputIndex","type":"uint64"},{"internalType":"bytes32[]","name":"outputHashesSiblings","type":"bytes32[]"}]}],"stateMutability":"nonpayable","type":"function","name":"executeOutput"},{"inputs":[],"stateMutability":"view","type":"function","name":"getDataAvailability","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getDeploymentBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getNumberOfExecutedOutputs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getOutputsMerkleRootValidator","outputs":[{"internalType":"contract IOutputsMerkleRootValidator","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getTemplateHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"contract IOutputsMerkleRootValidator","name":"newOutputsMerkleRootValidator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"migrateToOutputsMerkleRootValidator"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"struct OutputValidityProof","name":"proof","type":"tuple","components":[{"internalType":"uint64","name":"outputIndex","type":"uint64"},{"internalType":"bytes32[]","name":"outputHashesSiblings","type":"bytes32[]"}]}],"stateMutability":"view","type":"function","name":"validateOutput"},{"inputs":[{"internalType":"bytes32","name":"outputHash","type":"bytes32"},{"internalType":"struct OutputValidityProof","name":"proof","type":"tuple","components":[{"internalType":"uint64","name":"outputIndex","type":"uint64"},{"internalType":"bytes32[]","name":"outputHashesSiblings","type":"bytes32[]"}]}],"stateMutability":"view","type":"function","name":"validateOutputHash"},{"inputs":[{"internalType":"uint256","name":"outputIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"wasOutputExecuted","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"executeOutput(bytes,(uint64,bytes32[]))":{"details":"On a successful execution, emits a `OutputExecuted` event.May raise any of the errors raised by `validateOutput`, as well as `OutputNotExecutable` and `OutputNotReexecutable`.","params":{"output":"The output","proof":"The proof used to validate the output against              a claim accepted to the current outputs Merkle root validator contract"}},"getDataAvailability()":{"returns":{"_0":"Solidity ABI-encoded function call that describes the source of inputs that should be fed to the application."}},"getOutputsMerkleRootValidator()":{"returns":{"_0":"The current outputs Merkle root validator"}},"getTemplateHash()":{"returns":{"_0":"The application's template hash"}},"migrateToOutputsMerkleRootValidator(address)":{"details":"Can only be called by the application owner.","params":{"newOutputsMerkleRootValidator":"The new outputs Merkle root validator"}},"validateOutput(bytes,(uint64,bytes32[]))":{"details":"May raise any of the errors raised by `validateOutputHash`.","params":{"output":"The output","proof":"The proof used to validate the output against              a claim accepted to the current outputs Merkle root validator contract"}},"validateOutputHash(bytes32,(uint64,bytes32[]))":{"details":"May raise `InvalidOutputHashesSiblingsArrayLength` or `InvalidOutputsMerkleRoot`.","params":{"outputHash":"The output hash","proof":"The proof used to validate the output against              a claim accepted to the current outputs Merkle root validator contract"}},"wasOutputExecuted(uint256)":{"params":{"outputIndex":"The index of output"},"returns":{"_0":"Whether the output has been executed before"}}},"version":1},"userdoc":{"kind":"user","methods":{"executeOutput(bytes,(uint64,bytes32[]))":{"notice":"Execute an output."},"getDataAvailability()":{"notice":"Get the data availability solution used by application."},"getDeploymentBlockNumber()":{"notice":"Get number of block in which contract was deployed"},"getNumberOfExecutedOutputs()":{"notice":"Get number of outputs executed by the application."},"getOutputsMerkleRootValidator()":{"notice":"Get the current outputs Merkle root validator."},"getTemplateHash()":{"notice":"Get the application's template hash."},"migrateToOutputsMerkleRootValidator(address)":{"notice":"Migrate the application to a new outputs Merkle root validator."},"validateOutput(bytes,(uint64,bytes32[]))":{"notice":"Validate an output."},"validateOutputHash(bytes32,(uint64,bytes32[]))":{"notice":"Validate an output hash."},"wasOutputExecuted(uint256)":{"notice":"Check whether an output has been executed."}},"version":1}},"settings":{"remappings":["@openzeppelin-contracts-5.2.0/=dependencies/@openzeppelin-contracts-5.2.0/","forge-std-1.9.6/=dependencies/forge-std-1.9.6/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/dapp/IApplication.sol":"IApplication"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.2.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/access/IOwnable.sol":{"keccak256":"0x826f366603fe6fd715bd912d40e9b4e851c110aea5895522523d800015532f6d","urls":["bzz-raw://bb115a4a30824bf77e10b63727cea83e7e1e9bf4c3079ed65e3e7c0eaa290272","dweb:/ipfs/QmYpjBNmELeX1NKdPjXcqnssz65pgYpX2g6ahKXisr9aWM"],"license":"Apache-2.0 (see LICENSE)"},"src/common/OutputValidityProof.sol":{"keccak256":"0x3bd009e3b744e160f92a84624f8c325b5a6abc8f4e8e02e4a1b8a6de73779c1c","urls":["bzz-raw://73da0a877327888a637d739a49ec807a48b65fff96b9c20472b6a8a926d46ff7","dweb:/ipfs/QmaHmqdhJX4RpR3xK15hhuMdVFc47GtvcUkny9ffyzD5K6"],"license":"Apache-2.0 (see LICENSE)"},"src/consensus/IOutputsMerkleRootValidator.sol":{"keccak256":"0x133dfa71847fd6478489e983d53b08b22f5f578634c2103e96a11cd128e81d68","urls":["bzz-raw://eb43c0a4aa7cd21753a3b92820da37ef58cf29aa4ef5c18a6f2face3e6e94e25","dweb:/ipfs/QmezZmVZV1cfygDYPC8XheVVxaSZt92xQNdEpnRV6Xdh3M"],"license":"Apache-2.0 (see LICENSE)"},"src/dapp/IApplication.sol":{"keccak256":"0x2f8e32fd984129fa6e95ff57a6eae42f84a5613643289af75b68f9fedda26e86","urls":["bzz-raw://7b334fc95577418cdbb323118b6078cec1289075b8b72fb794828150fbc681e5","dweb:/ipfs/QmNpyKbFyNdmpPXfzfH4bPj4we1A3Q1qKxGpY18rJpgx3Y"],"license":"Apache-2.0 (see LICENSE)"}},"version":1},"id":39}