{"abi":[{"type":"function","name":"acceptGroupAdmin","inputs":[{"name":"groupId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addMember","inputs":[{"name":"groupId","type":"uint256","internalType":"uint256"},{"name":"identityCommitment","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addMembers","inputs":[{"name":"groupId","type":"uint256","internalType":"uint256"},{"name":"identityCommitments","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createGroup","inputs":[{"name":"admin","type":"address","internalType":"address"},{"name":"merkleTreeDuration","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createGroup","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createGroup","inputs":[{"name":"admin","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"groupCounter","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"removeMember","inputs":[{"name":"groupId","type":"uint256","internalType":"uint256"},{"name":"identityCommitment","type":"uint256","internalType":"uint256"},{"name":"merkleProofSiblings","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateGroupAdmin","inputs":[{"name":"groupId","type":"uint256","internalType":"uint256"},{"name":"newAdmin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateGroupMerkleTreeDuration","inputs":[{"name":"groupId","type":"uint256","internalType":"uint256"},{"name":"newMerkleTreeDuration","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateMember","inputs":[{"name":"groupId","type":"uint256","internalType":"uint256"},{"name":"oldIdentityCommitment","type":"uint256","internalType":"uint256"},{"name":"newIdentityCommitment","type":"uint256","internalType":"uint256"},{"name":"merkleProofSiblings","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validateProof","inputs":[{"name":"groupId","type":"uint256","internalType":"uint256"},{"name":"proof","type":"tuple","internalType":"struct ISemaphore.SemaphoreProof","components":[{"name":"merkleTreeDepth","type":"uint256","internalType":"uint256"},{"name":"merkleTreeRoot","type":"uint256","internalType":"uint256"},{"name":"nullifier","type":"uint256","internalType":"uint256"},{"name":"message","type":"uint256","internalType":"uint256"},{"name":"scope","type":"uint256","internalType":"uint256"},{"name":"points","type":"uint256[8]","internalType":"uint256[8]"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifyProof","inputs":[{"name":"groupId","type":"uint256","internalType":"uint256"},{"name":"proof","type":"tuple","internalType":"struct ISemaphore.SemaphoreProof","components":[{"name":"merkleTreeDepth","type":"uint256","internalType":"uint256"},{"name":"merkleTreeRoot","type":"uint256","internalType":"uint256"},{"name":"nullifier","type":"uint256","internalType":"uint256"},{"name":"message","type":"uint256","internalType":"uint256"},{"name":"scope","type":"uint256","internalType":"uint256"},{"name":"points","type":"uint256[8]","internalType":"uint256[8]"}]}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"GroupMerkleTreeDurationUpdated","inputs":[{"name":"groupId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"oldMerkleTreeDuration","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newMerkleTreeDuration","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ProofValidated","inputs":[{"name":"groupId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"merkleTreeDepth","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"merkleTreeRoot","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"nullifier","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"message","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"scope","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"points","type":"uint256[8]","indexed":false,"internalType":"uint256[8]"}],"anonymous":false},{"type":"error","name":"Semaphore__GroupHasNoMembers","inputs":[]},{"type":"error","name":"Semaphore__InvalidProof","inputs":[]},{"type":"error","name":"Semaphore__MerkleTreeDepthIsNotSupported","inputs":[]},{"type":"error","name":"Semaphore__MerkleTreeRootIsExpired","inputs":[]},{"type":"error","name":"Semaphore__MerkleTreeRootIsNotPartOfTheGroup","inputs":[]},{"type":"error","name":"Semaphore__YouAreUsingTheSameNullifierTwice","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"acceptGroupAdmin(uint256)":"da3cda52","addMember(uint256,uint256)":"1783efc3","addMembers(uint256,uint256[])":"04245371","createGroup()":"575185ed","createGroup(address)":"5c3f3b60","createGroup(address,uint256)":"2c880363","groupCounter()":"d24924fe","removeMember(uint256,uint256,uint256[])":"6cdd32fe","updateGroupAdmin(uint256,address)":"568ee826","updateGroupMerkleTreeDuration(uint256,uint256)":"fcf0b6ec","updateMember(uint256,uint256,uint256,uint256[])":"4178c4d5","validateProof(uint256,(uint256,uint256,uint256,uint256,uint256,uint256[8]))":"d0d898dd","verifyProof(uint256,(uint256,uint256,uint256,uint256,uint256,uint256[8]))":"456f4188"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Semaphore__GroupHasNoMembers\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Semaphore__InvalidProof\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Semaphore__MerkleTreeDepthIsNotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Semaphore__MerkleTreeRootIsExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Semaphore__MerkleTreeRootIsNotPartOfTheGroup\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Semaphore__YouAreUsingTheSameNullifierTwice\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldMerkleTreeDuration\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMerkleTreeDuration\",\"type\":\"uint256\"}],\"name\":\"GroupMerkleTreeDurationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"merkleTreeDepth\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"merkleTreeRoot\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nullifier\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"message\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"scope\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[8]\",\"name\":\"points\",\"type\":\"uint256[8]\"}],\"name\":\"ProofValidated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"}],\"name\":\"acceptGroupAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"identityCommitment\",\"type\":\"uint256\"}],\"name\":\"addMember\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"identityCommitments\",\"type\":\"uint256[]\"}],\"name\":\"addMembers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"merkleTreeDuration\",\"type\":\"uint256\"}],\"name\":\"createGroup\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"createGroup\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"createGroup\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"groupCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"identityCommitment\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"merkleProofSiblings\",\"type\":\"uint256[]\"}],\"name\":\"removeMember\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"updateGroupAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newMerkleTreeDuration\",\"type\":\"uint256\"}],\"name\":\"updateGroupMerkleTreeDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"oldIdentityCommitment\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newIdentityCommitment\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"merkleProofSiblings\",\"type\":\"uint256[]\"}],\"name\":\"updateMember\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"merkleTreeDepth\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"merkleTreeRoot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nullifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"message\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scope\",\"type\":\"uint256\"},{\"internalType\":\"uint256[8]\",\"name\":\"points\",\"type\":\"uint256[8]\"}],\"internalType\":\"struct ISemaphore.SemaphoreProof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"name\":\"validateProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"merkleTreeDepth\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"merkleTreeRoot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nullifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"message\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scope\",\"type\":\"uint256\"},{\"internalType\":\"uint256[8]\",\"name\":\"points\",\"type\":\"uint256[8]\"}],\"internalType\":\"struct ISemaphore.SemaphoreProof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"name\":\"verifyProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"GroupMerkleTreeDurationUpdated(uint256,uint256,uint256)\":{\"details\":\"Event emitted when the Merkle tree duration of a group is updated.\",\"params\":{\"groupId\":\": Id of the group.\",\"newMerkleTreeDuration\":\": New Merkle tree duration of the group.\",\"oldMerkleTreeDuration\":\": Old Merkle tree duration of the group.\"}},\"ProofValidated(uint256,uint256,uint256,uint256,uint256,uint256,uint256[8])\":{\"details\":\"Event emitted when a Semaphore proof is validated.\",\"params\":{\"groupId\":\": Id of the group.\",\"merkleTreeDepth\":\": Depth of the Merkle tree.\",\"merkleTreeRoot\":\": Root of the Merkle tree.\",\"message\":\": Semaphore message.\",\"nullifier\":\": Nullifier.\",\"points\":\": Zero-knowledge points.\",\"scope\":\": Scope.\"}}},\"kind\":\"dev\",\"methods\":{\"acceptGroupAdmin(uint256)\":{\"details\":\"See {SemaphoreGroups-_acceptGroupAdmin}.\"},\"addMember(uint256,uint256)\":{\"details\":\"See {SemaphoreGroups-_addMember}.\"},\"addMembers(uint256,uint256[])\":{\"details\":\"See {SemaphoreGroups-_addMembers}.\"},\"createGroup()\":{\"details\":\"See {SemaphoreGroups-_createGroup}.\"},\"createGroup(address)\":{\"details\":\"See {SemaphoreGroups-_createGroup}.\"},\"createGroup(address,uint256)\":{\"details\":\"It creates a group with a custom Merkle tree duration.\",\"params\":{\"admin\":\": Admin of the group. It can be an Ethereum account or a smart contract.\",\"merkleTreeDuration\":\": Merkle tree duration.\"},\"returns\":{\"_0\":\"Id of the group.\"}},\"groupCounter()\":{\"details\":\"Returns the current value of the group counter.\",\"returns\":{\"_0\":\"The current group counter value.\"}},\"removeMember(uint256,uint256,uint256[])\":{\"details\":\"See {SemaphoreGroups-_removeMember}.\"},\"updateGroupAdmin(uint256,address)\":{\"details\":\"See {SemaphoreGroups-_updateGroupAdmin}.\"},\"updateGroupMerkleTreeDuration(uint256,uint256)\":{\"details\":\"Updates the group Merkle tree duration.\",\"params\":{\"groupId\":\": Id of the group.\",\"newMerkleTreeDuration\":\": New Merkle tree duration.\"}},\"updateMember(uint256,uint256,uint256,uint256[])\":{\"details\":\"See {SemaphoreGroups-_updateMember}.\"},\"validateProof(uint256,(uint256,uint256,uint256,uint256,uint256,uint256[8]))\":{\"details\":\"Saves the nullifier hash to prevent double signaling and emits an event if the zero-knowledge proof is valid.\",\"params\":{\"groupId\":\": Id of the group.\",\"proof\":\": Semaphore zero-knowledge proof.\"}},\"verifyProof(uint256,(uint256,uint256,uint256,uint256,uint256,uint256[8]))\":{\"details\":\"Verifies a zero-knowledge proof by returning true or false.\",\"params\":{\"groupId\":\": Id of the group.\",\"proof\":\": Semaphore zero-knowledge proof.\"}}},\"title\":\"Semaphore contract interface.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@semaphore-protocol/contracts/interfaces/ISemaphore.sol\":\"ISemaphore\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":@semaphore-protocol/=node_modules/@semaphore-protocol/\",\":@solady/=node_modules/solady/\",\":@zk-kit/=node_modules/@zk-kit/\",\":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\":forge-std/=node_modules/forge-std/\",\":hardhat/=node_modules/hardhat/\",\":poseidon-solidity/=node_modules/poseidon-solidity/\",\":solady/=node_modules/solady/\"]},\"sources\":{\"node_modules/@semaphore-protocol/contracts/interfaces/ISemaphore.sol\":{\"keccak256\":\"0xb9cc56ef5155c65147e6a2e1842015993c9f60f0b2b786c818917431dd6fcfe1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec1f5cb5a286b9b1c6b6deb424041cfd818e10dc324d48f3b89214fff1071ef2\",\"dweb:/ipfs/QmcvReZP94tcqda25yG4unNXJ6uaAw7FaEVsQ2DaxhdpdX\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"Semaphore__GroupHasNoMembers"},{"inputs":[],"type":"error","name":"Semaphore__InvalidProof"},{"inputs":[],"type":"error","name":"Semaphore__MerkleTreeDepthIsNotSupported"},{"inputs":[],"type":"error","name":"Semaphore__MerkleTreeRootIsExpired"},{"inputs":[],"type":"error","name":"Semaphore__MerkleTreeRootIsNotPartOfTheGroup"},{"inputs":[],"type":"error","name":"Semaphore__YouAreUsingTheSameNullifierTwice"},{"inputs":[{"internalType":"uint256","name":"groupId","type":"uint256","indexed":true},{"internalType":"uint256","name":"oldMerkleTreeDuration","type":"uint256","indexed":false},{"internalType":"uint256","name":"newMerkleTreeDuration","type":"uint256","indexed":false}],"type":"event","name":"GroupMerkleTreeDurationUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"groupId","type":"uint256","indexed":true},{"internalType":"uint256","name":"merkleTreeDepth","type":"uint256","indexed":false},{"internalType":"uint256","name":"merkleTreeRoot","type":"uint256","indexed":true},{"internalType":"uint256","name":"nullifier","type":"uint256","indexed":false},{"internalType":"uint256","name":"message","type":"uint256","indexed":false},{"internalType":"uint256","name":"scope","type":"uint256","indexed":true},{"internalType":"uint256[8]","name":"points","type":"uint256[8]","indexed":false}],"type":"event","name":"ProofValidated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"groupId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"acceptGroupAdmin"},{"inputs":[{"internalType":"uint256","name":"groupId","type":"uint256"},{"internalType":"uint256","name":"identityCommitment","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"addMember"},{"inputs":[{"internalType":"uint256","name":"groupId","type":"uint256"},{"internalType":"uint256[]","name":"identityCommitments","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"addMembers"},{"inputs":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"uint256","name":"merkleTreeDuration","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createGroup","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"createGroup","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createGroup","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"groupCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"groupId","type":"uint256"},{"internalType":"uint256","name":"identityCommitment","type":"uint256"},{"internalType":"uint256[]","name":"merkleProofSiblings","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"removeMember"},{"inputs":[{"internalType":"uint256","name":"groupId","type":"uint256"},{"internalType":"address","name":"newAdmin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"updateGroupAdmin"},{"inputs":[{"internalType":"uint256","name":"groupId","type":"uint256"},{"internalType":"uint256","name":"newMerkleTreeDuration","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"updateGroupMerkleTreeDuration"},{"inputs":[{"internalType":"uint256","name":"groupId","type":"uint256"},{"internalType":"uint256","name":"oldIdentityCommitment","type":"uint256"},{"internalType":"uint256","name":"newIdentityCommitment","type":"uint256"},{"internalType":"uint256[]","name":"merkleProofSiblings","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"updateMember"},{"inputs":[{"internalType":"uint256","name":"groupId","type":"uint256"},{"internalType":"struct ISemaphore.SemaphoreProof","name":"proof","type":"tuple","components":[{"internalType":"uint256","name":"merkleTreeDepth","type":"uint256"},{"internalType":"uint256","name":"merkleTreeRoot","type":"uint256"},{"internalType":"uint256","name":"nullifier","type":"uint256"},{"internalType":"uint256","name":"message","type":"uint256"},{"internalType":"uint256","name":"scope","type":"uint256"},{"internalType":"uint256[8]","name":"points","type":"uint256[8]"}]}],"stateMutability":"nonpayable","type":"function","name":"validateProof"},{"inputs":[{"internalType":"uint256","name":"groupId","type":"uint256"},{"internalType":"struct ISemaphore.SemaphoreProof","name":"proof","type":"tuple","components":[{"internalType":"uint256","name":"merkleTreeDepth","type":"uint256"},{"internalType":"uint256","name":"merkleTreeRoot","type":"uint256"},{"internalType":"uint256","name":"nullifier","type":"uint256"},{"internalType":"uint256","name":"message","type":"uint256"},{"internalType":"uint256","name":"scope","type":"uint256"},{"internalType":"uint256[8]","name":"points","type":"uint256[8]"}]}],"stateMutability":"view","type":"function","name":"verifyProof","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"acceptGroupAdmin(uint256)":{"details":"See {SemaphoreGroups-_acceptGroupAdmin}."},"addMember(uint256,uint256)":{"details":"See {SemaphoreGroups-_addMember}."},"addMembers(uint256,uint256[])":{"details":"See {SemaphoreGroups-_addMembers}."},"createGroup()":{"details":"See {SemaphoreGroups-_createGroup}."},"createGroup(address)":{"details":"See {SemaphoreGroups-_createGroup}."},"createGroup(address,uint256)":{"details":"It creates a group with a custom Merkle tree duration.","params":{"admin":": Admin of the group. It can be an Ethereum account or a smart contract.","merkleTreeDuration":": Merkle tree duration."},"returns":{"_0":"Id of the group."}},"groupCounter()":{"details":"Returns the current value of the group counter.","returns":{"_0":"The current group counter value."}},"removeMember(uint256,uint256,uint256[])":{"details":"See {SemaphoreGroups-_removeMember}."},"updateGroupAdmin(uint256,address)":{"details":"See {SemaphoreGroups-_updateGroupAdmin}."},"updateGroupMerkleTreeDuration(uint256,uint256)":{"details":"Updates the group Merkle tree duration.","params":{"groupId":": Id of the group.","newMerkleTreeDuration":": New Merkle tree duration."}},"updateMember(uint256,uint256,uint256,uint256[])":{"details":"See {SemaphoreGroups-_updateMember}."},"validateProof(uint256,(uint256,uint256,uint256,uint256,uint256,uint256[8]))":{"details":"Saves the nullifier hash to prevent double signaling and emits an event if the zero-knowledge proof is valid.","params":{"groupId":": Id of the group.","proof":": Semaphore zero-knowledge proof."}},"verifyProof(uint256,(uint256,uint256,uint256,uint256,uint256,uint256[8]))":{"details":"Verifies a zero-knowledge proof by returning true or false.","params":{"groupId":": Id of the group.","proof":": Semaphore zero-knowledge proof."}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","@semaphore-protocol/=node_modules/@semaphore-protocol/","@solady/=node_modules/solady/","@zk-kit/=node_modules/@zk-kit/","eth-gas-reporter/=node_modules/eth-gas-reporter/","forge-std/=node_modules/forge-std/","hardhat/=node_modules/hardhat/","poseidon-solidity/=node_modules/poseidon-solidity/","solady/=node_modules/solady/"],"optimizer":{"enabled":true,"runs":200000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@semaphore-protocol/contracts/interfaces/ISemaphore.sol":"ISemaphore"},"evmVersion":"cancun","libraries":{}},"sources":{"node_modules/@semaphore-protocol/contracts/interfaces/ISemaphore.sol":{"keccak256":"0xb9cc56ef5155c65147e6a2e1842015993c9f60f0b2b786c818917431dd6fcfe1","urls":["bzz-raw://ec1f5cb5a286b9b1c6b6deb424041cfd818e10dc324d48f3b89214fff1071ef2","dweb:/ipfs/QmcvReZP94tcqda25yG4unNXJ6uaAw7FaEVsQ2DaxhdpdX"],"license":"MIT"}},"version":1},"id":108}