// Proposal Manager init data
mandatoryComponentsDeployData[0] = abi.encode(['tuple(address[],uint256[],uint256[],address,address,address[],address[])'], [
[], //address[] collections
[], //uint256[] objectIds
utilities.voidEthereumAddress, //address creationRules
utilities.voidEthereumAddress, //triggeringRules
[], //address[] canTerminateAddresses
[] //address[] validatorsAddresses
//in this example the Treasury, State Manager and TreasurySplitter Managers are linked as additional Components
var additionalComponentsDeployData = [
//Treasury Manager init data
//State Manager init data
abi.encode(['tuple(string,bytes32,bytes)'], [
//TreasurySplitter init data
web3.eth.abi.encodeParameters(["uint256", "uint256", "bytes32[]", "uint256[]", "bytes32", "uint256", "uint256"], [0, 0, [],
[], utilities.voidBytes32, 2, 3
//Proposal Model init data
var subDAOProposalModelTypes = [
var subDAOProposalModels = [{
source : utilities.voidEthereumAddress, //address source
uri : "str", //string uri
perpetual : false, //bool isPreset
bytes : [], //bytes[] presetValues
bytes32 : [], //bytes32[] presetProposals
a : utilities.voidEthereumAddress, //address creationRules
b : utilities.voidEthereumAddress, //address triggeringRules
c : 0, //uint256 votingRulesIndex
d : [[utilities.voidEthereumAddress]], //address[][] canTerminateAddresses
e : [[utilities.voidEthereumAddress]] //address[][] validatorsAddresses
var organizationDeployData = {
mandatoryComponentsDeployData,
additionalComponents: [1, 2, 3], //in this example the Treasury, State and Treasury Splitter are linked as additional Components
additionalComponentsDeployData,
specialComponentsData: '0x'
specificOrganizationData: abi.encode(["bool", "address", `tuple(${subDAOProposalModelTypes.join(',')})[]`, "bytes"], [false, utilities.voidEthereumAddress, subDAOProposalModels.map(it => Object.values(it)), "0x"])
data = abi.encode(["tuple(string,bytes,bytes[],uint256[],bytes[],bytes)"], [Object.values(organizationDeployData)]);
organizationFactory.methods.deploy(data).send({from : myAddress})