{
  "_format": "hh-sol-artifact-1",
  "contractName": "ISemaphore",
  "sourceName": "@semaphore-protocol/contracts/interfaces/ISemaphore.sol",
  "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"
    }
  ],
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
