[
  {
    "type": "constructor",
    "inputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "VERSION",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "string",
        "internalType": "string"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "batchRegisterContracts",
    "inputs": [
      {
        "name": "orgId",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "registrations",
        "type": "tuple[]",
        "internalType": "struct OrgRegistry.ContractRegistration[]",
        "components": [
          {
            "name": "typeId",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "proxy",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "beacon",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "owner",
            "type": "address",
            "internalType": "address"
          }
        ]
      },
      {
        "name": "autoUpgrade",
        "type": "bool",
        "internalType": "bool"
      },
      {
        "name": "lastRegister",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "deployFullOrg",
    "inputs": [
      {
        "name": "params",
        "type": "tuple",
        "internalType": "struct OrgDeployer.DeploymentParams",
        "components": [
          {
            "name": "orgId",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "orgName",
            "type": "string",
            "internalType": "string"
          },
          {
            "name": "metadataHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "registryAddr",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "deployerAddress",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "deployerUsername",
            "type": "string",
            "internalType": "string"
          },
          {
            "name": "regDeadline",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "regNonce",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "regSignature",
            "type": "bytes",
            "internalType": "bytes"
          },
          {
            "name": "autoUpgrade",
            "type": "bool",
            "internalType": "bool"
          },
          {
            "name": "hybridThresholdPct",
            "type": "uint8",
            "internalType": "uint8"
          },
          {
            "name": "ddThresholdPct",
            "type": "uint8",
            "internalType": "uint8"
          },
          {
            "name": "hybridClasses",
            "type": "tuple[]",
            "internalType": "struct IHybridVotingInit.ClassConfig[]",
            "components": [
              {
                "name": "strategy",
                "type": "uint8",
                "internalType": "enum IHybridVotingInit.ClassStrategy"
              },
              {
                "name": "slicePct",
                "type": "uint8",
                "internalType": "uint8"
              },
              {
                "name": "quadratic",
                "type": "bool",
                "internalType": "bool"
              },
              {
                "name": "minBalance",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "asset",
                "type": "address",
                "internalType": "address"
              },
              {
                "name": "hatIds",
                "type": "uint256[]",
                "internalType": "uint256[]"
              }
            ]
          },
          {
            "name": "ddInitialTargets",
            "type": "address[]",
            "internalType": "address[]"
          },
          {
            "name": "roles",
            "type": "tuple[]",
            "internalType": "struct RoleConfigStructs.RoleConfig[]",
            "components": [
              {
                "name": "name",
                "type": "string",
                "internalType": "string"
              },
              {
                "name": "image",
                "type": "string",
                "internalType": "string"
              },
              {
                "name": "metadataCID",
                "type": "bytes32",
                "internalType": "bytes32"
              },
              {
                "name": "canVote",
                "type": "bool",
                "internalType": "bool"
              },
              {
                "name": "open",
                "type": "bool",
                "internalType": "bool"
              },
              {
                "name": "maxMembers",
                "type": "uint32",
                "internalType": "uint32"
              },
              {
                "name": "vouching",
                "type": "tuple",
                "internalType": "struct RoleConfigStructs.RoleVouchingConfig",
                "components": [
                  {
                    "name": "enabled",
                    "type": "bool",
                    "internalType": "bool"
                  },
                  {
                    "name": "quorum",
                    "type": "uint32",
                    "internalType": "uint32"
                  },
                  {
                    "name": "voucherRoleIndex",
                    "type": "uint256",
                    "internalType": "uint256"
                  }
                ]
              },
              {
                "name": "distribution",
                "type": "tuple",
                "internalType": "struct RoleConfigStructs.RoleDistributionConfig",
                "components": [
                  {
                    "name": "mintToDeployer",
                    "type": "bool",
                    "internalType": "bool"
                  },
                  {
                    "name": "additionalWearers",
                    "type": "address[]",
                    "internalType": "address[]"
                  }
                ]
              }
            ]
          },
          {
            "name": "groups",
            "type": "tuple[]",
            "internalType": "struct RoleConfigStructs.GroupConfig[]",
            "components": [
              {
                "name": "name",
                "type": "string",
                "internalType": "string"
              },
              {
                "name": "memberRoleIndices",
                "type": "uint256[]",
                "internalType": "uint256[]"
              }
            ]
          },
          {
            "name": "roleAssignments",
            "type": "tuple",
            "internalType": "struct OrgDeployer.RoleAssignments",
            "components": [
              {
                "name": "quickJoinRolesBitmap",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "tokenMemberRolesBitmap",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "tokenApproverRolesBitmap",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "taskCreatorRolesBitmap",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "educationCreatorRolesBitmap",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "educationMemberRolesBitmap",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "hybridProposalCreatorRolesBitmap",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "ddVotingRolesBitmap",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "ddCreatorRolesBitmap",
                "type": "uint256",
                "internalType": "uint256"
              }
            ]
          },
          {
            "name": "metadataAdminRoleIndex",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "passkeyEnabled",
            "type": "bool",
            "internalType": "bool"
          },
          {
            "name": "educationHubConfig",
            "type": "tuple",
            "internalType": "struct ModulesFactory.EducationHubConfig",
            "components": [
              {
                "name": "enabled",
                "type": "bool",
                "internalType": "bool"
              }
            ]
          },
          {
            "name": "bootstrap",
            "type": "tuple",
            "internalType": "struct OrgDeployer.BootstrapConfig",
            "components": [
              {
                "name": "projects",
                "type": "tuple[]",
                "internalType": "struct ITaskManagerBootstrap.BootstrapProjectConfig[]",
                "components": [
                  {
                    "name": "title",
                    "type": "bytes",
                    "internalType": "bytes"
                  },
                  {
                    "name": "metadataHash",
                    "type": "bytes32",
                    "internalType": "bytes32"
                  },
                  {
                    "name": "cap",
                    "type": "uint256",
                    "internalType": "uint256"
                  },
                  {
                    "name": "managers",
                    "type": "address[]",
                    "internalType": "address[]"
                  },
                  {
                    "name": "createHats",
                    "type": "uint256[]",
                    "internalType": "uint256[]"
                  },
                  {
                    "name": "claimHats",
                    "type": "uint256[]",
                    "internalType": "uint256[]"
                  },
                  {
                    "name": "reviewHats",
                    "type": "uint256[]",
                    "internalType": "uint256[]"
                  },
                  {
                    "name": "assignHats",
                    "type": "uint256[]",
                    "internalType": "uint256[]"
                  },
                  {
                    "name": "bountyTokens",
                    "type": "address[]",
                    "internalType": "address[]"
                  },
                  {
                    "name": "bountyCaps",
                    "type": "uint256[]",
                    "internalType": "uint256[]"
                  }
                ]
              },
              {
                "name": "tasks",
                "type": "tuple[]",
                "internalType": "struct ITaskManagerBootstrap.BootstrapTaskConfig[]",
                "components": [
                  {
                    "name": "projectIndex",
                    "type": "uint8",
                    "internalType": "uint8"
                  },
                  {
                    "name": "payout",
                    "type": "uint256",
                    "internalType": "uint256"
                  },
                  {
                    "name": "title",
                    "type": "bytes",
                    "internalType": "bytes"
                  },
                  {
                    "name": "metadataHash",
                    "type": "bytes32",
                    "internalType": "bytes32"
                  },
                  {
                    "name": "bountyToken",
                    "type": "address",
                    "internalType": "address"
                  },
                  {
                    "name": "bountyPayout",
                    "type": "uint256",
                    "internalType": "uint256"
                  },
                  {
                    "name": "requiresApplication",
                    "type": "bool",
                    "internalType": "bool"
                  }
                ]
              }
            ]
          },
          {
            "name": "paymasterConfig",
            "type": "tuple",
            "internalType": "struct OrgDeployer.PaymasterConfig",
            "components": [
              {
                "name": "operatorRoleIndex",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "autoWhitelistContracts",
                "type": "bool",
                "internalType": "bool"
              },
              {
                "name": "maxFeePerGas",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "maxPriorityFeePerGas",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "maxCallGas",
                "type": "uint32",
                "internalType": "uint32"
              },
              {
                "name": "maxVerificationGas",
                "type": "uint32",
                "internalType": "uint32"
              },
              {
                "name": "maxPreVerificationGas",
                "type": "uint32",
                "internalType": "uint32"
              },
              {
                "name": "defaultBudgetCapPerEpoch",
                "type": "uint128",
                "internalType": "uint128"
              },
              {
                "name": "defaultBudgetEpochLen",
                "type": "uint32",
                "internalType": "uint32"
              }
            ]
          },
          {
            "name": "taskManagerPerms",
            "type": "tuple",
            "internalType": "struct OrgDeployer.TaskManagerPermConfig",
            "components": [
              {
                "name": "roleIndices",
                "type": "uint256[]",
                "internalType": "uint256[]"
              },
              {
                "name": "masks",
                "type": "uint8[]",
                "internalType": "uint8[]"
              }
            ]
          },
          {
            "name": "hybridQuorum",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "ddQuorum",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "tokenName",
            "type": "string",
            "internalType": "string"
          },
          {
            "name": "tokenSymbol",
            "type": "string",
            "internalType": "string"
          }
        ]
      }
    ],
    "outputs": [
      {
        "name": "result",
        "type": "tuple",
        "internalType": "struct OrgDeployer.DeploymentResult",
        "components": [
          {
            "name": "hybridVoting",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "directDemocracyVoting",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "executor",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "quickJoin",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "participationToken",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "taskManager",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "educationHub",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "paymentManager",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "membershipAuthority",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "zkEmailInvites",
            "type": "address",
            "internalType": "address"
          }
        ]
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "deployFullOrgWithZkEmail",
    "inputs": [
      {
        "name": "params",
        "type": "tuple",
        "internalType": "struct OrgDeployer.DeploymentParams",
        "components": [
          {
            "name": "orgId",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "orgName",
            "type": "string",
            "internalType": "string"
          },
          {
            "name": "metadataHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "registryAddr",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "deployerAddress",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "deployerUsername",
            "type": "string",
            "internalType": "string"
          },
          {
            "name": "regDeadline",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "regNonce",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "regSignature",
            "type": "bytes",
            "internalType": "bytes"
          },
          {
            "name": "autoUpgrade",
            "type": "bool",
            "internalType": "bool"
          },
          {
            "name": "hybridThresholdPct",
            "type": "uint8",
            "internalType": "uint8"
          },
          {
            "name": "ddThresholdPct",
            "type": "uint8",
            "internalType": "uint8"
          },
          {
            "name": "hybridClasses",
            "type": "tuple[]",
            "internalType": "struct IHybridVotingInit.ClassConfig[]",
            "components": [
              {
                "name": "strategy",
                "type": "uint8",
                "internalType": "enum IHybridVotingInit.ClassStrategy"
              },
              {
                "name": "slicePct",
                "type": "uint8",
                "internalType": "uint8"
              },
              {
                "name": "quadratic",
                "type": "bool",
                "internalType": "bool"
              },
              {
                "name": "minBalance",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "asset",
                "type": "address",
                "internalType": "address"
              },
              {
                "name": "hatIds",
                "type": "uint256[]",
                "internalType": "uint256[]"
              }
            ]
          },
          {
            "name": "ddInitialTargets",
            "type": "address[]",
            "internalType": "address[]"
          },
          {
            "name": "roles",
            "type": "tuple[]",
            "internalType": "struct RoleConfigStructs.RoleConfig[]",
            "components": [
              {
                "name": "name",
                "type": "string",
                "internalType": "string"
              },
              {
                "name": "image",
                "type": "string",
                "internalType": "string"
              },
              {
                "name": "metadataCID",
                "type": "bytes32",
                "internalType": "bytes32"
              },
              {
                "name": "canVote",
                "type": "bool",
                "internalType": "bool"
              },
              {
                "name": "open",
                "type": "bool",
                "internalType": "bool"
              },
              {
                "name": "maxMembers",
                "type": "uint32",
                "internalType": "uint32"
              },
              {
                "name": "vouching",
                "type": "tuple",
                "internalType": "struct RoleConfigStructs.RoleVouchingConfig",
                "components": [
                  {
                    "name": "enabled",
                    "type": "bool",
                    "internalType": "bool"
                  },
                  {
                    "name": "quorum",
                    "type": "uint32",
                    "internalType": "uint32"
                  },
                  {
                    "name": "voucherRoleIndex",
                    "type": "uint256",
                    "internalType": "uint256"
                  }
                ]
              },
              {
                "name": "distribution",
                "type": "tuple",
                "internalType": "struct RoleConfigStructs.RoleDistributionConfig",
                "components": [
                  {
                    "name": "mintToDeployer",
                    "type": "bool",
                    "internalType": "bool"
                  },
                  {
                    "name": "additionalWearers",
                    "type": "address[]",
                    "internalType": "address[]"
                  }
                ]
              }
            ]
          },
          {
            "name": "groups",
            "type": "tuple[]",
            "internalType": "struct RoleConfigStructs.GroupConfig[]",
            "components": [
              {
                "name": "name",
                "type": "string",
                "internalType": "string"
              },
              {
                "name": "memberRoleIndices",
                "type": "uint256[]",
                "internalType": "uint256[]"
              }
            ]
          },
          {
            "name": "roleAssignments",
            "type": "tuple",
            "internalType": "struct OrgDeployer.RoleAssignments",
            "components": [
              {
                "name": "quickJoinRolesBitmap",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "tokenMemberRolesBitmap",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "tokenApproverRolesBitmap",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "taskCreatorRolesBitmap",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "educationCreatorRolesBitmap",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "educationMemberRolesBitmap",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "hybridProposalCreatorRolesBitmap",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "ddVotingRolesBitmap",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "ddCreatorRolesBitmap",
                "type": "uint256",
                "internalType": "uint256"
              }
            ]
          },
          {
            "name": "metadataAdminRoleIndex",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "passkeyEnabled",
            "type": "bool",
            "internalType": "bool"
          },
          {
            "name": "educationHubConfig",
            "type": "tuple",
            "internalType": "struct ModulesFactory.EducationHubConfig",
            "components": [
              {
                "name": "enabled",
                "type": "bool",
                "internalType": "bool"
              }
            ]
          },
          {
            "name": "bootstrap",
            "type": "tuple",
            "internalType": "struct OrgDeployer.BootstrapConfig",
            "components": [
              {
                "name": "projects",
                "type": "tuple[]",
                "internalType": "struct ITaskManagerBootstrap.BootstrapProjectConfig[]",
                "components": [
                  {
                    "name": "title",
                    "type": "bytes",
                    "internalType": "bytes"
                  },
                  {
                    "name": "metadataHash",
                    "type": "bytes32",
                    "internalType": "bytes32"
                  },
                  {
                    "name": "cap",
                    "type": "uint256",
                    "internalType": "uint256"
                  },
                  {
                    "name": "managers",
                    "type": "address[]",
                    "internalType": "address[]"
                  },
                  {
                    "name": "createHats",
                    "type": "uint256[]",
                    "internalType": "uint256[]"
                  },
                  {
                    "name": "claimHats",
                    "type": "uint256[]",
                    "internalType": "uint256[]"
                  },
                  {
                    "name": "reviewHats",
                    "type": "uint256[]",
                    "internalType": "uint256[]"
                  },
                  {
                    "name": "assignHats",
                    "type": "uint256[]",
                    "internalType": "uint256[]"
                  },
                  {
                    "name": "bountyTokens",
                    "type": "address[]",
                    "internalType": "address[]"
                  },
                  {
                    "name": "bountyCaps",
                    "type": "uint256[]",
                    "internalType": "uint256[]"
                  }
                ]
              },
              {
                "name": "tasks",
                "type": "tuple[]",
                "internalType": "struct ITaskManagerBootstrap.BootstrapTaskConfig[]",
                "components": [
                  {
                    "name": "projectIndex",
                    "type": "uint8",
                    "internalType": "uint8"
                  },
                  {
                    "name": "payout",
                    "type": "uint256",
                    "internalType": "uint256"
                  },
                  {
                    "name": "title",
                    "type": "bytes",
                    "internalType": "bytes"
                  },
                  {
                    "name": "metadataHash",
                    "type": "bytes32",
                    "internalType": "bytes32"
                  },
                  {
                    "name": "bountyToken",
                    "type": "address",
                    "internalType": "address"
                  },
                  {
                    "name": "bountyPayout",
                    "type": "uint256",
                    "internalType": "uint256"
                  },
                  {
                    "name": "requiresApplication",
                    "type": "bool",
                    "internalType": "bool"
                  }
                ]
              }
            ]
          },
          {
            "name": "paymasterConfig",
            "type": "tuple",
            "internalType": "struct OrgDeployer.PaymasterConfig",
            "components": [
              {
                "name": "operatorRoleIndex",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "autoWhitelistContracts",
                "type": "bool",
                "internalType": "bool"
              },
              {
                "name": "maxFeePerGas",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "maxPriorityFeePerGas",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "maxCallGas",
                "type": "uint32",
                "internalType": "uint32"
              },
              {
                "name": "maxVerificationGas",
                "type": "uint32",
                "internalType": "uint32"
              },
              {
                "name": "maxPreVerificationGas",
                "type": "uint32",
                "internalType": "uint32"
              },
              {
                "name": "defaultBudgetCapPerEpoch",
                "type": "uint128",
                "internalType": "uint128"
              },
              {
                "name": "defaultBudgetEpochLen",
                "type": "uint32",
                "internalType": "uint32"
              }
            ]
          },
          {
            "name": "taskManagerPerms",
            "type": "tuple",
            "internalType": "struct OrgDeployer.TaskManagerPermConfig",
            "components": [
              {
                "name": "roleIndices",
                "type": "uint256[]",
                "internalType": "uint256[]"
              },
              {
                "name": "masks",
                "type": "uint8[]",
                "internalType": "uint8[]"
              }
            ]
          },
          {
            "name": "hybridQuorum",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "ddQuorum",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "tokenName",
            "type": "string",
            "internalType": "string"
          },
          {
            "name": "tokenSymbol",
            "type": "string",
            "internalType": "string"
          }
        ]
      },
      {
        "name": "zkConfig",
        "type": "tuple",
        "internalType": "struct ModulesFactory.ZkEmailConfig",
        "components": [
          {
            "name": "enabled",
            "type": "bool",
            "internalType": "bool"
          },
          {
            "name": "initialRoot",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "initialCid",
            "type": "bytes32",
            "internalType": "bytes32"
          }
        ]
      }
    ],
    "outputs": [
      {
        "name": "result",
        "type": "tuple",
        "internalType": "struct OrgDeployer.DeploymentResult",
        "components": [
          {
            "name": "hybridVoting",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "directDemocracyVoting",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "executor",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "quickJoin",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "participationToken",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "taskManager",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "educationHub",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "paymentManager",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "membershipAuthority",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "zkEmailInvites",
            "type": "address",
            "internalType": "address"
          }
        ]
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "factories",
    "inputs": [],
    "outputs": [
      {
        "name": "governance",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "access",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "modules",
        "type": "address",
        "internalType": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "hats",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "contract IHats"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "initialize",
    "inputs": [
      {
        "name": "_governanceFactory",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "_accessFactory",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "_modulesFactory",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "_poaManager",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "_orgRegistry",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "_hats",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "_paymasterHub",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setAccessFactory",
    "inputs": [
      {
        "name": "_accessFactory",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setGovernanceFactory",
    "inputs": [
      {
        "name": "_governanceFactory",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setModulesFactory",
    "inputs": [
      {
        "name": "_modulesFactory",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setUniversalPasskeyFactory",
    "inputs": [
      {
        "name": "_universalFactory",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setZkEmailInfrastructure",
    "inputs": [
      {
        "name": "domainVerifier",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "emailVerifier",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "dkimRegistry",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "event",
    "name": "AccessFactoryUpdated",
    "inputs": [
      {
        "name": "factory",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "GovernanceFactoryUpdated",
    "inputs": [
      {
        "name": "factory",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "GroupsCreated",
    "inputs": [
      {
        "name": "orgId",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "subjectIds",
        "type": "uint256[]",
        "indexed": false,
        "internalType": "uint256[]"
      },
      {
        "name": "names",
        "type": "string[]",
        "indexed": false,
        "internalType": "string[]"
      },
      {
        "name": "memberSubjectIds",
        "type": "uint256[][]",
        "indexed": false,
        "internalType": "uint256[][]"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "InitialWearersAssigned",
    "inputs": [
      {
        "name": "orgId",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "membershipAuthority",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "wearers",
        "type": "address[]",
        "indexed": false,
        "internalType": "address[]"
      },
      {
        "name": "subjectIds",
        "type": "uint256[]",
        "indexed": false,
        "internalType": "uint256[]"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Initialized",
    "inputs": [
      {
        "name": "version",
        "type": "uint64",
        "indexed": false,
        "internalType": "uint64"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "ModulesFactoryUpdated",
    "inputs": [
      {
        "name": "factory",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "OrgDeployed",
    "inputs": [
      {
        "name": "orgId",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "executor",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "hybridVoting",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "directDemocracyVoting",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "quickJoin",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "participationToken",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "taskManager",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "educationHub",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "paymentManager",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "membershipAuthority",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "adminSubjectId",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      },
      {
        "name": "roleSubjectIds",
        "type": "uint256[]",
        "indexed": false,
        "internalType": "uint256[]"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "RolesCreated",
    "inputs": [
      {
        "name": "orgId",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "subjectIds",
        "type": "uint256[]",
        "indexed": false,
        "internalType": "uint256[]"
      },
      {
        "name": "names",
        "type": "string[]",
        "indexed": false,
        "internalType": "string[]"
      },
      {
        "name": "images",
        "type": "string[]",
        "indexed": false,
        "internalType": "string[]"
      },
      {
        "name": "metadataCIDs",
        "type": "bytes32[]",
        "indexed": false,
        "internalType": "bytes32[]"
      },
      {
        "name": "canVote",
        "type": "bool[]",
        "indexed": false,
        "internalType": "bool[]"
      }
    ],
    "anonymous": false
  },
  {
    "type": "error",
    "name": "DeploymentComplete",
    "inputs": []
  },
  {
    "type": "error",
    "name": "DuplicateGroupMemberRole",
    "inputs": [
      {
        "name": "groupIndex",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "roleIndex",
        "type": "uint256",
        "internalType": "uint256"
      }
    ]
  },
  {
    "type": "error",
    "name": "InvalidAddress",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidInitialization",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidRoleConfiguration",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NotInitializing",
    "inputs": []
  },
  {
    "type": "error",
    "name": "OrgExistsMismatch",
    "inputs": []
  },
  {
    "type": "error",
    "name": "QuickJoinRoleNotOpen",
    "inputs": [
      {
        "name": "roleIndex",
        "type": "uint256",
        "internalType": "uint256"
      }
    ]
  },
  {
    "type": "error",
    "name": "Reentrant",
    "inputs": []
  },
  {
    "type": "error",
    "name": "RoleCapacityBelowGenesisSeed",
    "inputs": [
      {
        "name": "roleIndex",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "maxMembers",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "seededWearers",
        "type": "uint256",
        "internalType": "uint256"
      }
    ]
  },
  {
    "type": "event",
    "name": "ModuleDeployed",
    "inputs": [
      {
        "name": "orgId",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "typeId",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "proxy",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "beacon",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "autoUpgrade",
        "type": "bool",
        "indexed": false,
        "internalType": "bool"
      },
      {
        "name": "owner",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "error",
    "name": "EmptyInit",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InitFailed",
    "inputs": []
  },
  {
    "type": "error",
    "name": "UnsupportedType",
    "inputs": []
  },
  {
    "type": "error",
    "name": "UnregisteredRole",
    "inputs": [
      {
        "name": "roleIdx",
        "type": "uint256",
        "internalType": "uint256"
      }
    ]
  }
]
