{
  "_format": "hh-sol-artifact-1",
  "contractName": "IMasterDAOFactory",
  "sourceName": "contracts/interfaces/factory/IMasterDAOFactory.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "daoMemberStorageProxy_",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract DAORegistry",
          "name": "daoRegistry",
          "type": "address"
        }
      ],
      "name": "DeployedDAOMemberStorage",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "daoPanelVotingProxy_",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract DAORegistry",
          "name": "daoRegistry",
          "type": "address"
        }
      ],
      "name": "DeployedDAOPanelVoting",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "daoParameterStorageProxy_",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract DAORegistry",
          "name": "daoRegistry",
          "type": "address"
        }
      ],
      "name": "DeployedDAOParameterStorage",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "daoRegistryProxy_",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "daoCreator",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "votingToken",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "daoURI",
              "type": "string"
            },
            {
              "internalType": "bytes32",
              "name": "deploymentSalt",
              "type": "bytes32"
            },
            {
              "components": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "value",
                  "type": "bytes"
                },
                {
                  "internalType": "enum ParameterType",
                  "name": "solidityType",
                  "type": "uint8"
                }
              ],
              "internalType": "struct Parameter[]",
              "name": "initialParameters",
              "type": "tuple[]"
            },
            {
              "components": [
                {
                  "internalType": "string",
                  "name": "componentName",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "componentImplementation",
                  "type": "address"
                }
              ],
              "internalType": "struct DAOReplacements[]",
              "name": "daoReplacements",
              "type": "tuple[]"
            }
          ],
          "indexed": false,
          "internalType": "struct DAOConstructorParameters",
          "name": "params_",
          "type": "tuple"
        }
      ],
      "name": "DeployedDAORegistry",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "daoVaultProxy_",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract DAORegistry",
          "name": "daoRegistry",
          "type": "address"
        }
      ],
      "name": "DeployedDAOVault",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "votingAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "votingToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "panelName",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "contract DAORegistry",
          "name": "daoRegistry",
          "type": "address"
        }
      ],
      "name": "DeployedDAOVoting",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "permissionManagerProxy_",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract DAORegistry",
          "name": "daoRegistry",
          "type": "address"
        }
      ],
      "name": "DeployedPermissionManager",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "votingFactoryProxy_",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract DAORegistry",
          "name": "daoRegistry",
          "type": "address"
        }
      ],
      "name": "DeployedVotingFactory",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "votingRegistryProxy_",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract DAORegistry",
          "name": "daoRegistry",
          "type": "address"
        }
      ],
      "name": "DeployedVotingRegistry",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "contract DAORegistry",
          "name": "dao_",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "string",
              "name": "moduleName",
              "type": "string"
            },
            {
              "internalType": "address",
              "name": "moduleAddress",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "connectorRoleName",
              "type": "string"
            },
            {
              "internalType": "enum ModuleAdditionType",
              "name": "moduleType",
              "type": "uint8"
            },
            {
              "components": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "value",
                  "type": "bytes"
                },
                {
                  "internalType": "enum ParameterType",
                  "name": "solidityType",
                  "type": "uint8"
                }
              ],
              "internalType": "struct Parameter[]",
              "name": "constitutionParameters",
              "type": "tuple[]"
            },
            {
              "internalType": "string",
              "name": "votingName",
              "type": "string"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "string",
                      "name": "votingSituationName",
                      "type": "string"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint256",
                          "name": "votingPeriod",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "vetoPeriod",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "proposalExecutionPeriod",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "requiredQuorum",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "requiredMajority",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "requiredVetoQuorum",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "votingType",
                          "type": "uint256"
                        },
                        {
                          "internalType": "string",
                          "name": "votingTarget",
                          "type": "string"
                        },
                        {
                          "internalType": "uint256",
                          "name": "votingMinAmount",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct IDAOVoting.DAOVotingValues",
                      "name": "votingValues",
                      "type": "tuple"
                    }
                  ],
                  "internalType": "struct IDAOVoting.InitialSituation",
                  "name": "initialSituation",
                  "type": "tuple"
                },
                {
                  "internalType": "string",
                  "name": "externalLink",
                  "type": "string"
                }
              ],
              "internalType": "struct IDAOVoting.ExtendedSituation",
              "name": "situation",
              "type": "tuple"
            },
            {
              "internalType": "address",
              "name": "vetoGroupSource",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "initCallData",
              "type": "bytes"
            },
            {
              "internalType": "bytes32",
              "name": "salt",
              "type": "bytes32"
            }
          ],
          "internalType": "struct DAOModuleContractorParameters",
          "name": "params_",
          "type": "tuple"
        }
      ],
      "name": "addModule",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract DAORegistry",
          "name": "dao_",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "contract DAOMemberStorage",
              "name": "linkedMemberStorage",
              "type": "address"
            }
          ],
          "internalType": "struct IPermissionManager.VetoGroup[]",
          "name": "vetoGroups_",
          "type": "tuple[]"
        }
      ],
      "name": "configureVetoGroups",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract DAORegistry",
          "name": "dao_",
          "type": "address"
        },
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "string",
                  "name": "votingSituationName",
                  "type": "string"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "votingPeriod",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "vetoPeriod",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "proposalExecutionPeriod",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "requiredQuorum",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "requiredMajority",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "requiredVetoQuorum",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "votingType",
                      "type": "uint256"
                    },
                    {
                      "internalType": "string",
                      "name": "votingTarget",
                      "type": "string"
                    },
                    {
                      "internalType": "uint256",
                      "name": "votingMinAmount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IDAOVoting.DAOVotingValues",
                  "name": "votingValues",
                  "type": "tuple"
                }
              ],
              "internalType": "struct IDAOVoting.InitialSituation",
              "name": "initialSituation",
              "type": "tuple"
            },
            {
              "internalType": "string",
              "name": "externalLink",
              "type": "string"
            }
          ],
          "internalType": "struct IDAOVoting.ExtendedSituation[]",
          "name": "situations_",
          "type": "tuple[]"
        }
      ],
      "name": "configureVotingSituations",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "daoCreator",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "votingToken",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "daoURI",
              "type": "string"
            },
            {
              "internalType": "bytes32",
              "name": "deploymentSalt",
              "type": "bytes32"
            },
            {
              "components": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "value",
                  "type": "bytes"
                },
                {
                  "internalType": "enum ParameterType",
                  "name": "solidityType",
                  "type": "uint8"
                }
              ],
              "internalType": "struct Parameter[]",
              "name": "initialParameters",
              "type": "tuple[]"
            },
            {
              "components": [
                {
                  "internalType": "string",
                  "name": "componentName",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "componentImplementation",
                  "type": "address"
                }
              ],
              "internalType": "struct DAOReplacements[]",
              "name": "daoReplacements",
              "type": "tuple[]"
            }
          ],
          "internalType": "struct DAOConstructorParameters",
          "name": "params_",
          "type": "tuple"
        }
      ],
      "name": "deployDAO",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract DAORegistry",
          "name": "dao_",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "string",
              "name": "panelName",
              "type": "string"
            },
            {
              "internalType": "address",
              "name": "votingToken",
              "type": "address"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "string",
                      "name": "votingSituationName",
                      "type": "string"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint256",
                          "name": "votingPeriod",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "vetoPeriod",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "proposalExecutionPeriod",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "requiredQuorum",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "requiredMajority",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "requiredVetoQuorum",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "votingType",
                          "type": "uint256"
                        },
                        {
                          "internalType": "string",
                          "name": "votingTarget",
                          "type": "string"
                        },
                        {
                          "internalType": "uint256",
                          "name": "votingMinAmount",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct IDAOVoting.DAOVotingValues",
                      "name": "votingValues",
                      "type": "tuple"
                    }
                  ],
                  "internalType": "struct IDAOVoting.InitialSituation",
                  "name": "initialSituation",
                  "type": "tuple"
                },
                {
                  "internalType": "string",
                  "name": "externalLink",
                  "type": "string"
                }
              ],
              "internalType": "struct IDAOVoting.ExtendedSituation[]",
              "name": "situations",
              "type": "tuple[]"
            },
            {
              "components": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "value",
                  "type": "bytes"
                },
                {
                  "internalType": "enum ParameterType",
                  "name": "solidityType",
                  "type": "uint8"
                }
              ],
              "internalType": "struct Parameter[]",
              "name": "initialParameters",
              "type": "tuple[]"
            },
            {
              "internalType": "address[]",
              "name": "initialMembers",
              "type": "address[]"
            }
          ],
          "internalType": "struct DAOPanelConstructorParameters",
          "name": "daoPanelParams_",
          "type": "tuple"
        }
      ],
      "name": "deployDAOPanel",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract DAORegistry",
          "name": "dao_",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "contract DAOMemberStorage",
              "name": "linkedMemberStorage",
              "type": "address"
            }
          ],
          "internalType": "struct IPermissionManager.VetoGroup[]",
          "name": "vetoGroups_",
          "type": "tuple[]"
        }
      ],
      "name": "finishDAOSetup",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "salt_",
          "type": "bytes32"
        }
      ],
      "name": "predictDAOAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "daoAddresses_",
          "type": "address[]"
        }
      ],
      "name": "restoreRegistryPools",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract DAORegistry",
          "name": "dao_",
          "type": "address"
        }
      ],
      "name": "revokeDAOCreatorRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
