{ "contract_name": "dao-migrator", "contract_version": "2.6.0", "idl_version": "1.0.0", "instantiate": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "InstantiateMsg", "type": "object", "required": [ "migration_params", "sub_daos", "v1_code_ids", "v2_code_ids" ], "properties": { "migration_params": { "$ref": "#/definitions/MigrationParams" }, "sub_daos": { "type": "array", "items": { "$ref": "#/definitions/SubDao" } }, "v1_code_ids": { "$ref": "#/definitions/V1CodeIds" }, "v2_code_ids": { "$ref": "#/definitions/V2CodeIds" } }, "additionalProperties": false, "definitions": { "Admin": { "description": "Information about the CosmWasm level admin of a contract. Used in conjunction with `ModuleInstantiateInfo` to instantiate modules.", "oneOf": [ { "description": "Set the admin to a specified address.", "type": "object", "required": [ "address" ], "properties": { "address": { "type": "object", "required": [ "addr" ], "properties": { "addr": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Sets the admin as the core module address.", "type": "object", "required": [ "core_module" ], "properties": { "core_module": { "type": "object", "additionalProperties": false } }, "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. See also .", "type": "string" }, "Coin": { "type": "object", "required": [ "amount", "denom" ], "properties": { "amount": { "$ref": "#/definitions/Uint128" }, "denom": { "type": "string" } } }, "Duration": { "description": "Duration is a delta of time. You can add it to a BlockInfo or Expiration to move that further in the future. Note that an height-based Duration and a time-based Expiration cannot be combined", "oneOf": [ { "type": "object", "required": [ "height" ], "properties": { "height": { "type": "integer", "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false }, { "description": "Time in seconds", "type": "object", "required": [ "time" ], "properties": { "time": { "type": "integer", "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false } ] }, "MigrationParams": { "type": "object", "required": [ "proposal_params" ], "properties": { "migrate_stake_cw20_manager": { "description": "Rather or not to migrate the stake_cw20 contract and its manager. If this is not set to true and a stake_cw20 contract is detected in the DAO's configuration the migration will be aborted.", "type": [ "boolean", "null" ] }, "proposal_params": { "description": "List of (address, ProposalParams) where `address` is an address of a proposal module currently part of the DAO.", "type": "array", "items": { "type": "array", "items": [ { "type": "string" }, { "$ref": "#/definitions/ProposalParams" } ], "maxItems": 2, "minItems": 2 } } }, "additionalProperties": false }, "ModuleInstantiateInfo": { "description": "Information needed to instantiate a module.", "type": "object", "required": [ "code_id", "funds", "label", "msg" ], "properties": { "admin": { "description": "CosmWasm level admin of the instantiated contract. See: ", "anyOf": [ { "$ref": "#/definitions/Admin" }, { "type": "null" } ] }, "code_id": { "description": "Code ID of the contract to be instantiated.", "type": "integer", "format": "uint64", "minimum": 0.0 }, "funds": { "description": "Funds to be sent to the instantiated contract.", "type": "array", "items": { "$ref": "#/definitions/Coin" } }, "label": { "description": "Label for the instantiated contract.", "type": "string" }, "msg": { "description": "Instantiate message to be used to create the contract.", "allOf": [ { "$ref": "#/definitions/Binary" } ] } }, "additionalProperties": false }, "PreProposeInfo": { "oneOf": [ { "description": "Anyone may create a proposal free of charge.", "type": "object", "required": [ "anyone_may_propose" ], "properties": { "anyone_may_propose": { "type": "object", "additionalProperties": false } }, "additionalProperties": false }, { "description": "The module specified in INFO has exclusive rights to proposal creation.", "type": "object", "required": [ "module_may_propose" ], "properties": { "module_may_propose": { "type": "object", "required": [ "info" ], "properties": { "info": { "$ref": "#/definitions/ModuleInstantiateInfo" } }, "additionalProperties": false } }, "additionalProperties": false } ] }, "ProposalParams": { "description": "The params we need to provide for migration msgs", "type": "object", "required": [ "close_proposal_on_execution_failure", "pre_propose_info" ], "properties": { "close_proposal_on_execution_failure": { "type": "boolean" }, "pre_propose_info": { "$ref": "#/definitions/PreProposeInfo" }, "veto": { "anyOf": [ { "$ref": "#/definitions/VetoConfig" }, { "type": "null" } ] } }, "additionalProperties": false }, "SubDao": { "type": "object", "required": [ "addr" ], "properties": { "addr": { "description": "The contract address of the SubDAO", "type": "string" }, "charter": { "description": "The purpose/constitution for the SubDAO", "type": [ "string", "null" ] } }, "additionalProperties": false }, "Uint128": { "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", "type": "string" }, "V1CodeIds": { "type": "object", "required": [ "cw20_stake", "cw20_staked_balances_voting", "cw4_voting", "proposal_single" ], "properties": { "cw20_stake": { "type": "integer", "format": "uint64", "minimum": 0.0 }, "cw20_staked_balances_voting": { "type": "integer", "format": "uint64", "minimum": 0.0 }, "cw4_voting": { "type": "integer", "format": "uint64", "minimum": 0.0 }, "proposal_single": { "type": "integer", "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false }, "V2CodeIds": { "type": "object", "required": [ "cw20_stake", "cw20_staked_balances_voting", "cw4_voting", "proposal_single" ], "properties": { "cw20_stake": { "type": "integer", "format": "uint64", "minimum": 0.0 }, "cw20_staked_balances_voting": { "type": "integer", "format": "uint64", "minimum": 0.0 }, "cw4_voting": { "type": "integer", "format": "uint64", "minimum": 0.0 }, "proposal_single": { "type": "integer", "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false }, "VetoConfig": { "type": "object", "required": [ "early_execute", "timelock_duration", "veto_before_passed", "vetoer" ], "properties": { "early_execute": { "description": "Whether or not the vetoer can execute a proposal early before the timelock duration has expired", "type": "boolean" }, "timelock_duration": { "description": "The time duration to lock a proposal for after its expiration to allow the vetoer to veto.", "allOf": [ { "$ref": "#/definitions/Duration" } ] }, "veto_before_passed": { "description": "Whether or not the vetoer can veto a proposal before it passes.", "type": "boolean" }, "vetoer": { "description": "The address able to veto proposals.", "type": "string" } }, "additionalProperties": false } } }, "execute": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ExecuteMsg", "type": "object", "required": [ "migration_params", "sub_daos", "v1_code_ids", "v2_code_ids" ], "properties": { "migration_params": { "$ref": "#/definitions/MigrationParams" }, "sub_daos": { "type": "array", "items": { "$ref": "#/definitions/SubDao" } }, "v1_code_ids": { "$ref": "#/definitions/V1CodeIds" }, "v2_code_ids": { "$ref": "#/definitions/V2CodeIds" } }, "additionalProperties": false, "definitions": { "Admin": { "description": "Information about the CosmWasm level admin of a contract. Used in conjunction with `ModuleInstantiateInfo` to instantiate modules.", "oneOf": [ { "description": "Set the admin to a specified address.", "type": "object", "required": [ "address" ], "properties": { "address": { "type": "object", "required": [ "addr" ], "properties": { "addr": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Sets the admin as the core module address.", "type": "object", "required": [ "core_module" ], "properties": { "core_module": { "type": "object", "additionalProperties": false } }, "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. See also .", "type": "string" }, "Coin": { "type": "object", "required": [ "amount", "denom" ], "properties": { "amount": { "$ref": "#/definitions/Uint128" }, "denom": { "type": "string" } } }, "Duration": { "description": "Duration is a delta of time. You can add it to a BlockInfo or Expiration to move that further in the future. Note that an height-based Duration and a time-based Expiration cannot be combined", "oneOf": [ { "type": "object", "required": [ "height" ], "properties": { "height": { "type": "integer", "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false }, { "description": "Time in seconds", "type": "object", "required": [ "time" ], "properties": { "time": { "type": "integer", "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false } ] }, "MigrationParams": { "type": "object", "required": [ "proposal_params" ], "properties": { "migrate_stake_cw20_manager": { "description": "Rather or not to migrate the stake_cw20 contract and its manager. If this is not set to true and a stake_cw20 contract is detected in the DAO's configuration the migration will be aborted.", "type": [ "boolean", "null" ] }, "proposal_params": { "description": "List of (address, ProposalParams) where `address` is an address of a proposal module currently part of the DAO.", "type": "array", "items": { "type": "array", "items": [ { "type": "string" }, { "$ref": "#/definitions/ProposalParams" } ], "maxItems": 2, "minItems": 2 } } }, "additionalProperties": false }, "ModuleInstantiateInfo": { "description": "Information needed to instantiate a module.", "type": "object", "required": [ "code_id", "funds", "label", "msg" ], "properties": { "admin": { "description": "CosmWasm level admin of the instantiated contract. See: ", "anyOf": [ { "$ref": "#/definitions/Admin" }, { "type": "null" } ] }, "code_id": { "description": "Code ID of the contract to be instantiated.", "type": "integer", "format": "uint64", "minimum": 0.0 }, "funds": { "description": "Funds to be sent to the instantiated contract.", "type": "array", "items": { "$ref": "#/definitions/Coin" } }, "label": { "description": "Label for the instantiated contract.", "type": "string" }, "msg": { "description": "Instantiate message to be used to create the contract.", "allOf": [ { "$ref": "#/definitions/Binary" } ] } }, "additionalProperties": false }, "PreProposeInfo": { "oneOf": [ { "description": "Anyone may create a proposal free of charge.", "type": "object", "required": [ "anyone_may_propose" ], "properties": { "anyone_may_propose": { "type": "object", "additionalProperties": false } }, "additionalProperties": false }, { "description": "The module specified in INFO has exclusive rights to proposal creation.", "type": "object", "required": [ "module_may_propose" ], "properties": { "module_may_propose": { "type": "object", "required": [ "info" ], "properties": { "info": { "$ref": "#/definitions/ModuleInstantiateInfo" } }, "additionalProperties": false } }, "additionalProperties": false } ] }, "ProposalParams": { "description": "The params we need to provide for migration msgs", "type": "object", "required": [ "close_proposal_on_execution_failure", "pre_propose_info" ], "properties": { "close_proposal_on_execution_failure": { "type": "boolean" }, "pre_propose_info": { "$ref": "#/definitions/PreProposeInfo" }, "veto": { "anyOf": [ { "$ref": "#/definitions/VetoConfig" }, { "type": "null" } ] } }, "additionalProperties": false }, "SubDao": { "type": "object", "required": [ "addr" ], "properties": { "addr": { "description": "The contract address of the SubDAO", "type": "string" }, "charter": { "description": "The purpose/constitution for the SubDAO", "type": [ "string", "null" ] } }, "additionalProperties": false }, "Uint128": { "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", "type": "string" }, "V1CodeIds": { "type": "object", "required": [ "cw20_stake", "cw20_staked_balances_voting", "cw4_voting", "proposal_single" ], "properties": { "cw20_stake": { "type": "integer", "format": "uint64", "minimum": 0.0 }, "cw20_staked_balances_voting": { "type": "integer", "format": "uint64", "minimum": 0.0 }, "cw4_voting": { "type": "integer", "format": "uint64", "minimum": 0.0 }, "proposal_single": { "type": "integer", "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false }, "V2CodeIds": { "type": "object", "required": [ "cw20_stake", "cw20_staked_balances_voting", "cw4_voting", "proposal_single" ], "properties": { "cw20_stake": { "type": "integer", "format": "uint64", "minimum": 0.0 }, "cw20_staked_balances_voting": { "type": "integer", "format": "uint64", "minimum": 0.0 }, "cw4_voting": { "type": "integer", "format": "uint64", "minimum": 0.0 }, "proposal_single": { "type": "integer", "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false }, "VetoConfig": { "type": "object", "required": [ "early_execute", "timelock_duration", "veto_before_passed", "vetoer" ], "properties": { "early_execute": { "description": "Whether or not the vetoer can execute a proposal early before the timelock duration has expired", "type": "boolean" }, "timelock_duration": { "description": "The time duration to lock a proposal for after its expiration to allow the vetoer to veto.", "allOf": [ { "$ref": "#/definitions/Duration" } ] }, "veto_before_passed": { "description": "Whether or not the vetoer can veto a proposal before it passes.", "type": "boolean" }, "vetoer": { "description": "The address able to veto proposals.", "type": "string" } }, "additionalProperties": false } } }, "query": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "QueryMsg", "type": "string", "enum": [] }, "migrate": null, "sudo": null, "responses": {} }