{ "contract_name": "dao-pre-propose-approver", "contract_version": "2.6.0", "idl_version": "1.0.0", "instantiate": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "InstantiateMsg", "type": "object", "required": [ "pre_propose_approval_contract" ], "properties": { "pre_propose_approval_contract": { "type": "string" } }, "additionalProperties": false }, "execute": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ExecuteMsg", "oneOf": [ { "description": "Creates a new proposal in the pre-propose module. MSG will be serialized and used as the proposal creation message.", "type": "object", "required": [ "propose" ], "properties": { "propose": { "type": "object", "required": [ "msg" ], "properties": { "msg": { "$ref": "#/definitions/ApproverProposeMessage" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Updates the configuration of this module. This will completely override the existing configuration. This new configuration will only apply to proposals created after the config is updated. Only the DAO may execute this message.", "type": "object", "required": [ "update_config" ], "properties": { "update_config": { "type": "object", "properties": { "deposit_info": { "description": "If None, will remove the deposit. Backwards compatible.", "anyOf": [ { "$ref": "#/definitions/UncheckedDepositInfo" }, { "type": "null" } ] }, "submission_policy": { "description": "If None, will leave the submission policy in the config as-is.", "anyOf": [ { "$ref": "#/definitions/PreProposeSubmissionPolicy" }, { "type": "null" } ] } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Perform more granular submission policy updates to allow for atomic operations that don't override others.", "type": "object", "required": [ "update_submission_policy" ], "properties": { "update_submission_policy": { "type": "object", "properties": { "allowlist_add": { "description": "If using specific policy, optionally add to the allowlist.", "type": [ "array", "null" ], "items": { "type": "string" } }, "allowlist_remove": { "description": "If using specific policy, optionally remove from the allowlist.", "type": [ "array", "null" ], "items": { "type": "string" } }, "denylist_add": { "description": "Optionally add to the denylist. Works for any submission policy.", "type": [ "array", "null" ], "items": { "type": "string" } }, "denylist_remove": { "description": "Optionally remove from denylist. Works for any submission policy.", "type": [ "array", "null" ], "items": { "type": "string" } }, "set_dao_members": { "description": "If using specific policy, optionally update the `dao_members` flag.", "type": [ "boolean", "null" ] } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Withdraws funds inside of this contract to the message sender. The contracts entire balance for the specifed DENOM is withdrawn to the message sender. Only the DAO may call this method.\n\nThis is intended only as an escape hatch in the event of a critical bug in this contract or it's proposal module. Withdrawing funds will cause future attempts to return proposal deposits to fail their transactions as the contract will have insufficent balance to return them. In the case of `cw-proposal-single` this transaction failure will cause the module to remove the pre-propose module from its proposal hook receivers.\n\nMore likely than not, this should NEVER BE CALLED unless a bug in this contract or the proposal module it is associated with has caused it to stop receiving proposal hook messages, or if a critical security vulnerability has been found that allows an attacker to drain proposal deposits.", "type": "object", "required": [ "withdraw" ], "properties": { "withdraw": { "type": "object", "properties": { "denom": { "description": "The denom to withdraw funds for. If no denom is specified, the denomination currently configured for proposal deposits will be used.\n\nYou may want to specify a denomination here if you are withdrawing funds that were previously accepted for proposal deposits but are not longer used due to an `UpdateConfig` message being executed on the contract.", "anyOf": [ { "$ref": "#/definitions/UncheckedDenom" }, { "type": "null" } ] } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Extension message. Contracts that extend this one should put their custom execute logic here. The default implementation will do nothing if this variant is executed.", "type": "object", "required": [ "extension" ], "properties": { "extension": { "type": "object", "required": [ "msg" ], "properties": { "msg": { "$ref": "#/definitions/ExecuteExt" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Adds a proposal submitted hook. Fires when a new proposal is submitted to the pre-propose contract. Only the DAO may call this method.", "type": "object", "required": [ "add_proposal_submitted_hook" ], "properties": { "add_proposal_submitted_hook": { "type": "object", "required": [ "address" ], "properties": { "address": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Removes a proposal submitted hook. Only the DAO may call this method.", "type": "object", "required": [ "remove_proposal_submitted_hook" ], "properties": { "remove_proposal_submitted_hook": { "type": "object", "required": [ "address" ], "properties": { "address": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Handles proposal hook fired by the associated proposal module when a proposal is completed (ie executed or rejected). By default, the base contract will return deposits proposals, when they are closed, when proposals are executed, or, if it is refunding failed.", "type": "object", "required": [ "proposal_completed_hook" ], "properties": { "proposal_completed_hook": { "type": "object", "required": [ "new_status", "proposal_id" ], "properties": { "new_status": { "$ref": "#/definitions/Status" }, "proposal_id": { "type": "integer", "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false } }, "additionalProperties": false } ], "definitions": { "Addr": { "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", "type": "string" }, "ApproverProposeMessage": { "oneOf": [ { "type": "object", "required": [ "propose" ], "properties": { "propose": { "type": "object", "required": [ "approval_id", "description", "title" ], "properties": { "approval_id": { "type": "integer", "format": "uint64", "minimum": 0.0 }, "description": { "type": "string" }, "title": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false } ] }, "DepositRefundPolicy": { "oneOf": [ { "description": "Deposits should always be refunded.", "type": "string", "enum": [ "always" ] }, { "description": "Deposits should only be refunded for passed proposals.", "type": "string", "enum": [ "only_passed" ] }, { "description": "Deposits should never be refunded.", "type": "string", "enum": [ "never" ] } ] }, "DepositToken": { "description": "Information about the token to use for proposal deposits.", "oneOf": [ { "description": "Use a specific token address as the deposit token.", "type": "object", "required": [ "token" ], "properties": { "token": { "type": "object", "required": [ "denom" ], "properties": { "denom": { "$ref": "#/definitions/UncheckedDenom" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Use the token native denom or cw20 contract address of the associated DAO's voting module. NOTE: in order to retrieve the token automatically via this variant, the voting module must either (1) use a native token and implement the `Denom {}` query type defined by `dao_dao_macros::native_token_query` OR (2) use a cw20 token and implement the `TokenContract {}` query type defined by `dao_dao_macros::cw20_token_query`. Failing to implement correctly will cause this option to fail to instantiate.", "type": "object", "required": [ "voting_module_token" ], "properties": { "voting_module_token": { "type": "object", "required": [ "token_type" ], "properties": { "token_type": { "$ref": "#/definitions/VotingModuleTokenType" } }, "additionalProperties": false } }, "additionalProperties": false } ] }, "ExecuteExt": { "oneOf": [ { "type": "object", "required": [ "reset_approver" ], "properties": { "reset_approver": { "type": "object", "additionalProperties": false } }, "additionalProperties": false } ] }, "Expiration": { "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", "oneOf": [ { "description": "AtHeight will expire when `env.block.height` >= height", "type": "object", "required": [ "at_height" ], "properties": { "at_height": { "type": "integer", "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false }, { "description": "AtTime will expire when `env.block.time` >= time", "type": "object", "required": [ "at_time" ], "properties": { "at_time": { "$ref": "#/definitions/Timestamp" } }, "additionalProperties": false }, { "description": "Never will never expire. Used to express the empty variant", "type": "object", "required": [ "never" ], "properties": { "never": { "type": "object", "additionalProperties": false } }, "additionalProperties": false } ] }, "PreProposeSubmissionPolicy": { "description": "The policy configured in a pre-propose module that determines who can submit proposals. This is the preferred way to restrict proposal creation (as opposed to the ProposalCreationPolicy above) since pre-propose modules support other features, such as proposal deposits.", "oneOf": [ { "description": "Anyone may create proposals, except for those in the denylist.", "type": "object", "required": [ "anyone" ], "properties": { "anyone": { "type": "object", "required": [ "denylist" ], "properties": { "denylist": { "description": "Addresses that may not create proposals.", "type": "array", "items": { "$ref": "#/definitions/Addr" } } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Specific people may create proposals.", "type": "object", "required": [ "specific" ], "properties": { "specific": { "type": "object", "required": [ "allowlist", "dao_members", "denylist" ], "properties": { "allowlist": { "description": "Addresses that may create proposals.", "type": "array", "items": { "$ref": "#/definitions/Addr" } }, "dao_members": { "description": "Whether or not DAO members may create proposals.", "type": "boolean" }, "denylist": { "description": "Addresses that may not create proposals, overriding other settings.", "type": "array", "items": { "$ref": "#/definitions/Addr" } } }, "additionalProperties": false } }, "additionalProperties": false } ] }, "Status": { "oneOf": [ { "description": "The proposal is open for voting.", "type": "string", "enum": [ "open" ] }, { "description": "The proposal has been rejected.", "type": "string", "enum": [ "rejected" ] }, { "description": "The proposal has been passed but has not been executed.", "type": "string", "enum": [ "passed" ] }, { "description": "The proposal has been passed and executed.", "type": "string", "enum": [ "executed" ] }, { "description": "The proposal has failed or expired and has been closed. A proposal deposit refund has been issued if applicable.", "type": "string", "enum": [ "closed" ] }, { "description": "The proposal's execution failed.", "type": "string", "enum": [ "execution_failed" ] }, { "description": "The proposal is timelocked. Only the configured vetoer can execute or veto until the timelock expires.", "type": "object", "required": [ "veto_timelock" ], "properties": { "veto_timelock": { "type": "object", "required": [ "expiration" ], "properties": { "expiration": { "$ref": "#/definitions/Expiration" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "The proposal has been vetoed.", "type": "string", "enum": [ "vetoed" ] } ] }, "Timestamp": { "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", "allOf": [ { "$ref": "#/definitions/Uint64" } ] }, "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" }, "Uint64": { "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 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 `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", "type": "string" }, "UncheckedDenom": { "description": "A denom that has not been checked to confirm it points to a valid asset.", "oneOf": [ { "description": "A native (bank module) asset.", "type": "object", "required": [ "native" ], "properties": { "native": { "type": "string" } }, "additionalProperties": false }, { "description": "A cw20 asset.", "type": "object", "required": [ "cw20" ], "properties": { "cw20": { "type": "string" } }, "additionalProperties": false } ] }, "UncheckedDepositInfo": { "description": "Information about the deposit required to create a proposal.", "type": "object", "required": [ "amount", "denom", "refund_policy" ], "properties": { "amount": { "description": "The number of tokens that must be deposited to create a proposal. Must be a positive, non-zero number.", "allOf": [ { "$ref": "#/definitions/Uint128" } ] }, "denom": { "description": "The address of the token to be used for proposal deposits.", "allOf": [ { "$ref": "#/definitions/DepositToken" } ] }, "refund_policy": { "description": "The policy used for refunding deposits on proposal completion.", "allOf": [ { "$ref": "#/definitions/DepositRefundPolicy" } ] } }, "additionalProperties": false }, "VotingModuleTokenType": { "type": "string", "enum": [ "native", "cw20" ] } } }, "query": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "QueryMsg", "oneOf": [ { "description": "Gets the proposal module that this pre propose module is associated with. Returns `Addr`.", "type": "object", "required": [ "proposal_module" ], "properties": { "proposal_module": { "type": "object", "additionalProperties": false } }, "additionalProperties": false }, { "description": "Gets the DAO (dao-dao-core) module this contract is associated with. Returns `Addr`.", "type": "object", "required": [ "dao" ], "properties": { "dao": { "type": "object", "additionalProperties": false } }, "additionalProperties": false }, { "description": "Returns contract version info.", "type": "object", "required": [ "info" ], "properties": { "info": { "type": "object", "additionalProperties": false } }, "additionalProperties": false }, { "description": "Gets the module's configuration.", "type": "object", "required": [ "config" ], "properties": { "config": { "type": "object", "additionalProperties": false } }, "additionalProperties": false }, { "description": "Gets the deposit info for the proposal identified by PROPOSAL_ID.", "type": "object", "required": [ "deposit_info" ], "properties": { "deposit_info": { "type": "object", "required": [ "proposal_id" ], "properties": { "proposal_id": { "type": "integer", "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Returns whether or not the address can submit proposals.", "type": "object", "required": [ "can_propose" ], "properties": { "can_propose": { "type": "object", "required": [ "address" ], "properties": { "address": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Returns list of proposal submitted hooks.", "type": "object", "required": [ "proposal_submitted_hooks" ], "properties": { "proposal_submitted_hooks": { "type": "object", "additionalProperties": false } }, "additionalProperties": false }, { "description": "Extension for queries. The default implementation will do nothing if queried for will return `Binary::default()`.", "type": "object", "required": [ "query_extension" ], "properties": { "query_extension": { "type": "object", "required": [ "msg" ], "properties": { "msg": { "$ref": "#/definitions/QueryExt" } }, "additionalProperties": false } }, "additionalProperties": false } ], "definitions": { "QueryExt": { "oneOf": [ { "type": "object", "required": [ "pre_propose_approval_contract" ], "properties": { "pre_propose_approval_contract": { "type": "object", "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "pre_propose_approval_id_for_approver_proposal_id" ], "properties": { "pre_propose_approval_id_for_approver_proposal_id": { "type": "object", "required": [ "id" ], "properties": { "id": { "type": "integer", "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "approver_proposal_id_for_pre_propose_approval_id" ], "properties": { "approver_proposal_id_for_pre_propose_approval_id": { "type": "object", "required": [ "id" ], "properties": { "id": { "type": "integer", "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false } }, "additionalProperties": false } ] } } }, "migrate": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "MigrateMsg", "oneOf": [ { "type": "object", "required": [ "from_under_v250" ], "properties": { "from_under_v250": { "type": "object", "properties": { "policy": { "description": "Optionally set a new submission policy with more granular controls. If not set, the current policy will remain.", "anyOf": [ { "$ref": "#/definitions/PreProposeSubmissionPolicy" }, { "type": "null" } ] } }, "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "extension" ], "properties": { "extension": { "type": "object", "required": [ "msg" ], "properties": { "msg": { "$ref": "#/definitions/Empty" } }, "additionalProperties": false } }, "additionalProperties": false } ], "definitions": { "Addr": { "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", "type": "string" }, "Empty": { "description": "An empty struct that serves as a placeholder in different places, such as contracts that don't set a custom message.\n\nIt is designed to be expressable in correct JSON and JSON Schema but contains no meaningful data. Previously we used enums without cases, but those cannot represented as valid JSON Schema (https://github.com/CosmWasm/cosmwasm/issues/451)", "type": "object" }, "PreProposeSubmissionPolicy": { "description": "The policy configured in a pre-propose module that determines who can submit proposals. This is the preferred way to restrict proposal creation (as opposed to the ProposalCreationPolicy above) since pre-propose modules support other features, such as proposal deposits.", "oneOf": [ { "description": "Anyone may create proposals, except for those in the denylist.", "type": "object", "required": [ "anyone" ], "properties": { "anyone": { "type": "object", "required": [ "denylist" ], "properties": { "denylist": { "description": "Addresses that may not create proposals.", "type": "array", "items": { "$ref": "#/definitions/Addr" } } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Specific people may create proposals.", "type": "object", "required": [ "specific" ], "properties": { "specific": { "type": "object", "required": [ "allowlist", "dao_members", "denylist" ], "properties": { "allowlist": { "description": "Addresses that may create proposals.", "type": "array", "items": { "$ref": "#/definitions/Addr" } }, "dao_members": { "description": "Whether or not DAO members may create proposals.", "type": "boolean" }, "denylist": { "description": "Addresses that may not create proposals, overriding other settings.", "type": "array", "items": { "$ref": "#/definitions/Addr" } } }, "additionalProperties": false } }, "additionalProperties": false } ] } } }, "sudo": null, "responses": { "can_propose": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "Boolean", "type": "boolean" }, "config": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "Config", "type": "object", "required": [ "submission_policy" ], "properties": { "deposit_info": { "description": "Information about the deposit required to create a proposal. If `None`, no deposit is required.", "anyOf": [ { "$ref": "#/definitions/CheckedDepositInfo" }, { "type": "null" } ] }, "submission_policy": { "description": "The policy dictating who is allowed to submit proposals.", "allOf": [ { "$ref": "#/definitions/PreProposeSubmissionPolicy" } ] } }, "additionalProperties": false, "definitions": { "Addr": { "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", "type": "string" }, "CheckedDenom": { "description": "A denom that has been checked to point to a valid asset. This enum should never be constructed literally and should always be built by calling `into_checked` on an `UncheckedDenom` instance.", "oneOf": [ { "description": "A native (bank module) asset.", "type": "object", "required": [ "native" ], "properties": { "native": { "type": "string" } }, "additionalProperties": false }, { "description": "A cw20 asset.", "type": "object", "required": [ "cw20" ], "properties": { "cw20": { "$ref": "#/definitions/Addr" } }, "additionalProperties": false } ] }, "CheckedDepositInfo": { "description": "Counterpart to the `DepositInfo` struct which has been processed. This type should never be constructed literally and should always by built by calling `into_checked` on a `DepositInfo` instance.", "type": "object", "required": [ "amount", "denom", "refund_policy" ], "properties": { "amount": { "description": "The number of tokens that must be deposited to create a proposal. This is validated to be non-zero if this struct is constructed by converted via the `into_checked` method on `DepositInfo`.", "allOf": [ { "$ref": "#/definitions/Uint128" } ] }, "denom": { "description": "The address of the cw20 token to be used for proposal deposits.", "allOf": [ { "$ref": "#/definitions/CheckedDenom" } ] }, "refund_policy": { "description": "The policy used for refunding proposal deposits.", "allOf": [ { "$ref": "#/definitions/DepositRefundPolicy" } ] } }, "additionalProperties": false }, "DepositRefundPolicy": { "oneOf": [ { "description": "Deposits should always be refunded.", "type": "string", "enum": [ "always" ] }, { "description": "Deposits should only be refunded for passed proposals.", "type": "string", "enum": [ "only_passed" ] }, { "description": "Deposits should never be refunded.", "type": "string", "enum": [ "never" ] } ] }, "PreProposeSubmissionPolicy": { "description": "The policy configured in a pre-propose module that determines who can submit proposals. This is the preferred way to restrict proposal creation (as opposed to the ProposalCreationPolicy above) since pre-propose modules support other features, such as proposal deposits.", "oneOf": [ { "description": "Anyone may create proposals, except for those in the denylist.", "type": "object", "required": [ "anyone" ], "properties": { "anyone": { "type": "object", "required": [ "denylist" ], "properties": { "denylist": { "description": "Addresses that may not create proposals.", "type": "array", "items": { "$ref": "#/definitions/Addr" } } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Specific people may create proposals.", "type": "object", "required": [ "specific" ], "properties": { "specific": { "type": "object", "required": [ "allowlist", "dao_members", "denylist" ], "properties": { "allowlist": { "description": "Addresses that may create proposals.", "type": "array", "items": { "$ref": "#/definitions/Addr" } }, "dao_members": { "description": "Whether or not DAO members may create proposals.", "type": "boolean" }, "denylist": { "description": "Addresses that may not create proposals, overriding other settings.", "type": "array", "items": { "$ref": "#/definitions/Addr" } } }, "additionalProperties": false } }, "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" } } }, "dao": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "Addr", "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", "type": "string" }, "deposit_info": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "DepositInfoResponse", "type": "object", "required": [ "proposer" ], "properties": { "deposit_info": { "description": "The deposit that has been paid for the specified proposal.", "anyOf": [ { "$ref": "#/definitions/CheckedDepositInfo" }, { "type": "null" } ] }, "proposer": { "description": "The address that created the proposal.", "allOf": [ { "$ref": "#/definitions/Addr" } ] } }, "additionalProperties": false, "definitions": { "Addr": { "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", "type": "string" }, "CheckedDenom": { "description": "A denom that has been checked to point to a valid asset. This enum should never be constructed literally and should always be built by calling `into_checked` on an `UncheckedDenom` instance.", "oneOf": [ { "description": "A native (bank module) asset.", "type": "object", "required": [ "native" ], "properties": { "native": { "type": "string" } }, "additionalProperties": false }, { "description": "A cw20 asset.", "type": "object", "required": [ "cw20" ], "properties": { "cw20": { "$ref": "#/definitions/Addr" } }, "additionalProperties": false } ] }, "CheckedDepositInfo": { "description": "Counterpart to the `DepositInfo` struct which has been processed. This type should never be constructed literally and should always by built by calling `into_checked` on a `DepositInfo` instance.", "type": "object", "required": [ "amount", "denom", "refund_policy" ], "properties": { "amount": { "description": "The number of tokens that must be deposited to create a proposal. This is validated to be non-zero if this struct is constructed by converted via the `into_checked` method on `DepositInfo`.", "allOf": [ { "$ref": "#/definitions/Uint128" } ] }, "denom": { "description": "The address of the cw20 token to be used for proposal deposits.", "allOf": [ { "$ref": "#/definitions/CheckedDenom" } ] }, "refund_policy": { "description": "The policy used for refunding proposal deposits.", "allOf": [ { "$ref": "#/definitions/DepositRefundPolicy" } ] } }, "additionalProperties": false }, "DepositRefundPolicy": { "oneOf": [ { "description": "Deposits should always be refunded.", "type": "string", "enum": [ "always" ] }, { "description": "Deposits should only be refunded for passed proposals.", "type": "string", "enum": [ "only_passed" ] }, { "description": "Deposits should never be refunded.", "type": "string", "enum": [ "never" ] } ] }, "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" } } }, "info": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "InfoResponse", "type": "object", "required": [ "info" ], "properties": { "info": { "$ref": "#/definitions/ContractVersion" } }, "additionalProperties": false, "definitions": { "ContractVersion": { "type": "object", "required": [ "contract", "version" ], "properties": { "contract": { "description": "contract is the crate name of the implementing contract, eg. `crate:cw20-base` we will use other prefixes for other languages, and their standard global namespacing", "type": "string" }, "version": { "description": "version is any string that this implementation knows. It may be simple counter \"1\", \"2\". or semantic version on release tags \"v0.7.0\", or some custom feature flag list. the only code that needs to understand the version parsing is code that knows how to migrate from the given contract (and is tied to it's implementation somehow)", "type": "string" } }, "additionalProperties": false } } }, "proposal_module": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "Addr", "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", "type": "string" }, "proposal_submitted_hooks": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "HooksResponse", "type": "object", "required": [ "hooks" ], "properties": { "hooks": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false }, "query_extension": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "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" } } }