{"abi":[{"type":"constructor","inputs":[{"name":"validators","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":"isValidatorInFavorOf","inputs":[{"name":"appContract","type":"address","internalType":"address"},{"name":"lastProcessedBlockNumber","type":"uint256","internalType":"uint256"},{"name":"outputsMerkleRoot","type":"bytes32","internalType":"bytes32"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isValidatorInFavorOfAnyClaimInEpoch","inputs":[{"name":"appContract","type":"address","internalType":"address"},{"name":"lastProcessedBlockNumber","type":"uint256","internalType":"uint256"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"numOfValidators","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"numOfValidatorsInFavorOf","inputs":[{"name":"appContract","type":"address","internalType":"address"},{"name":"lastProcessedBlockNumber","type":"uint256","internalType":"uint256"},{"name":"outputsMerkleRoot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"numOfValidatorsInFavorOfAnyClaimInEpoch","inputs":[{"name":"appContract","type":"address","internalType":"address"},{"name":"lastProcessedBlockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"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":"validatorById","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"validatorId","inputs":[{"name":"validator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"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":"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"}]}],"bytecode":{"object":"0x60c0604052346101ba5761092f80380380610019816101d2565b9283398101906040818303126101ba5780516001600160401b0381116101ba57810182601f820112156101ba578051926001600160401b0384116101be578360051b9160208061006a8186016101d2565b8097815201938201019182116101ba57602001915b81831061019a578460208501518015610155576080525f905f5b81518110156101225760018060a01b0360208260051b8401015116805f52600360205260405f2054156100d0575b50600101610099565b92905f19821461010e57600180920193805f5260036020528460405f2055845f52600460205260405f2090838060a01b0319825416179055906100c7565b634e487b7160e01b5f52601160045260245ffd5b8260a05260405161073790816101f8823960805181818161014801526101d0015260a05181818161034401526105b90152f35b60405162461bcd60e51b815260206004820152601d60248201527f65706f6368206c656e677468206d757374206e6f74206265207a65726f0000006044820152606490fd5b82516001600160a01b03811681036101ba5781526020928301920161007f565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f191682016001600160401b038111838210176101be5760405256fe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714610646575080630a6f1fe81461060e5780631c45396a146105dc5780631e526e45146105a2578063446ccbf01461055e5780634b53459c146104fe5780634b84231c146104885780636470af00146101ac5780637051bfd51461016b578063cfe8a73b14610131578063d574f4d714610114578063e5cc8664146100cc5763ee5e0faa146100ab575f80fd5b346100c8575f3660031901126100c8576020600254604051908152f35b5f80fd5b346100c85760403660031901126100c8576001600160a01b036100ed6106b3565b165f525f60205260405f206024355f52602052602060ff60405f2054166040519015158152f35b346100c8575f3660031901126100c8576020600154604051908152f35b346100c8575f3660031901126100c85760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100c857610179366106c9565b9160018060a01b03165f52600660205260405f20905f5260205260405f20905f52602052602060405f2054604051908152f35b346100c8576101ba366106c9565b335f52600360205260405f2054928315610443577f0000000000000000000000000000000000000000000000000000000000000000801561042f575f1981018181116103d757818506036104195750438310156104025760018060a01b031692835f52600660205260405f20835f5260205260405f20825f5260205260405f2090845f52600560205260405f20845f5260205260405f206001830190610277838360019160ff918160081c5f52602052161b60405f205416151590565b1561027e57005b600181016102a3848260019160ff918160081c5f52602052161b60405f205416151590565b6103eb579061030e846103359594938a6040518b81528a60208201527ff4ff953641f10e17dd93c0bc51334cb1f711fdcb4e37992021a5973f7a958f0960403392a36102f06002546106f3565b6002558160081c5f52602052600160ff60405f2092161b8154179055565b61031881546106f3565b90558160081c5f52602052600160ff60405f2092161b8154179055565b61033f81546106f3565b8091557f000000000000000000000000000000000000000000000000000000000000000060011c60010190816001116103d7571461037957005b7f0f2cd00a405c0d1a66050307b6722c4788db6ed57aa3589a5c38da535cc3ce6391604091845f525f602052825f20815f52602052825f20600160ff1982541617905582519182526020820152a26103d26001546106f3565b600155005b634e487b7160e01b5f52601160045260245ffd5b8688637e94264560e01b5f5260045260245260445ffd5b8263d804a6a160e01b5f526004524360245260445ffd5b8363c92a0d6960e01b5f5260045260245260445ffd5b634e487b7160e01b5f52601260045260245ffd5b60405162461bcd60e51b815260206004820152601f60248201527f51756f72756d3a2063616c6c6572206973206e6f742076616c696461746f72006044820152606490fd5b346100c85760803660031901126100c8576001600160a01b036104a96106b3565b165f52600660205260405f206024355f5260205260405f206044355f5260205260206104f4606435600160405f200160019160ff918160081c5f52602052161b60405f205416151590565b6040519015158152f35b346100c85760603660031901126100c8576001600160a01b0361051f6106b3565b165f52600560205260405f206024355f5260205260206104f4604435600160405f200160019160ff918160081c5f52602052161b60405f205416151590565b346100c85760403660031901126100c8576001600160a01b0361057f6106b3565b165f52600560205260405f206024355f52602052602060405f2054604051908152f35b346100c8575f3660031901126100c85760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100c85760203660031901126100c8576004355f526004602052602060018060a01b0360405f205416604051908152f35b346100c85760203660031901126100c8576001600160a01b0361062f6106b3565b165f526003602052602060405f2054604051908152f35b346100c85760203660031901126100c8576004359063ffffffff60e01b82168092036100c857602091631e492d3160e11b8114908115610688575b5015158152f35b63485979a360e11b8114915081156106a2575b5083610681565b6301ffc9a760e01b1490508361069b565b600435906001600160a01b03821682036100c857565b60609060031901126100c8576004356001600160a01b03811681036100c857906024359060443590565b5f1981146103d7576001019056fea264697066735822122052abc5dd27fcc600285a47c6d62715d285b536f9402181559d3da36521ba611d64736f6c634300081e0033","sourceMap":"400:6790:35:-:0;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;400:6790:35;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;400:6790:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1222:15:26;;400:6790:35;;1281:26:26;;-1:-1:-1;2402:9:35;-1:-1:-1;2436:3:35;400:6790;;2413:21;;;;;400:6790;;;;;;;;;;;;;;;-1:-1:-1;400:6790:35;2506:12;400:6790;;;-1:-1:-1;400:6790:35;;2506:28;2502:177;;2436:3;;400:6790;;2402:9;;2502:177;400:6790;;-1:-1:-1;;400:6790:35;;;;;;;;;;-1:-1:-1;400:6790:35;2506:12;400:6790;;;;-1:-1:-1;400:6790:35;;;-1:-1:-1;400:6790:35;2634:14;400:6790;;;-1:-1:-1;400:6790:35;;;;;;;;;;;;;;2502:177;;;400:6790;;;;-1:-1:-1;400:6790:35;;;;;-1:-1:-1;400:6790:35;2413:21;;2698;;400:6790;;;;;;;;1281:26:26;400:6790:35;;;;;;;;;;2698:21;400:6790;;;;;;;;;;;;;;-1:-1:-1;;;400:6790:35;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;400:6790:35;;;;;;;;;;;;;;;;;-1:-1:-1;400:6790:35;;;;;;-1:-1:-1;400:6790:35;;;;;-1:-1:-1;400:6790:35;;;;;;;;-1:-1:-1;;400:6790:35;;;-1:-1:-1;;;;;400:6790:35;;;;;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714610646575080630a6f1fe81461060e5780631c45396a146105dc5780631e526e45146105a2578063446ccbf01461055e5780634b53459c146104fe5780634b84231c146104885780636470af00146101ac5780637051bfd51461016b578063cfe8a73b14610131578063d574f4d714610114578063e5cc8664146100cc5763ee5e0faa146100ab575f80fd5b346100c8575f3660031901126100c8576020600254604051908152f35b5f80fd5b346100c85760403660031901126100c8576001600160a01b036100ed6106b3565b165f525f60205260405f206024355f52602052602060ff60405f2054166040519015158152f35b346100c8575f3660031901126100c8576020600154604051908152f35b346100c8575f3660031901126100c85760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100c857610179366106c9565b9160018060a01b03165f52600660205260405f20905f5260205260405f20905f52602052602060405f2054604051908152f35b346100c8576101ba366106c9565b335f52600360205260405f2054928315610443577f0000000000000000000000000000000000000000000000000000000000000000801561042f575f1981018181116103d757818506036104195750438310156104025760018060a01b031692835f52600660205260405f20835f5260205260405f20825f5260205260405f2090845f52600560205260405f20845f5260205260405f206001830190610277838360019160ff918160081c5f52602052161b60405f205416151590565b1561027e57005b600181016102a3848260019160ff918160081c5f52602052161b60405f205416151590565b6103eb579061030e846103359594938a6040518b81528a60208201527ff4ff953641f10e17dd93c0bc51334cb1f711fdcb4e37992021a5973f7a958f0960403392a36102f06002546106f3565b6002558160081c5f52602052600160ff60405f2092161b8154179055565b61031881546106f3565b90558160081c5f52602052600160ff60405f2092161b8154179055565b61033f81546106f3565b8091557f000000000000000000000000000000000000000000000000000000000000000060011c60010190816001116103d7571461037957005b7f0f2cd00a405c0d1a66050307b6722c4788db6ed57aa3589a5c38da535cc3ce6391604091845f525f602052825f20815f52602052825f20600160ff1982541617905582519182526020820152a26103d26001546106f3565b600155005b634e487b7160e01b5f52601160045260245ffd5b8688637e94264560e01b5f5260045260245260445ffd5b8263d804a6a160e01b5f526004524360245260445ffd5b8363c92a0d6960e01b5f5260045260245260445ffd5b634e487b7160e01b5f52601260045260245ffd5b60405162461bcd60e51b815260206004820152601f60248201527f51756f72756d3a2063616c6c6572206973206e6f742076616c696461746f72006044820152606490fd5b346100c85760803660031901126100c8576001600160a01b036104a96106b3565b165f52600660205260405f206024355f5260205260405f206044355f5260205260206104f4606435600160405f200160019160ff918160081c5f52602052161b60405f205416151590565b6040519015158152f35b346100c85760603660031901126100c8576001600160a01b0361051f6106b3565b165f52600560205260405f206024355f5260205260206104f4604435600160405f200160019160ff918160081c5f52602052161b60405f205416151590565b346100c85760403660031901126100c8576001600160a01b0361057f6106b3565b165f52600560205260405f206024355f52602052602060405f2054604051908152f35b346100c8575f3660031901126100c85760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100c85760203660031901126100c8576004355f526004602052602060018060a01b0360405f205416604051908152f35b346100c85760203660031901126100c8576001600160a01b0361062f6106b3565b165f526003602052602060405f2054604051908152f35b346100c85760203660031901126100c8576004359063ffffffff60e01b82168092036100c857602091631e492d3160e11b8114908115610688575b5015158152f35b63485979a360e11b8114915081156106a2575b5083610681565b6301ffc9a760e01b1490508361069b565b600435906001600160a01b03821682036100c857565b60609060031901126100c8576004356001600160a01b03811681036100c857906024359060443590565b5f1981146103d7576001019056fea264697066735822122052abc5dd27fcc600285a47c6d62715d285b536f9402181559d3da36521ba611d64736f6c634300081e0033","sourceMap":"400:6790:35:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;400:6790:35;;;;;2032:21:26;400:6790:35;;;;;;;;;;;;;;;;;-1:-1:-1;;400:6790:35;;;;-1:-1:-1;;;;;400:6790:35;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;400:6790:35;;;;;1872:20:26;400:6790:35;;;;;;;;;;;;;-1:-1:-1;;400:6790:35;;;;;;;1721:12:26;400:6790:35;;;;;;;;;;:::i;:::-;;;;;;;;;;6810:6;400:6790;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2919:10;400:6790;;2906:12;400:6790;;;;;;2948:6;;;400:6790;;2674:12:26;400:6790:35;;;;-1:-1:-1;;400:6790:35;;;;;;;;;;2647:61:26;400:6790:35;;2835:12:26;;2886:37;;400:6790:35;;;;;;;;;;;;;6810:6;400:6790;;;;;;;;;;;;;;;;;;;;;;;;;6231:9;400:6790;;;;;;;;;;;;;2706:1:26;3350:17:35;;:25;;;;1170:1:18;1028:217;400:6790:35;1028:217:18;400:6790:35;1144:1:18;400:6790:35;-1:-1:-1;400:6790:35;;;1176:12:18;400:6790:35;;-1:-1:-1;400:6790:35;;1206:27:18;:32;;1028:217;;3350:25:35;3349:26;3345:874;;400:6790;3345:874;2706:1:26;3499:20:35;;:28;;;1170:1:18;1028:217;400:6790:35;1028:217:18;400:6790:35;1144:1:18;400:6790:35;-1:-1:-1;400:6790:35;;;1176:12:18;400:6790:35;;-1:-1:-1;400:6790:35;;1206:27:18;:32;;1028:217;;3499:28:35;400:6790;;;3836:2;400:6790;4034:2;400:6790;;;;;;;;;;;;;;3537:105:26;400:6790:35;2919:10;3537:105:26;;3652:23;;400:6790:35;3652:23:26;:::i;:::-;;400:6790:35;;1677:1:18;400:6790:35;-1:-1:-1;400:6790:35;;;1703:1:18;400:6790:35;;-1:-1:-1;400:6790:35;1709:12:18;;400:6790:35;;;1732:28:18;400:6790:35;;1581:186:18;3836:2:35;3853:23;400:6790;;3853:23;:::i;:::-;400:6790;;;1677:1:18;400:6790:35;-1:-1:-1;400:6790:35;;;1703:1:18;400:6790:35;;-1:-1:-1;400:6790:35;1709:12:18;;400:6790:35;;;1732:28:18;400:6790:35;;1581:186:18;4034:2:35;4055:20;400:6790;;4055:20;:::i;:::-;400:6790;;;4083:17;2706:1:26;400:6790:35;2706:1:26;400:6790:35;;;2706:1:26;400:6790:35;;;4055:49;4051:158;;400:6790;4051:158;4246:71:26;400:6790:35;;;;;;;;;;;;;;;;;;;;2706:1:26;400:6790:35;;;;;;;;;;;;;;;;;4246:71:26;4327:22;2706:1;400:6790:35;4327:22:26;:::i;:::-;2706:1;400:6790:35;4051:158;400:6790;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2835:12:26;400:6790:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;400:6790:35;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;400:6790:35;;;;-1:-1:-1;;;;;400:6790:35;;:::i;:::-;;;;6810:6;400:6790;;;;;;;;;;;;;;;;;;;;;5669:100;400:6790;;;;;;5669:92;1170:1:18;1028:217;400:6790:35;1028:217:18;400:6790:35;1144:1:18;400:6790:35;-1:-1:-1;400:6790:35;;;1176:12:18;400:6790:35;;-1:-1:-1;400:6790:35;;1206:27:18;:32;;1028:217;;5669:100:35;400:6790;;;;;;;;;;;;;;-1:-1:-1;;400:6790:35;;;;-1:-1:-1;;;;;400:6790:35;;:::i;:::-;;;;6231:9;400:6790;;;;;;;;;;;;5062:71;400:6790;;;;;;5062:63;1170:1:18;1028:217;400:6790:35;1028:217:18;400:6790:35;1144:1:18;400:6790:35;-1:-1:-1;400:6790:35;;;1176:12:18;400:6790:35;;-1:-1:-1;400:6790:35;;1206:27:18;:32;;1028:217;;400:6790:35;;;;;;-1:-1:-1;;400:6790:35;;;;-1:-1:-1;;;;;400:6790:35;;:::i;:::-;;;;6231:9;400:6790;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;400:6790:35;;;;;;;4316:17;400:6790;;;;;;;;;-1:-1:-1;;400:6790:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;400:6790:35;;;;-1:-1:-1;;;;;400:6790:35;;:::i;:::-;;;;4444:12;400:6790;;;;;;;;;;;;;;;;;;;-1:-1:-1;;400:6790:35;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7089:40:35;;;:92;;;;400:6790;;;;;;;7089:92;-1:-1:-1;;;2262:43:26;;;-1:-1:-1;2262:95:26;;;;7089:92:35;;;;;2262:95:26;-1:-1:-1;;;862:40:16;;-1:-1:-1;2262:95:26;;;400:6790:35;;;;-1:-1:-1;;;;;400:6790:35;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;400:6790:35;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;400:6790:35;;;;;;;:::o","linkReferences":{},"immutableReferences":{"1824":[{"start":328,"length":32},{"start":464,"length":32}],"2609":[{"start":836,"length":32},{"start":1465,"length":32}]}},"methodIdentifiers":{"getEpochLength()":"cfe8a73b","getNumberOfAcceptedClaims()":"d574f4d7","getNumberOfSubmittedClaims()":"ee5e0faa","isOutputsMerkleRootValid(address,bytes32)":"e5cc8664","isValidatorInFavorOf(address,uint256,bytes32,uint256)":"4b84231c","isValidatorInFavorOfAnyClaimInEpoch(address,uint256,uint256)":"4b53459c","numOfValidators()":"1e526e45","numOfValidatorsInFavorOf(address,uint256,bytes32)":"7051bfd5","numOfValidatorsInFavorOfAnyClaimInEpoch(address,uint256)":"446ccbf0","submitClaim(address,uint256,bytes32)":"6470af00","supportsInterface(bytes4)":"01ffc9a7","validatorById(uint256)":"1c45396a","validatorId(address)":"0a6f1fe8"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"validators\",\"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\"},{\"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\"},{\"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\":[{\"internalType\":\"address\",\"name\":\"appContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lastProcessedBlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"outputsMerkleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"isValidatorInFavorOf\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"appContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lastProcessedBlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"isValidatorInFavorOfAnyClaimInEpoch\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numOfValidators\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"appContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lastProcessedBlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"outputsMerkleRoot\",\"type\":\"bytes32\"}],\"name\":\"numOfValidatorsInFavorOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"appContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lastProcessedBlockNumber\",\"type\":\"uint256\"}],\"name\":\"numOfValidatorsInFavorOfAnyClaimInEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"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\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"validatorById\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"validatorId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"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\"}}]},\"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\":\"Duplicates in the `validators` array are ignored.Reverts if the epoch length is zero.\",\"params\":{\"epochLength\":\"The epoch length\",\"validators\":\"The array of validator addresses\"}},\"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\"}},\"isValidatorInFavorOf(address,uint256,bytes32,uint256)\":{\"details\":\"Assumes the provided ID is valid.\",\"params\":{\"appContract\":\"The application contract address\",\"id\":\"The ID of the validator\",\"lastProcessedBlockNumber\":\"The number of the last processed block\",\"outputsMerkleRoot\":\"The outputs Merkle root\"},\"returns\":{\"_0\":\"Whether validator is in favor of claim\"}},\"isValidatorInFavorOfAnyClaimInEpoch(address,uint256,uint256)\":{\"details\":\"Assumes the provided ID is valid.\",\"params\":{\"appContract\":\"The application contract address\",\"id\":\"The ID of the validator\",\"lastProcessedBlockNumber\":\"The number of the last processed block\"},\"returns\":{\"_0\":\"Whether validator is in favor of any claim in the epoch\"}},\"numOfValidatorsInFavorOf(address,uint256,bytes32)\":{\"params\":{\"appContract\":\"The application contract address\",\"lastProcessedBlockNumber\":\"The number of the last processed block\",\"outputsMerkleRoot\":\"The outputs Merkle root\"},\"returns\":{\"_0\":\"Number of validators in favor of claim\"}},\"numOfValidatorsInFavorOfAnyClaimInEpoch(address,uint256)\":{\"params\":{\"appContract\":\"The application contract address\",\"lastProcessedBlockNumber\":\"The number of the last processed block\"},\"returns\":{\"_0\":\"Number of validators in favor of any claim in the epoch\"}},\"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}.\"},\"validatorById(uint256)\":{\"details\":\"Validator IDs range from 1 to `N`, the total number of validators.Invalid IDs map to address zero.\",\"params\":{\"id\":\"The validator ID\"}},\"validatorId(address)\":{\"details\":\"Validators have IDs greater than zero.Non-validators are assigned to ID zero.\",\"params\":{\"validator\":\"The validator address\"}}},\"stateVariables\":{\"_allVotes\":{\"details\":\"See the `numOfValidatorsInFavorOfAnyClaimInEpoch` and `isValidatorInFavorOfAnyClaimInEpoch` functions.\"},\"_validatorById\":{\"details\":\"Invalid IDs map to address zero.\"},\"_validatorId\":{\"details\":\"Non-validators are assigned to ID zero.Validators have IDs greater than zero.\"},\"_votes\":{\"details\":\"See the `numOfValidatorsInFavorOf` and `isValidatorInFavorOf` functions.\"}},\"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.\"},\"isValidatorInFavorOf(address,uint256,bytes32,uint256)\":{\"notice\":\"Check whether a validator is in favor of a claim.\"},\"isValidatorInFavorOfAnyClaimInEpoch(address,uint256,uint256)\":{\"notice\":\"Check whether a validator is in favor of any claim in a given epoch.\"},\"numOfValidators()\":{\"notice\":\"Get the number of validators.\"},\"numOfValidatorsInFavorOf(address,uint256,bytes32)\":{\"notice\":\"Get the number of validators in favor of a claim.\"},\"numOfValidatorsInFavorOfAnyClaimInEpoch(address,uint256)\":{\"notice\":\"Get the number of validators in favor of any claim in a given epoch.\"},\"submitClaim(address,uint256,bytes32)\":{\"notice\":\"Submit a claim to the consensus.\"},\"validatorById(uint256)\":{\"notice\":\"Get the address of a validator by its ID.\"},\"validatorId(address)\":{\"notice\":\"Get the ID of a validator.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/consensus/quorum/Quorum.sol\":\"Quorum\"},\"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/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/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/quorum/IQuorum.sol\":{\"keccak256\":\"0x32a8ba536cdd6e727f7f0046e4daf77a937fa2c5f132c5584086e3a1f042bee1\",\"license\":\"Apache-2.0 (see LICENSE)\",\"urls\":[\"bzz-raw://db9343aa57c1816640f8b05fe6d923ca5ef08ef28cbfdff4c133a74a6e3a0278\",\"dweb:/ipfs/QmYPA4CcB7fiEQFRGtoRqPnCdTwXGGCHCapX15NedEqwwP\"]},\"src/consensus/quorum/Quorum.sol\":{\"keccak256\":\"0x8bf69542f9e335720e162b972cac272496d3bc7a39d0096fffd7715d588004f7\",\"license\":\"Apache-2.0 (see LICENSE)\",\"urls\":[\"bzz-raw://784319dad0d8082451ddad1f30d2e5881da1163ab6931edfa07b2d7a882b1a6e\",\"dweb:/ipfs/QmaaafKfHmchKXzFt4Jvd8o7eKEKStYdAxvk7c6MvsTzFQ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address[]","name":"validators","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":"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":[],"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":[{"internalType":"address","name":"appContract","type":"address"},{"internalType":"uint256","name":"lastProcessedBlockNumber","type":"uint256"},{"internalType":"bytes32","name":"outputsMerkleRoot","type":"bytes32"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"isValidatorInFavorOf","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"appContract","type":"address"},{"internalType":"uint256","name":"lastProcessedBlockNumber","type":"uint256"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"isValidatorInFavorOfAnyClaimInEpoch","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"numOfValidators","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"appContract","type":"address"},{"internalType":"uint256","name":"lastProcessedBlockNumber","type":"uint256"},{"internalType":"bytes32","name":"outputsMerkleRoot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"numOfValidatorsInFavorOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"appContract","type":"address"},{"internalType":"uint256","name":"lastProcessedBlockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"numOfValidatorsInFavorOfAnyClaimInEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"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":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"validatorById","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"validator","type":"address"}],"stateMutability":"view","type":"function","name":"validatorId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Duplicates in the `validators` array are ignored.Reverts if the epoch length is zero.","params":{"epochLength":"The epoch length","validators":"The array of validator addresses"}},"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"}},"isValidatorInFavorOf(address,uint256,bytes32,uint256)":{"details":"Assumes the provided ID is valid.","params":{"appContract":"The application contract address","id":"The ID of the validator","lastProcessedBlockNumber":"The number of the last processed block","outputsMerkleRoot":"The outputs Merkle root"},"returns":{"_0":"Whether validator is in favor of claim"}},"isValidatorInFavorOfAnyClaimInEpoch(address,uint256,uint256)":{"details":"Assumes the provided ID is valid.","params":{"appContract":"The application contract address","id":"The ID of the validator","lastProcessedBlockNumber":"The number of the last processed block"},"returns":{"_0":"Whether validator is in favor of any claim in the epoch"}},"numOfValidatorsInFavorOf(address,uint256,bytes32)":{"params":{"appContract":"The application contract address","lastProcessedBlockNumber":"The number of the last processed block","outputsMerkleRoot":"The outputs Merkle root"},"returns":{"_0":"Number of validators in favor of claim"}},"numOfValidatorsInFavorOfAnyClaimInEpoch(address,uint256)":{"params":{"appContract":"The application contract address","lastProcessedBlockNumber":"The number of the last processed block"},"returns":{"_0":"Number of validators in favor of any claim in the epoch"}},"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}."},"validatorById(uint256)":{"details":"Validator IDs range from 1 to `N`, the total number of validators.Invalid IDs map to address zero.","params":{"id":"The validator ID"}},"validatorId(address)":{"details":"Validators have IDs greater than zero.Non-validators are assigned to ID zero.","params":{"validator":"The validator address"}}},"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."},"isValidatorInFavorOf(address,uint256,bytes32,uint256)":{"notice":"Check whether a validator is in favor of a claim."},"isValidatorInFavorOfAnyClaimInEpoch(address,uint256,uint256)":{"notice":"Check whether a validator is in favor of any claim in a given epoch."},"numOfValidators()":{"notice":"Get the number of validators."},"numOfValidatorsInFavorOf(address,uint256,bytes32)":{"notice":"Get the number of validators in favor of a claim."},"numOfValidatorsInFavorOfAnyClaimInEpoch(address,uint256)":{"notice":"Get the number of validators in favor of any claim in a given epoch."},"submitClaim(address,uint256,bytes32)":{"notice":"Submit a claim to the consensus."},"validatorById(uint256)":{"notice":"Get the address of a validator by its ID."},"validatorId(address)":{"notice":"Get the ID of a validator."}},"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/quorum/Quorum.sol":"Quorum"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"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/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/quorum/IQuorum.sol":{"keccak256":"0x32a8ba536cdd6e727f7f0046e4daf77a937fa2c5f132c5584086e3a1f042bee1","urls":["bzz-raw://db9343aa57c1816640f8b05fe6d923ca5ef08ef28cbfdff4c133a74a6e3a0278","dweb:/ipfs/QmYPA4CcB7fiEQFRGtoRqPnCdTwXGGCHCapX15NedEqwwP"],"license":"Apache-2.0 (see LICENSE)"},"src/consensus/quorum/Quorum.sol":{"keccak256":"0x8bf69542f9e335720e162b972cac272496d3bc7a39d0096fffd7715d588004f7","urls":["bzz-raw://784319dad0d8082451ddad1f30d2e5881da1163ab6931edfa07b2d7a882b1a6e","dweb:/ipfs/QmaaafKfHmchKXzFt4Jvd8o7eKEKStYdAxvk7c6MvsTzFQ"],"license":"Apache-2.0 (see LICENSE)"}},"version":1},"id":35}