[
  {
    "type": "constructor",
    "inputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "activeMemberSince",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint64",
        "internalType": "uint64"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "activeMemberSince",
    "inputs": [
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "permKey",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "ctx",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "outputs": [
      {
        "name": "earliest",
        "type": "uint64",
        "internalType": "uint64"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "addRoleToGroup",
    "inputs": [
      {
        "name": "roleId",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "groupId",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "balanceOf",
    "inputs": [
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "subjectId",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "balanceOfBatch",
    "inputs": [
      {
        "name": "users",
        "type": "address[]",
        "internalType": "address[]"
      },
      {
        "name": "subjectIds",
        "type": "uint256[]",
        "internalType": "uint256[]"
      }
    ],
    "outputs": [
      {
        "name": "out",
        "type": "uint256[]",
        "internalType": "uint256[]"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "canClaim",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "reason",
        "type": "uint8",
        "internalType": "enum AccessV2Types.ActionReason"
      },
      {
        "name": "activatesAt",
        "type": "uint64",
        "internalType": "uint64"
      },
      {
        "name": "lapsedCandidate",
        "type": "address",
        "internalType": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "canGrant",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "reason",
        "type": "uint8",
        "internalType": "enum AccessV2Types.ActionReason"
      },
      {
        "name": "lapsedCandidate",
        "type": "address",
        "internalType": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "canRemove",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "ban",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "outputs": [
      {
        "name": "reason",
        "type": "uint8",
        "internalType": "enum AccessV2Types.ActionReason"
      },
      {
        "name": "sourceSet",
        "type": "uint8",
        "internalType": "uint8"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "cancel",
    "inputs": [
      {
        "name": "pendingId",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "checkHatWearerStatus",
    "inputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "claim",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "clearPerm",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "permKey",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "ctx",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "clearRule",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "clearUserVouches",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "configureVouchAttestor",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "quorum",
        "type": "uint32",
        "internalType": "uint32"
      },
      {
        "name": "voucherSubject",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "createGroup",
    "inputs": [
      {
        "name": "name",
        "type": "string",
        "internalType": "string"
      },
      {
        "name": "metadataCID",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "imageURI",
        "type": "string",
        "internalType": "string"
      },
      {
        "name": "memberRoleIds",
        "type": "uint256[]",
        "internalType": "uint256[]"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "createRole",
    "inputs": [
      {
        "name": "name",
        "type": "string",
        "internalType": "string"
      },
      {
        "name": "metadataCID",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "imageURI",
        "type": "string",
        "internalType": "string"
      },
      {
        "name": "maxMembers",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "delegatedGrant",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "delegatedOffer",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "delegatedRemove",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "ban",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "delegatedUnremove",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "eligible",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "emitUnportedBurns",
    "inputs": [
      {
        "name": "subjects",
        "type": "uint256[]",
        "internalType": "uint256[]"
      },
      {
        "name": "users",
        "type": "address[]",
        "internalType": "address[]"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "executor",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "finalize",
    "inputs": [
      {
        "name": "pendingId",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "getManagerConfig",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "tuple",
        "internalType": "struct IMembershipAuthority.ManagerConfig",
        "components": [
          {
            "name": "managerSubject",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "caps",
            "type": "uint8",
            "internalType": "uint8"
          },
          {
            "name": "delaySecs",
            "type": "uint32",
            "internalType": "uint32"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getPending",
    "inputs": [
      {
        "name": "pendingId",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "tuple",
        "internalType": "struct IMembershipAuthority.PendingAction",
        "components": [
          {
            "name": "action",
            "type": "uint8",
            "internalType": "enum AccessV2Types.PendingKind"
          },
          {
            "name": "subject",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "user",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "actor",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "activatesAt",
            "type": "uint64",
            "internalType": "uint64"
          },
          {
            "name": "ban",
            "type": "bool",
            "internalType": "bool"
          },
          {
            "name": "exists",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getPerm",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "permKey",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "ctx",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "outputs": [
      {
        "name": "word",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getRule",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "tuple",
        "internalType": "struct IMembershipAuthority.Rule",
        "components": [
          {
            "name": "kind",
            "type": "uint8",
            "internalType": "enum AccessV2Types.RuleKind"
          },
          {
            "name": "author",
            "type": "uint8",
            "internalType": "enum AccessV2Types.RuleAuthor"
          },
          {
            "name": "managerSubject",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "delegable",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getRuleFlags",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "present",
        "type": "bool",
        "internalType": "bool"
      },
      {
        "name": "kind",
        "type": "uint8",
        "internalType": "enum AccessV2Types.RuleKind"
      },
      {
        "name": "author",
        "type": "uint8",
        "internalType": "enum AccessV2Types.RuleAuthor"
      },
      {
        "name": "delegable",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getStatus",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "accepted",
        "type": "bool",
        "internalType": "bool"
      },
      {
        "name": "eligible_",
        "type": "bool",
        "internalType": "bool"
      },
      {
        "name": "acceptedAt",
        "type": "uint64",
        "internalType": "uint64"
      },
      {
        "name": "ruleKind",
        "type": "uint8",
        "internalType": "enum AccessV2Types.RuleKind"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getSubject",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "tuple",
        "internalType": "struct IMembershipAuthority.SubjectInfo",
        "components": [
          {
            "name": "kind",
            "type": "uint8",
            "internalType": "enum AccessV2Types.SubjectKind"
          },
          {
            "name": "name",
            "type": "string",
            "internalType": "string"
          },
          {
            "name": "metadataCID",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "imageURI",
            "type": "string",
            "internalType": "string"
          },
          {
            "name": "maxMembers",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "exists",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getWearerStatus",
    "inputs": [
      {
        "name": "wearer",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "subjectId",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "eligible_",
        "type": "bool",
        "internalType": "bool"
      },
      {
        "name": "standing",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "grant",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "delegable",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "groupMemberRoles",
    "inputs": [
      {
        "name": "groupId",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256[]",
        "internalType": "uint256[]"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "hasPerm",
    "inputs": [
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "permKey",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "ctx",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "initialize",
    "inputs": [
      {
        "name": "cfg",
        "type": "tuple",
        "internalType": "struct IMembershipAuthority.InitConfig",
        "components": [
          {
            "name": "executor",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "paymasterHub",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "orgId",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "seed",
            "type": "tuple",
            "internalType": "struct AccessV2Types.OrgAccessSeed",
            "components": [
              {
                "name": "subjectIds",
                "type": "uint256[]",
                "internalType": "uint256[]"
              },
              {
                "name": "subjectKinds",
                "type": "uint8[]",
                "internalType": "enum AccessV2Types.SubjectKind[]"
              },
              {
                "name": "subjectNames",
                "type": "string[]",
                "internalType": "string[]"
              },
              {
                "name": "subjectMaxMembers",
                "type": "uint32[]",
                "internalType": "uint32[]"
              },
              {
                "name": "subjectDefaults",
                "type": "bool[]",
                "internalType": "bool[]"
              },
              {
                "name": "groupMemberRoles",
                "type": "uint256[][]",
                "internalType": "uint256[][]"
              },
              {
                "name": "vouchSubjects",
                "type": "uint256[]",
                "internalType": "uint256[]"
              },
              {
                "name": "vouchQuorums",
                "type": "uint32[]",
                "internalType": "uint32[]"
              },
              {
                "name": "vouchVoucherSubjects",
                "type": "uint256[]",
                "internalType": "uint256[]"
              },
              {
                "name": "permSubjects",
                "type": "uint256[]",
                "internalType": "uint256[]"
              },
              {
                "name": "permKeys",
                "type": "bytes32[]",
                "internalType": "bytes32[]"
              },
              {
                "name": "permCtxs",
                "type": "bytes32[]",
                "internalType": "bytes32[]"
              },
              {
                "name": "permWords",
                "type": "uint256[]",
                "internalType": "uint256[]"
              }
            ]
          }
        ]
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "isEligible",
    "inputs": [
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "subjectId",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "isMember",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "isWearerOfHat",
    "inputs": [
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "subjectId",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "maxDailyVouches",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "memberCount",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "mintHat",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "offer",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "delegable",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "orgId",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "paused",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "reconcile",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "users",
        "type": "address[]",
        "internalType": "address[]"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "reconcile",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "remove",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "ban",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "removeRoleFromGroup",
    "inputs": [
      {
        "name": "roleId",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "groupId",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "renameSubject",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "name",
        "type": "string",
        "internalType": "string"
      },
      {
        "name": "metadataCID",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "imageURI",
        "type": "string",
        "internalType": "string"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "renounce",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "resetVouchEpoch",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "revokeVouch",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "seedEmailVerified",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "users",
        "type": "address[]",
        "internalType": "address[]"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "seedMemberships",
    "inputs": [
      {
        "name": "subjects",
        "type": "uint256[]",
        "internalType": "uint256[]"
      },
      {
        "name": "users",
        "type": "address[]",
        "internalType": "address[]"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "seedPerms",
    "inputs": [
      {
        "name": "subjects",
        "type": "uint256[]",
        "internalType": "uint256[]"
      },
      {
        "name": "permKeys",
        "type": "bytes32[]",
        "internalType": "bytes32[]"
      },
      {
        "name": "ctxs",
        "type": "bytes32[]",
        "internalType": "bytes32[]"
      },
      {
        "name": "words",
        "type": "uint256[]",
        "internalType": "uint256[]"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "seedRules",
    "inputs": [
      {
        "name": "subjects",
        "type": "uint256[]",
        "internalType": "uint256[]"
      },
      {
        "name": "users",
        "type": "address[]",
        "internalType": "address[]"
      },
      {
        "name": "kinds",
        "type": "uint8[]",
        "internalType": "enum AccessV2Types.RuleKind[]"
      },
      {
        "name": "delegable",
        "type": "bool[]",
        "internalType": "bool[]"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "seedSubjects",
    "inputs": [
      {
        "name": "subjectIds",
        "type": "uint256[]",
        "internalType": "uint256[]"
      },
      {
        "name": "kinds",
        "type": "uint8[]",
        "internalType": "enum AccessV2Types.SubjectKind[]"
      },
      {
        "name": "names",
        "type": "string[]",
        "internalType": "string[]"
      },
      {
        "name": "maxMembers",
        "type": "uint32[]",
        "internalType": "uint32[]"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "seedVouchers",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "vouchers",
        "type": "address[]",
        "internalType": "address[]"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setEmailVerified",
    "inputs": [
      {
        "name": "wearer",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "hatIds",
        "type": "uint256[]",
        "internalType": "uint256[]"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setManagerConfig",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "managerSubject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "caps",
        "type": "uint8",
        "internalType": "uint8"
      },
      {
        "name": "delaySecs",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setMaxDailyVouches",
    "inputs": [
      {
        "name": "maxVouches",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setMaxMembers",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "maxMembers",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setPaused",
    "inputs": [
      {
        "name": "p",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setPerm",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "permKey",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "ctx",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "word",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setRule",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "kind",
        "type": "uint8",
        "internalType": "enum AccessV2Types.RuleKind"
      },
      {
        "name": "delegable",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setSubjectDefault",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "allow",
        "type": "bool",
        "internalType": "bool"
      },
      {
        "name": "force",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "subjectCount",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "subjectsWithKey",
    "inputs": [
      {
        "name": "permKey",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "ctx",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256[]",
        "internalType": "uint256[]"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "unremove",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "userSubjects",
    "inputs": [
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256[]",
        "internalType": "uint256[]"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "viewHat",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "details",
        "type": "string",
        "internalType": "string"
      },
      {
        "name": "maxSupply",
        "type": "uint32",
        "internalType": "uint32"
      },
      {
        "name": "supply",
        "type": "uint32",
        "internalType": "uint32"
      },
      {
        "name": "eligibility",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "toggle",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "imageURI",
        "type": "string",
        "internalType": "string"
      },
      {
        "name": "lastHatId",
        "type": "uint16",
        "internalType": "uint16"
      },
      {
        "name": "mutable_",
        "type": "bool",
        "internalType": "bool"
      },
      {
        "name": "active",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "vouch",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "vouchConfig",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "quorum",
        "type": "uint32",
        "internalType": "uint32"
      },
      {
        "name": "voucherSubject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "epoch",
        "type": "uint64",
        "internalType": "uint64"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "vouchCount",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "withdrawOffer",
    "inputs": [
      {
        "name": "subject",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "event",
    "name": "ConfigLint",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "lintCode",
        "type": "uint8",
        "indexed": false,
        "internalType": "uint8"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "EmailVerifiedSet",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "verified",
        "type": "bool",
        "indexed": false,
        "internalType": "bool"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "GroupCompositionChanged",
    "inputs": [
      {
        "name": "groupId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "roleId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "added",
        "type": "bool",
        "indexed": false,
        "internalType": "bool"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Initialized",
    "inputs": [
      {
        "name": "version",
        "type": "uint64",
        "indexed": false,
        "internalType": "uint64"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "ManagerConfigSet",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "managerSubject",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "caps",
        "type": "uint8",
        "indexed": false,
        "internalType": "uint8"
      },
      {
        "name": "delaySecs",
        "type": "uint32",
        "indexed": false,
        "internalType": "uint32"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "MaxDailyVouchesSet",
    "inputs": [
      {
        "name": "maxDailyVouches",
        "type": "uint32",
        "indexed": false,
        "internalType": "uint32"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "MaxMembersSet",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "maxMembers",
        "type": "uint32",
        "indexed": false,
        "internalType": "uint32"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "MembershipAuthorityInitialized",
    "inputs": [
      {
        "name": "executor",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "orgId",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "paused",
        "type": "bool",
        "indexed": false,
        "internalType": "bool"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "MembershipReconciled",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "OfferWithdrawn",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "actor",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "PausedSet",
    "inputs": [
      {
        "name": "paused",
        "type": "bool",
        "indexed": false,
        "internalType": "bool"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "PendingActionCancelled",
    "inputs": [
      {
        "name": "pendingId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "by",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "PendingActionCreated",
    "inputs": [
      {
        "name": "pendingId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "action",
        "type": "uint8",
        "indexed": false,
        "internalType": "uint8"
      },
      {
        "name": "actor",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "activatesAt",
        "type": "uint64",
        "indexed": false,
        "internalType": "uint64"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "PendingActionFinalized",
    "inputs": [
      {
        "name": "pendingId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "PendingActionVoided",
    "inputs": [
      {
        "name": "pendingId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "PermCleared",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "permKey",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "ctx",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "PermSet",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "permKey",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "ctx",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "word",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "RoleClaimed",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "RoleGranted",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "actor",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "delegated",
        "type": "bool",
        "indexed": false,
        "internalType": "bool"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "RoleOffered",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "actor",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "delegated",
        "type": "bool",
        "indexed": false,
        "internalType": "bool"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "RoleRemoved",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "banned",
        "type": "bool",
        "indexed": false,
        "internalType": "bool"
      },
      {
        "name": "actor",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "delegated",
        "type": "bool",
        "indexed": false,
        "internalType": "bool"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "RoleRenounced",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "RuleCleared",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "RuleSet",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "kind",
        "type": "uint8",
        "indexed": false,
        "internalType": "uint8"
      },
      {
        "name": "author",
        "type": "uint8",
        "indexed": false,
        "internalType": "uint8"
      },
      {
        "name": "delegable",
        "type": "bool",
        "indexed": false,
        "internalType": "bool"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "SubjectCreated",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "kind",
        "type": "uint8",
        "indexed": false,
        "internalType": "uint8"
      },
      {
        "name": "name",
        "type": "string",
        "indexed": false,
        "internalType": "string"
      },
      {
        "name": "metadataCID",
        "type": "bytes32",
        "indexed": false,
        "internalType": "bytes32"
      },
      {
        "name": "maxMembers",
        "type": "uint32",
        "indexed": false,
        "internalType": "uint32"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "SubjectDefaultSet",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "allow",
        "type": "bool",
        "indexed": false,
        "internalType": "bool"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "SubjectRenamed",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "name",
        "type": "string",
        "indexed": false,
        "internalType": "string"
      },
      {
        "name": "metadataCID",
        "type": "bytes32",
        "indexed": false,
        "internalType": "bytes32"
      },
      {
        "name": "imageURI",
        "type": "string",
        "indexed": false,
        "internalType": "string"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "TransferSingle",
    "inputs": [
      {
        "name": "operator",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "from",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "to",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "id",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      },
      {
        "name": "value",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "UserVouchesCleared",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "VouchConfigured",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "quorum",
        "type": "uint32",
        "indexed": false,
        "internalType": "uint32"
      },
      {
        "name": "voucherSubject",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "VouchEpochReset",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "newEpoch",
        "type": "uint64",
        "indexed": false,
        "internalType": "uint64"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "VouchRevoked",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "voucher",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "VouchSeeded",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "count",
        "type": "uint32",
        "indexed": false,
        "internalType": "uint32"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Vouched",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "voucher",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "VoucherSeeded",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "user",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "voucher",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "error",
    "name": "AlreadyMember",
    "inputs": []
  },
  {
    "type": "error",
    "name": "AlreadyVouched",
    "inputs": []
  },
  {
    "type": "error",
    "name": "ArrayLengthMismatch",
    "inputs": []
  },
  {
    "type": "error",
    "name": "CannotVouchForSelf",
    "inputs": []
  },
  {
    "type": "error",
    "name": "ForceRequired",
    "inputs": []
  },
  {
    "type": "error",
    "name": "GrantBlockedByGovernanceBan",
    "inputs": []
  },
  {
    "type": "error",
    "name": "GroupSizeLimit",
    "inputs": []
  },
  {
    "type": "error",
    "name": "GroupsPerRoleLimit",
    "inputs": []
  },
  {
    "type": "error",
    "name": "HasNotVouched",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidInitialization",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidMaxDailyVouches",
    "inputs": []
  },
  {
    "type": "error",
    "name": "MaxMembersOnGroup",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NoPendingAction",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NotAGroup",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NotAuthorizedManager",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NotClaimable",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NotExecutor",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NotInOrg",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NotInitializing",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NotMember",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NotRegisteredModule",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NotYetActive",
    "inputs": [
      {
        "name": "activatesAt",
        "type": "uint64",
        "internalType": "uint64"
      }
    ]
  },
  {
    "type": "error",
    "name": "Paused",
    "inputs": []
  },
  {
    "type": "error",
    "name": "PendingActionExists",
    "inputs": []
  },
  {
    "type": "error",
    "name": "PermFanoutLimit",
    "inputs": []
  },
  {
    "type": "error",
    "name": "RemovalIneffective",
    "inputs": [
      {
        "name": "sourceSet",
        "type": "uint8",
        "internalType": "uint8"
      }
    ]
  },
  {
    "type": "error",
    "name": "RemoveBlockedByStickyGovernance",
    "inputs": []
  },
  {
    "type": "error",
    "name": "RoleLimit",
    "inputs": []
  },
  {
    "type": "error",
    "name": "RuleNotDelegable",
    "inputs": []
  },
  {
    "type": "error",
    "name": "SelfManagedCycle",
    "inputs": []
  },
  {
    "type": "error",
    "name": "SubjectExists",
    "inputs": []
  },
  {
    "type": "error",
    "name": "SubjectFull",
    "inputs": [
      {
        "name": "subjectId",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "lapsedCandidate",
        "type": "address",
        "internalType": "address"
      }
    ]
  },
  {
    "type": "error",
    "name": "UnknownSubject",
    "inputs": []
  },
  {
    "type": "error",
    "name": "VouchRateLimited",
    "inputs": []
  },
  {
    "type": "error",
    "name": "WiringIncompatible",
    "inputs": []
  },
  {
    "type": "error",
    "name": "ZeroAddress",
    "inputs": []
  }
]
