{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "InstantiateMsg", "type": "object", "required": [ "automatically_add_cw20s", "automatically_add_cw721s", "description", "name", "proposal_modules_instantiate_info", "voting_module_instantiate_info" ], "properties": { "admin": { "description": "Optional Admin with the ability to execute DAO messages directly. Useful for building SubDAOs controlled by a parent DAO. If no admin is specified the contract is set as its own admin so that the admin may be updated later by governance.", "type": [ "string", "null" ] }, "automatically_add_cw20s": { "description": "If true the contract will automatically add received cw20 tokens to its treasury.", "type": "boolean" }, "automatically_add_cw721s": { "description": "If true the contract will automatically add received cw721 tokens to its treasury.", "type": "boolean" }, "description": { "description": "A description of the core contract.", "type": "string" }, "image_url": { "description": "An image URL to describe the core module contract.", "type": [ "string", "null" ] }, "initial_items": { "description": "Initial information for arbitrary contract addresses to be added to the items map. The key is the name of the item in the items map. The value is an enum that either uses an existing address or instantiates a new contract.", "type": [ "array", "null" ], "items": { "$ref": "#/definitions/InitialItem" } }, "name": { "description": "The name of the core contract.", "type": "string" }, "proposal_modules_instantiate_info": { "description": "Instantiate information for the core contract's proposal modules.", "type": "array", "items": { "$ref": "#/definitions/ModuleInstantiateInfo" } }, "voting_module_instantiate_info": { "description": "Instantiate information for the core contract's voting power module.", "allOf": [ { "$ref": "#/definitions/ModuleInstantiateInfo" } ] } }, "definitions": { "Admin": { "description": "Information about the admin of a contract.", "oneOf": [ { "description": "A specific address.", "type": "object", "required": [ "address" ], "properties": { "address": { "type": "object", "required": [ "addr" ], "properties": { "addr": { "type": "string" } } } }, "additionalProperties": false }, { "description": "The core contract itself. The contract will fill this in while instantiation takes place.", "type": "object", "required": [ "core_contract" ], "properties": { "core_contract": { "type": "object" } }, "additionalProperties": false }, { "description": "No admin.", "type": "object", "required": [ "none" ], "properties": { "none": { "type": "object" } }, "additionalProperties": false } ] }, "Binary": { "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec", "type": "string" }, "InitialItem": { "type": "object", "required": [ "key", "value" ], "properties": { "key": { "description": "The name of the item.", "type": "string" }, "value": { "description": "The value the item will have at instantiation time.", "type": "string" } } }, "ModuleInstantiateInfo": { "description": "Information needed to instantiate a proposal or voting module.", "type": "object", "required": [ "admin", "code_id", "label", "msg" ], "properties": { "admin": { "description": "Admin of the instantiated contract.", "allOf": [ { "$ref": "#/definitions/Admin" } ] }, "code_id": { "description": "Code ID of the contract to be instantiated.", "type": "integer", "format": "uint64", "minimum": 0.0 }, "label": { "description": "Label for the instantiated contract.", "type": "string" }, "msg": { "description": "Instantiate message to be used to create the contract.", "allOf": [ { "$ref": "#/definitions/Binary" } ] } } } } }