{"abi":[{"type":"constructor","inputs":[{"name":"initialOwner","type":"address","internalType":"address"},{"name":"epochLength","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getEpochLength","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNumberOfAcceptedClaims","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNumberOfSubmittedClaims","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isOutputsMerkleRootValid","inputs":[{"name":"appContract","type":"address","internalType":"address"},{"name":"outputsMerkleRoot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitClaim","inputs":[{"name":"appContract","type":"address","internalType":"address"},{"name":"lastProcessedBlockNumber","type":"uint256","internalType":"uint256"},{"name":"outputsMerkleRoot","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ClaimAccepted","inputs":[{"name":"appContract","type":"address","indexed":true,"internalType":"address"},{"name":"lastProcessedBlockNumber","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"outputsMerkleRoot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ClaimSubmitted","inputs":[{"name":"submitter","type":"address","indexed":true,"internalType":"address"},{"name":"appContract","type":"address","indexed":true,"internalType":"address"},{"name":"lastProcessedBlockNumber","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"outputsMerkleRoot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"NotEpochFinalBlock","inputs":[{"name":"lastProcessedBlockNumber","type":"uint256","internalType":"uint256"},{"name":"epochLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotFirstClaim","inputs":[{"name":"appContract","type":"address","internalType":"address"},{"name":"lastProcessedBlockNumber","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotPastBlock","inputs":[{"name":"lastProcessedBlockNumber","type":"uint256","internalType":"uint256"},{"name":"currentBlockNumber","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60a03461011f57601f61062038819003918201601f19168301916001600160401b0383118484101761012357808492604094855283398101031261011f5780516001600160a01b038116919082900361011f576020015180156100da5760805280156100c757600380546001600160a01b03198116831790915560405191906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a36104e8908161013882396080518181816101a201526102720152f35b631e4fbdf760e01b5f525f60045260245ffd5b60405162461bcd60e51b815260206004820152601d60248201527f65706f6368206c656e677468206d757374206e6f74206265207a65726f0000006044820152606490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714610402575080636470af0014610248578063715018a6146101ed5780638da5cb5b146101c5578063cfe8a73b1461018b578063d574f4d71461016e578063e5cc866414610126578063ee5e0faa146101095763f2fde38b1461007f575f80fd5b3461010557602036600319011261010557610098610467565b6100a061047d565b6001600160a01b031680156100f257600380546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b34610105575f366003190112610105576020600254604051908152f35b34610105576040366003190112610105576001600160a01b03610147610467565b165f525f60205260405f206024355f52602052602060ff60405f2054166040519015158152f35b34610105575f366003190112610105576020600154604051908152f35b34610105575f3660031901126101055760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610105575f366003190112610105576003546040516001600160a01b039091168152602090f35b34610105575f3660031901126101055761020561047d565b600380546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461010557606036600319011261010557610261610467565b6024356044359161027061047d565b7f000000000000000000000000000000000000000000000000000000000000000080156103ee575f1981018181116103da57818406036103c457438310156103ad5782049060018060a01b0316805f52600460205260405f2092600160ff8460081c94161b94835f52846020528560405f205416610396577f0f2cd00a405c0d1a66050307b6722c4788db6ed57aa3589a5c38da535cc3ce63916040918483518381528260208201527ff4ff953641f10e17dd93c0bc51334cb1f711fdcb4e37992021a5973f7a958f09853392a36103496002546104a4565b600255845f525f602052825f20815f52602052825f20600160ff1982541617905582519182526020820152a26103806001546104a4565b6001555f5260205260405f209081541790555f80f35b5090637e94264560e01b5f5260045260245260445ffd5b8263d804a6a160e01b5f526004524360245260445ffd5b8263c92a0d6960e01b5f5260045260245260445ffd5b634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b34610105576020366003190112610105576004359063ffffffff60e01b821680920361010557816020921590811561043c575b5015158152f35b63485979a360e11b811491508115610456575b5083610435565b6301ffc9a760e01b1490508361044f565b600435906001600160a01b038216820361010557565b6003546001600160a01b0316330361049157565b63118cdaa760e01b5f523360045260245ffd5b5f1981146103da576001019056fea26469706673582212207b0199ad0524fd56347ce3e6aad02d69c9950e42b672be8690cee40605c0ec5564736f6c634300081e0033","sourceMap":"824:2143:29:-:0;;;;;;;;;;;;;-1:-1:-1;;824:2143:29;;;;-1:-1:-1;;;;;824:2143:29;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;824:2143:29;;;;;;;;;;;;1222:15:26;;824:2143:29;;1281:26:26;;1273::0;;1269:95;;3004:6;824:2143:29;;-1:-1:-1;;;;;;824:2143:29;;;;;;;;;;;-1:-1:-1;;;;;824:2143:29;3052:40:0;-1:-1:-1;;3052:40:0;824:2143:29;;;;;;1281:26:26;824:2143:29;;;;;;;;;;;1269:95:0;1322:31;;;-1:-1:-1;1322:31:0;-1:-1:-1;1322:31:0;824:2143:29;;-1:-1:-1;1322:31:0;824:2143:29;;;-1:-1:-1;;;824:2143:29;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;824:2143:29;;;;;;-1:-1:-1;824:2143:29;;;;;-1:-1:-1;824:2143:29","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714610402575080636470af0014610248578063715018a6146101ed5780638da5cb5b146101c5578063cfe8a73b1461018b578063d574f4d71461016e578063e5cc866414610126578063ee5e0faa146101095763f2fde38b1461007f575f80fd5b3461010557602036600319011261010557610098610467565b6100a061047d565b6001600160a01b031680156100f257600380546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b34610105575f366003190112610105576020600254604051908152f35b34610105576040366003190112610105576001600160a01b03610147610467565b165f525f60205260405f206024355f52602052602060ff60405f2054166040519015158152f35b34610105575f366003190112610105576020600154604051908152f35b34610105575f3660031901126101055760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610105575f366003190112610105576003546040516001600160a01b039091168152602090f35b34610105575f3660031901126101055761020561047d565b600380546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461010557606036600319011261010557610261610467565b6024356044359161027061047d565b7f000000000000000000000000000000000000000000000000000000000000000080156103ee575f1981018181116103da57818406036103c457438310156103ad5782049060018060a01b0316805f52600460205260405f2092600160ff8460081c94161b94835f52846020528560405f205416610396577f0f2cd00a405c0d1a66050307b6722c4788db6ed57aa3589a5c38da535cc3ce63916040918483518381528260208201527ff4ff953641f10e17dd93c0bc51334cb1f711fdcb4e37992021a5973f7a958f09853392a36103496002546104a4565b600255845f525f602052825f20815f52602052825f20600160ff1982541617905582519182526020820152a26103806001546104a4565b6001555f5260205260405f209081541790555f80f35b5090637e94264560e01b5f5260045260245260445ffd5b8263d804a6a160e01b5f526004524360245260445ffd5b8263c92a0d6960e01b5f5260045260245260445ffd5b634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b34610105576020366003190112610105576004359063ffffffff60e01b821680920361010557816020921590811561043c575b5015158152f35b63485979a360e11b811491508115610456575b5083610435565b6301ffc9a760e01b1490508361044f565b600435906001600160a01b038216820361010557565b6003546001600160a01b0316330361049157565b63118cdaa760e01b5f523360045260245ffd5b5f1981146103da576001019056fea26469706673582212207b0199ad0524fd56347ce3e6aad02d69c9950e42b672be8690cee40605c0ec5564736f6c634300081e0033","sourceMap":"824:2143:29:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;824:2143:29;;;;;;:::i;:::-;1500:62:0;;:::i;:::-;-1:-1:-1;;;;;824:2143:29;2627:22:0;;2623:91;;3004:6;824:2143:29;;-1:-1:-1;;;;;;824:2143:29;;;;;;;-1:-1:-1;;;;;824:2143:29;3052:40:0;-1:-1:-1;;3052:40:0;824:2143:29;2623:91:0;2672:31;;;824:2143:29;2672:31:0;824:2143:29;;;;;2672:31:0;824:2143:29;;;;;;;;;;-1:-1:-1;;824:2143:29;;;;;2032:21:26;824:2143:29;;;;;;;;;;;;;-1:-1:-1;;824:2143:29;;;;-1:-1:-1;;;;;824:2143:29;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;824:2143:29;;;;;1872:20:26;824:2143:29;;;;;;;;;;;;;-1:-1:-1;;824:2143:29;;;;;;;1721:12:26;824:2143:29;;;;;;;;;-1:-1:-1;;824:2143:29;;;;1710:6:0;824:2143:29;;;-1:-1:-1;;;;;824:2143:29;;;;;;;;;;;;;;-1:-1:-1;;824:2143:29;;;;1500:62:0;;:::i;:::-;3004:6;824:2143:29;;-1:-1:-1;;;;;;824:2143:29;;;;;;;-1:-1:-1;;;;;824:2143:29;3052:40:0;824:2143:29;;3052:40:0;824:2143:29;;;;;;;-1:-1:-1;;824:2143:29;;;;;;:::i;:::-;;;;;1500:62:0;;;:::i;:::-;2674:12:26;824:2143:29;;;;-1:-1:-1;;824:2143:29;;;;;;;;;;2647:61:26;824:2143:29;;2835:12:26;2886:37;;824:2143:29;;;;;;;;;;;;;;;;;;;;;;;;;1144:1:18;824:2143:29;1176:12:18;;824:2143:29;;;;;;;;;;;;;1206:27:18;824:2143:29;;4246:71:26;824:2143:29;;;;;;;;;;;;;;3537:105:26;2014:10:29;;3537:105:26;;3652:23;;824:2143:29;3652:23:26;:::i;:::-;;824:2143:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4246:71:26;4327:22;824:2143:29;;4327:22:26;:::i;:::-;824:2143:29;;;;;;;;;;;;1732:28:18;824:2143:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2835:12:26;824:2143:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;824:2143:29;;;;;;;;;;;;;;;;;2863:43;824:2143;2863:43;;:95;;;;;824:2143;;;;;;;2863:95;-1:-1:-1;;;2262:43:26;;;-1:-1:-1;2262:95:26;;;;2863::29;;;;;2262::26;-1:-1:-1;;;862:40:16;;-1:-1:-1;2262:95:26;;;824:2143:29;;;;-1:-1:-1;;;;;824:2143:29;;;;;;:::o;1796:162:0:-;1710:6;824:2143:29;-1:-1:-1;;;;;824:2143:29;735:10:12;1855:23:0;1851:101;;1796:162::o;1851:101::-;1901:40;;;-1:-1:-1;1901:40:0;735:10:12;1901:40:0;824:2143:29;;-1:-1:-1;1901:40:0;824:2143:29;-1:-1:-1;;824:2143:29;;;;;;;:::o","linkReferences":{},"immutableReferences":{"1824":[{"start":418,"length":32},{"start":626,"length":32}]}},"methodIdentifiers":{"getEpochLength()":"cfe8a73b","getNumberOfAcceptedClaims()":"d574f4d7","getNumberOfSubmittedClaims()":"ee5e0faa","isOutputsMerkleRootValid(address,bytes32)":"e5cc8664","owner()":"8da5cb5b","renounceOwnership()":"715018a6","submitClaim(address,uint256,bytes32)":"6470af00","supportsInterface(bytes4)":"01ffc9a7","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epochLength\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"lastProcessedBlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"epochLength\",\"type\":\"uint256\"}],\"name\":\"NotEpochFinalBlock\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"appContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lastProcessedBlockNumber\",\"type\":\"uint256\"}],\"name\":\"NotFirstClaim\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"lastProcessedBlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentBlockNumber\",\"type\":\"uint256\"}],\"name\":\"NotPastBlock\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"appContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lastProcessedBlockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"outputsMerkleRoot\",\"type\":\"bytes32\"}],\"name\":\"ClaimAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"submitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"appContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lastProcessedBlockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"outputsMerkleRoot\",\"type\":\"bytes32\"}],\"name\":\"ClaimSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getEpochLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumberOfAcceptedClaims\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumberOfSubmittedClaims\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"appContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"outputsMerkleRoot\",\"type\":\"bytes32\"}],\"name\":\"isOutputsMerkleRootValid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"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\":\"appContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lastProcessedBlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"outputsMerkleRoot\",\"type\":\"bytes32\"}],\"name\":\"submitClaim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract inherits from OpenZeppelin's `Ownable` contract.      For more information on `Ownable`, please consult OpenZeppelin's official documentation.\",\"errors\":{\"NotEpochFinalBlock(uint256,uint256)\":[{\"params\":{\"epochLength\":\"The epoch length\",\"lastProcessedBlockNumber\":\"The number of the last processed block\"}}],\"NotFirstClaim(address,uint256)\":[{\"params\":{\"appContract\":\"The application contract address\",\"lastProcessedBlockNumber\":\"The number of the last processed block\"}}],\"NotPastBlock(uint256,uint256)\":[{\"params\":{\"currentBlockNumber\":\"The number of the current block\",\"lastProcessedBlockNumber\":\"The number of the last processed block\"}}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"ClaimAccepted(address,uint256,bytes32)\":{\"details\":\"For each application and lastProcessedBlockNumber, there can be at most one accepted claim.\",\"params\":{\"appContract\":\"The application contract address\",\"lastProcessedBlockNumber\":\"The number of the last processed block\",\"outputsMerkleRoot\":\"The outputs Merkle root\"}},\"ClaimSubmitted(address,address,uint256,bytes32)\":{\"params\":{\"appContract\":\"The application contract address\",\"lastProcessedBlockNumber\":\"The number of the last processed block\",\"outputsMerkleRoot\":\"The outputs Merkle root\",\"submitter\":\"The submitter address\"}}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Reverts if the epoch length is zero.\",\"params\":{\"epochLength\":\"The epoch length\",\"initialOwner\":\"The initial contract owner\"}},\"getEpochLength()\":{\"details\":\"The epoch number of a block is defined as the integer division of the block number by the epoch length.\"},\"isOutputsMerkleRootValid(address,bytes32)\":{\"params\":{\"appContract\":\"The application contract address\",\"outputsMerkleRoot\":\"The outputs Merkle root\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"submitClaim(address,uint256,bytes32)\":{\"details\":\"MUST fire a `ClaimSubmitted` event.MAY fire a `ClaimAccepted` event, if the acceptance criteria is met.\",\"params\":{\"appContract\":\"The application contract address\",\"lastProcessedBlockNumber\":\"The number of the last processed block\",\"outputsMerkleRoot\":\"The outputs Merkle root\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"_validatedEpochs\":{\"details\":\"Epochs are stored in bitmap structure by their number (last processed block number / epoch length).\"}},\"version\":1},\"userdoc\":{\"errors\":{\"NotEpochFinalBlock(uint256,uint256)\":[{\"notice\":\"The claim contains the number of a block that is not at the end of an epoch (its modulo epoch length is not epoch length - 1).\"}],\"NotFirstClaim(address,uint256)\":[{\"notice\":\"A claim for that application and epoch was already submitted by the validator.\"}],\"NotPastBlock(uint256,uint256)\":[{\"notice\":\"The claim contains the number of a block in the future (it is greater or equal to the current block number).\"}]},\"events\":{\"ClaimAccepted(address,uint256,bytes32)\":{\"notice\":\"MUST trigger when a claim is accepted.\"},\"ClaimSubmitted(address,address,uint256,bytes32)\":{\"notice\":\"MUST trigger when a claim is submitted.\"}},\"kind\":\"user\",\"methods\":{\"getEpochLength()\":{\"notice\":\"Get the epoch length, in number of base layer blocks.\"},\"getNumberOfAcceptedClaims()\":{\"notice\":\"Get the number of claims accepted by the consensus.\"},\"getNumberOfSubmittedClaims()\":{\"notice\":\"Get the number of claims submitted to the consensus.\"},\"isOutputsMerkleRootValid(address,bytes32)\":{\"notice\":\"Check whether an outputs Merkle root is valid.\"},\"submitClaim(address,uint256,bytes32)\":{\"notice\":\"Submit a claim to the consensus.\"}},\"notice\":\"A consensus contract controlled by a single address, the owner.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/consensus/authority/Authority.sol\":\"Authority\"},\"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/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"dependencies/@openzeppelin-contracts-5.2.0/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"dependencies/@openzeppelin-contracts-5.2.0/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8084aa71a4cc7d2980972412a88fe4f114869faea3fefa5436431644eb5c0287\",\"dweb:/ipfs/Qmbqfs5dRdPvHVKY8kTaeyc65NdqXRQwRK7h9s5UJEhD1p\"]},\"dependencies/@openzeppelin-contracts-5.2.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"dependencies/@openzeppelin-contracts-5.2.0/utils/structs/BitMaps.sol\":{\"keccak256\":\"0x3616f1b0d0a9ee1ca8f0953ecaceb9230e36f691c7974d30f964212acff52d2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bebdd07b31ac28e3e596ac6f0333da90a4e332405aa7d65f3a3a7e0b4cf15e\",\"dweb:/ipfs/QmckoDU5bBnye2UtPcrfJNahLD2FbxrnPP9nrREMWPpnug\"]},\"src/access/IOwnable.sol\":{\"keccak256\":\"0x826f366603fe6fd715bd912d40e9b4e851c110aea5895522523d800015532f6d\",\"license\":\"Apache-2.0 (see LICENSE)\",\"urls\":[\"bzz-raw://bb115a4a30824bf77e10b63727cea83e7e1e9bf4c3079ed65e3e7c0eaa290272\",\"dweb:/ipfs/QmYpjBNmELeX1NKdPjXcqnssz65pgYpX2g6ahKXisr9aWM\"]},\"src/consensus/AbstractConsensus.sol\":{\"keccak256\":\"0x1455e92481df72c9828cccf4054c43240939ba25b63ef230e7a479dd385367d2\",\"license\":\"Apache-2.0 (see LICENSE)\",\"urls\":[\"bzz-raw://69266ee1ccec16fd0ff1b8fd56daae37bcfb8426a1f59ca57319b03def84d3c5\",\"dweb:/ipfs/QmXK3VX5JXk3XHk8rMiyUEgJAWErtDKqtPuiKVqYZCnz9C\"]},\"src/consensus/IConsensus.sol\":{\"keccak256\":\"0x26491d6a13136dfed5c07b4553c86f8ec3ec2e0de803085620523db9c4f94dd3\",\"license\":\"Apache-2.0 (see LICENSE)\",\"urls\":[\"bzz-raw://6a0efccda9973ca9da9b8a1fa18fba0df9a457a3b46c6d101ee06f6da43eb468\",\"dweb:/ipfs/QmehZJHU6fEmGuA2QkthA9Mka38phw4q4ioX34rqXKp9Pi\"]},\"src/consensus/IOutputsMerkleRootValidator.sol\":{\"keccak256\":\"0x133dfa71847fd6478489e983d53b08b22f5f578634c2103e96a11cd128e81d68\",\"license\":\"Apache-2.0 (see LICENSE)\",\"urls\":[\"bzz-raw://eb43c0a4aa7cd21753a3b92820da37ef58cf29aa4ef5c18a6f2face3e6e94e25\",\"dweb:/ipfs/QmezZmVZV1cfygDYPC8XheVVxaSZt92xQNdEpnRV6Xdh3M\"]},\"src/consensus/authority/Authority.sol\":{\"keccak256\":\"0x506b41a3d36fb99226afc1cbcaa4716d168d606d6d092ad9826ee0299ba79510\",\"license\":\"Apache-2.0 (see LICENSE)\",\"urls\":[\"bzz-raw://152d1a026fb0a1aff3306088f614d80d77cac5ac9ca9953f9677b20eae7fd3e8\",\"dweb:/ipfs/QmaGfW12EHNUR3oy81xswwR3cX1qYZaZ5G21A39uxF7w6g\"]},\"src/consensus/authority/IAuthority.sol\":{\"keccak256\":\"0x6b63b7eb9c7deac1184052e58a2fba6e45bc630f1a38225d35cafbd0d5b98b04\",\"license\":\"Apache-2.0 (see LICENSE)\",\"urls\":[\"bzz-raw://a5775335d8d7fbb9d8470259af3fe924fdfc14c35c36f4d860fb3f70f8b9ef3b\",\"dweb:/ipfs/QmdpkdekUhZF1mEeKwkLWw3gDt6M8zTeS148rJ4vhUs8Eb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"uint256","name":"epochLength","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"lastProcessedBlockNumber","type":"uint256"},{"internalType":"uint256","name":"epochLength","type":"uint256"}],"type":"error","name":"NotEpochFinalBlock"},{"inputs":[{"internalType":"address","name":"appContract","type":"address"},{"internalType":"uint256","name":"lastProcessedBlockNumber","type":"uint256"}],"type":"error","name":"NotFirstClaim"},{"inputs":[{"internalType":"uint256","name":"lastProcessedBlockNumber","type":"uint256"},{"internalType":"uint256","name":"currentBlockNumber","type":"uint256"}],"type":"error","name":"NotPastBlock"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"appContract","type":"address","indexed":true},{"internalType":"uint256","name":"lastProcessedBlockNumber","type":"uint256","indexed":false},{"internalType":"bytes32","name":"outputsMerkleRoot","type":"bytes32","indexed":false}],"type":"event","name":"ClaimAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"submitter","type":"address","indexed":true},{"internalType":"address","name":"appContract","type":"address","indexed":true},{"internalType":"uint256","name":"lastProcessedBlockNumber","type":"uint256","indexed":false},{"internalType":"bytes32","name":"outputsMerkleRoot","type":"bytes32","indexed":false}],"type":"event","name":"ClaimSubmitted","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"getEpochLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getNumberOfAcceptedClaims","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getNumberOfSubmittedClaims","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"appContract","type":"address"},{"internalType":"bytes32","name":"outputsMerkleRoot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"isOutputsMerkleRootValid","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"appContract","type":"address"},{"internalType":"uint256","name":"lastProcessedBlockNumber","type":"uint256"},{"internalType":"bytes32","name":"outputsMerkleRoot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"submitClaim"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Reverts if the epoch length is zero.","params":{"epochLength":"The epoch length","initialOwner":"The initial contract owner"}},"getEpochLength()":{"details":"The epoch number of a block is defined as the integer division of the block number by the epoch length."},"isOutputsMerkleRootValid(address,bytes32)":{"params":{"appContract":"The application contract address","outputsMerkleRoot":"The outputs Merkle root"}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"submitClaim(address,uint256,bytes32)":{"details":"MUST fire a `ClaimSubmitted` event.MAY fire a `ClaimAccepted` event, if the acceptance criteria is met.","params":{"appContract":"The application contract address","lastProcessedBlockNumber":"The number of the last processed block","outputsMerkleRoot":"The outputs Merkle root"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"getEpochLength()":{"notice":"Get the epoch length, in number of base layer blocks."},"getNumberOfAcceptedClaims()":{"notice":"Get the number of claims accepted by the consensus."},"getNumberOfSubmittedClaims()":{"notice":"Get the number of claims submitted to the consensus."},"isOutputsMerkleRootValid(address,bytes32)":{"notice":"Check whether an outputs Merkle root is valid."},"submitClaim(address,uint256,bytes32)":{"notice":"Submit a claim to the consensus."}},"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/consensus/authority/Authority.sol":"Authority"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.2.0/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.2.0/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.2.0/utils/introspection/ERC165.sol":{"keccak256":"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa","urls":["bzz-raw://8084aa71a4cc7d2980972412a88fe4f114869faea3fefa5436431644eb5c0287","dweb:/ipfs/Qmbqfs5dRdPvHVKY8kTaeyc65NdqXRQwRK7h9s5UJEhD1p"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.2.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.2.0/utils/structs/BitMaps.sol":{"keccak256":"0x3616f1b0d0a9ee1ca8f0953ecaceb9230e36f691c7974d30f964212acff52d2b","urls":["bzz-raw://d4bebdd07b31ac28e3e596ac6f0333da90a4e332405aa7d65f3a3a7e0b4cf15e","dweb:/ipfs/QmckoDU5bBnye2UtPcrfJNahLD2FbxrnPP9nrREMWPpnug"],"license":"MIT"},"src/access/IOwnable.sol":{"keccak256":"0x826f366603fe6fd715bd912d40e9b4e851c110aea5895522523d800015532f6d","urls":["bzz-raw://bb115a4a30824bf77e10b63727cea83e7e1e9bf4c3079ed65e3e7c0eaa290272","dweb:/ipfs/QmYpjBNmELeX1NKdPjXcqnssz65pgYpX2g6ahKXisr9aWM"],"license":"Apache-2.0 (see LICENSE)"},"src/consensus/AbstractConsensus.sol":{"keccak256":"0x1455e92481df72c9828cccf4054c43240939ba25b63ef230e7a479dd385367d2","urls":["bzz-raw://69266ee1ccec16fd0ff1b8fd56daae37bcfb8426a1f59ca57319b03def84d3c5","dweb:/ipfs/QmXK3VX5JXk3XHk8rMiyUEgJAWErtDKqtPuiKVqYZCnz9C"],"license":"Apache-2.0 (see LICENSE)"},"src/consensus/IConsensus.sol":{"keccak256":"0x26491d6a13136dfed5c07b4553c86f8ec3ec2e0de803085620523db9c4f94dd3","urls":["bzz-raw://6a0efccda9973ca9da9b8a1fa18fba0df9a457a3b46c6d101ee06f6da43eb468","dweb:/ipfs/QmehZJHU6fEmGuA2QkthA9Mka38phw4q4ioX34rqXKp9Pi"],"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/consensus/authority/Authority.sol":{"keccak256":"0x506b41a3d36fb99226afc1cbcaa4716d168d606d6d092ad9826ee0299ba79510","urls":["bzz-raw://152d1a026fb0a1aff3306088f614d80d77cac5ac9ca9953f9677b20eae7fd3e8","dweb:/ipfs/QmaGfW12EHNUR3oy81xswwR3cX1qYZaZ5G21A39uxF7w6g"],"license":"Apache-2.0 (see LICENSE)"},"src/consensus/authority/IAuthority.sol":{"keccak256":"0x6b63b7eb9c7deac1184052e58a2fba6e45bc630f1a38225d35cafbd0d5b98b04","urls":["bzz-raw://a5775335d8d7fbb9d8470259af3fe924fdfc14c35c36f4d860fb3f70f8b9ef3b","dweb:/ipfs/QmdpkdekUhZF1mEeKwkLWw3gDt6M8zTeS148rJ4vhUs8Eb"],"license":"Apache-2.0 (see LICENSE)"}},"version":1},"id":29}