{"abi":[{"type":"function","name":"calculateQuorumAddress","inputs":[{"name":"validators","type":"address[]","internalType":"address[]"},{"name":"epochLength","type":"uint256","internalType":"uint256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"newQuorum","inputs":[{"name":"validators","type":"address[]","internalType":"address[]"},{"name":"epochLength","type":"uint256","internalType":"uint256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"contract IQuorum"}],"stateMutability":"nonpayable"},{"type":"function","name":"newQuorum","inputs":[{"name":"validators","type":"address[]","internalType":"address[]"},{"name":"epochLength","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"contract IQuorum"}],"stateMutability":"nonpayable"},{"type":"event","name":"QuorumCreated","inputs":[{"name":"quorum","type":"address","indexed":false,"internalType":"contract IQuorum"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"calculateQuorumAddress(address[],uint256,bytes32)":"ca8f271c","newQuorum(address[],uint256)":"d4af3bc8","newQuorum(address[],uint256,bytes32)":"2f74f862"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IQuorum\",\"name\":\"quorum\",\"type\":\"address\"}],\"name\":\"QuorumCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"validators\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"epochLength\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"calculateQuorumAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"validators\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"epochLength\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"newQuorum\",\"outputs\":[{\"internalType\":\"contract IQuorum\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"validators\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"epochLength\",\"type\":\"uint256\"}],\"name\":\"newQuorum\",\"outputs\":[{\"internalType\":\"contract IQuorum\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"QuorumCreated(address)\":{\"details\":\"MUST be triggered on a successful call to `newQuorum`.\",\"params\":{\"quorum\":\"The quorum\"}}},\"kind\":\"dev\",\"methods\":{\"calculateQuorumAddress(address[],uint256,bytes32)\":{\"details\":\"Beware that only the `newQuorum` function with the `salt` parameter      is able to deterministically deploy a quorum.\",\"params\":{\"epochLength\":\"The epoch length\",\"salt\":\"The salt used to deterministically generate the quorum address\",\"validators\":\"the list of validators\"},\"returns\":{\"_0\":\"The deterministic quorum address\"}},\"newQuorum(address[],uint256)\":{\"details\":\"On success, MUST emit a `QuorumCreated` event.Duplicates in the `validators` array are ignored.Reverts if the epoch length is zero.\",\"params\":{\"epochLength\":\"The epoch length\",\"validators\":\"the list of validators\"},\"returns\":{\"_0\":\"The quorum\"}},\"newQuorum(address[],uint256,bytes32)\":{\"details\":\"On success, MUST emit a `QuorumCreated` event.Duplicates in the `validators` array are ignored.Reverts if the epoch length is zero.\",\"params\":{\"epochLength\":\"The epoch length\",\"salt\":\"The salt used to deterministically generate the quorum address\",\"validators\":\"the list of validators\"},\"returns\":{\"_0\":\"The quorum\"}}},\"title\":\"Quorum Factory interface\",\"version\":1},\"userdoc\":{\"events\":{\"QuorumCreated(address)\":{\"notice\":\"A new quorum was deployed.\"}},\"kind\":\"user\",\"methods\":{\"calculateQuorumAddress(address[],uint256,bytes32)\":{\"notice\":\"Calculate the address of a quorum to be deployed deterministically.\"},\"newQuorum(address[],uint256)\":{\"notice\":\"Deploy a new quorum.\"},\"newQuorum(address[],uint256,bytes32)\":{\"notice\":\"Deploy a new quorum deterministically.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/consensus/quorum/IQuorumFactory.sol\":\"IQuorumFactory\"},\"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/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/IQuorumFactory.sol\":{\"keccak256\":\"0x41c9dd5d796eb946d933251f16807602177cf971b4fa0ee7ee3d4aa5c0335653\",\"license\":\"Apache-2.0 (see LICENSE)\",\"urls\":[\"bzz-raw://c7749491f80c6d91f2729284d5e4a1bad6a3c946668b6eed1ebf5286a31ef549\",\"dweb:/ipfs/QmQqTv2DYsTtDxbZS6YJ3JmbFm5mGTvXCdxUAsAEYM2wPT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IQuorum","name":"quorum","type":"address","indexed":false}],"type":"event","name":"QuorumCreated","anonymous":false},{"inputs":[{"internalType":"address[]","name":"validators","type":"address[]"},{"internalType":"uint256","name":"epochLength","type":"uint256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"stateMutability":"view","type":"function","name":"calculateQuorumAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address[]","name":"validators","type":"address[]"},{"internalType":"uint256","name":"epochLength","type":"uint256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"newQuorum","outputs":[{"internalType":"contract IQuorum","name":"","type":"address"}]},{"inputs":[{"internalType":"address[]","name":"validators","type":"address[]"},{"internalType":"uint256","name":"epochLength","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"newQuorum","outputs":[{"internalType":"contract IQuorum","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"calculateQuorumAddress(address[],uint256,bytes32)":{"details":"Beware that only the `newQuorum` function with the `salt` parameter      is able to deterministically deploy a quorum.","params":{"epochLength":"The epoch length","salt":"The salt used to deterministically generate the quorum address","validators":"the list of validators"},"returns":{"_0":"The deterministic quorum address"}},"newQuorum(address[],uint256)":{"details":"On success, MUST emit a `QuorumCreated` event.Duplicates in the `validators` array are ignored.Reverts if the epoch length is zero.","params":{"epochLength":"The epoch length","validators":"the list of validators"},"returns":{"_0":"The quorum"}},"newQuorum(address[],uint256,bytes32)":{"details":"On success, MUST emit a `QuorumCreated` event.Duplicates in the `validators` array are ignored.Reverts if the epoch length is zero.","params":{"epochLength":"The epoch length","salt":"The salt used to deterministically generate the quorum address","validators":"the list of validators"},"returns":{"_0":"The quorum"}}},"version":1},"userdoc":{"kind":"user","methods":{"calculateQuorumAddress(address[],uint256,bytes32)":{"notice":"Calculate the address of a quorum to be deployed deterministically."},"newQuorum(address[],uint256)":{"notice":"Deploy a new quorum."},"newQuorum(address[],uint256,bytes32)":{"notice":"Deploy a new quorum deterministically."}},"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/IQuorumFactory.sol":"IQuorumFactory"},"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/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/IQuorumFactory.sol":{"keccak256":"0x41c9dd5d796eb946d933251f16807602177cf971b4fa0ee7ee3d4aa5c0335653","urls":["bzz-raw://c7749491f80c6d91f2729284d5e4a1bad6a3c946668b6eed1ebf5286a31ef549","dweb:/ipfs/QmQqTv2DYsTtDxbZS6YJ3JmbFm5mGTvXCdxUAsAEYM2wPT"],"license":"Apache-2.0 (see LICENSE)"}},"version":1},"id":34}