{ "contract_name": "dao-voting-token-staked", "contract_version": "2.6.0", "idl_version": "1.0.0", "instantiate": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "InstantiateMsg", "type": "object", "required": [ "token_info" ], "properties": { "active_threshold": { "description": "The number or percentage of tokens that must be staked for the DAO to be active", "anyOf": [ { "$ref": "#/definitions/ActiveThreshold" }, { "type": "null" } ] }, "token_info": { "description": "New or existing native token to use for voting power.", "allOf": [ { "$ref": "#/definitions/TokenInfo" } ] }, "unstaking_duration": { "description": "How long until the tokens become liquid again", "anyOf": [ { "$ref": "#/definitions/Duration" }, { "type": "null" } ] } }, "additionalProperties": false, "definitions": { "ActiveThreshold": { "description": "The threshold of tokens that must be staked in order for this voting module to be active. If this is not reached, this module will response to `is_active` queries with false and proposal modules which respect active thresholds will not allow the creation of proposals.", "oneOf": [ { "description": "The absolute number of tokens that must be staked for the module to be active.", "type": "object", "required": [ "absolute_count" ], "properties": { "absolute_count": { "type": "object", "required": [ "count" ], "properties": { "count": { "$ref": "#/definitions/Uint128" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "The percentage of tokens that must be staked for the module to be active. Computed as `staked / total_supply`.", "type": "object", "required": [ "percentage" ], "properties": { "percentage": { "type": "object", "required": [ "percent" ], "properties": { "percent": { "$ref": "#/definitions/Decimal" } }, "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" }, "Decimal": { "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", "type": "string" }, "DenomUnit": { "description": "DenomUnit represents a struct that describes a given denomination unit of the basic token.", "type": "object", "required": [ "aliases", "denom", "exponent" ], "properties": { "aliases": { "description": "aliases is a list of string aliases for the given denom", "type": "array", "items": { "type": "string" } }, "denom": { "description": "denom represents the string name of the given denom unit (e.g uatom).", "type": "string" }, "exponent": { "description": "exponent represents power of 10 exponent that one must raise the base_denom to in order to equal the given DenomUnit's denom 1 denom = 1^exponent base_denom (e.g. with a base_denom of uatom, one can create a DenomUnit of 'atom' with exponent = 6, thus: 1 atom = 10^6 uatom).", "type": "integer", "format": "uint32", "minimum": 0.0 } } }, "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 } ] }, "InitialBalance": { "type": "object", "required": [ "address", "amount" ], "properties": { "address": { "type": "string" }, "amount": { "$ref": "#/definitions/Uint128" } }, "additionalProperties": false }, "NewDenomMetadata": { "type": "object", "required": [ "description", "display", "name", "symbol" ], "properties": { "additional_denom_units": { "description": "Used define additional units of the token (e.g. \"tiger\") These must have an exponent larger than 0.", "type": [ "array", "null" ], "items": { "$ref": "#/definitions/DenomUnit" } }, "description": { "description": "The description of the token", "type": "string" }, "display": { "description": "The unit commonly used in communication (e.g. \"cat\")", "type": "string" }, "name": { "description": "The name of the token (e.g. \"Cat Coin\")", "type": "string" }, "symbol": { "description": "The ticker symbol of the token (e.g. \"CAT\")", "type": "string" } }, "additionalProperties": false }, "NewTokenInfo": { "type": "object", "required": [ "initial_balances", "subdenom", "token_issuer_code_id" ], "properties": { "initial_balances": { "description": "The initial balances to set for the token, cannot be empty.", "type": "array", "items": { "$ref": "#/definitions/InitialBalance" } }, "initial_dao_balance": { "description": "Optional balance to mint for the DAO.", "anyOf": [ { "$ref": "#/definitions/Uint128" }, { "type": "null" } ] }, "metadata": { "description": "Optional metadata for the token, this can additionally be set later.", "anyOf": [ { "$ref": "#/definitions/NewDenomMetadata" }, { "type": "null" } ] }, "subdenom": { "description": "The subdenom of the token to create, will also be used as an alias for the denom. The Token Factory denom will have the format of factory/{contract_address}/{subdenom}", "type": "string" }, "token_issuer_code_id": { "description": "The code id of the cw-tokenfactory-issuer contract", "type": "integer", "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false }, "TokenInfo": { "oneOf": [ { "description": "Uses an existing Token Factory token and creates a new issuer contract. Full setup, such as transferring ownership or setting up MsgSetBeforeSendHook, must be done manually.", "type": "object", "required": [ "existing" ], "properties": { "existing": { "type": "object", "required": [ "denom" ], "properties": { "denom": { "description": "Token factory denom", "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Creates a new Token Factory token via the issue contract with the DAO automatically setup as admin and owner.", "type": "object", "required": [ "new" ], "properties": { "new": { "$ref": "#/definitions/NewTokenInfo" } }, "additionalProperties": false }, { "description": "Uses a factory contract that must return the denom, optionally a Token Contract address. The binary must serialize to a `WasmMsg::Execute` message. Validation happens in the factory contract itself, so be sure to use a trusted factory contract.", "type": "object", "required": [ "factory" ], "properties": { "factory": { "$ref": "#/definitions/Binary" } }, "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" } } }, "execute": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ExecuteMsg", "oneOf": [ { "description": "Stakes tokens with the contract to get voting power in the DAO", "type": "object", "required": [ "stake" ], "properties": { "stake": { "type": "object", "additionalProperties": false } }, "additionalProperties": false }, { "description": "Unstakes tokens so that they begin unbonding", "type": "object", "required": [ "unstake" ], "properties": { "unstake": { "type": "object", "required": [ "amount" ], "properties": { "amount": { "$ref": "#/definitions/Uint128" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Updates the contract configuration", "type": "object", "required": [ "update_config" ], "properties": { "update_config": { "type": "object", "properties": { "duration": { "anyOf": [ { "$ref": "#/definitions/Duration" }, { "type": "null" } ] } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Claims unstaked tokens that have completed the unbonding period", "type": "object", "required": [ "claim" ], "properties": { "claim": { "type": "object", "additionalProperties": false } }, "additionalProperties": false }, { "description": "Sets the active threshold to a new value. Only the instantiator of this contract (a DAO most likely) may call this method.", "type": "object", "required": [ "update_active_threshold" ], "properties": { "update_active_threshold": { "type": "object", "properties": { "new_threshold": { "anyOf": [ { "$ref": "#/definitions/ActiveThreshold" }, { "type": "null" } ] } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Adds a hook that fires on staking / unstaking", "type": "object", "required": [ "add_hook" ], "properties": { "add_hook": { "type": "object", "required": [ "addr" ], "properties": { "addr": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Removes a hook that fires on staking / unstaking", "type": "object", "required": [ "remove_hook" ], "properties": { "remove_hook": { "type": "object", "required": [ "addr" ], "properties": { "addr": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false } ], "definitions": { "ActiveThreshold": { "description": "The threshold of tokens that must be staked in order for this voting module to be active. If this is not reached, this module will response to `is_active` queries with false and proposal modules which respect active thresholds will not allow the creation of proposals.", "oneOf": [ { "description": "The absolute number of tokens that must be staked for the module to be active.", "type": "object", "required": [ "absolute_count" ], "properties": { "absolute_count": { "type": "object", "required": [ "count" ], "properties": { "count": { "$ref": "#/definitions/Uint128" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "The percentage of tokens that must be staked for the module to be active. Computed as `staked / total_supply`.", "type": "object", "required": [ "percentage" ], "properties": { "percentage": { "type": "object", "required": [ "percent" ], "properties": { "percent": { "$ref": "#/definitions/Decimal" } }, "additionalProperties": false } }, "additionalProperties": false } ] }, "Decimal": { "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", "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 } ] }, "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" } } }, "query": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "QueryMsg", "oneOf": [ { "type": "object", "required": [ "get_config" ], "properties": { "get_config": { "type": "object", "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "claims" ], "properties": { "claims": { "type": "object", "required": [ "address" ], "properties": { "address": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "list_stakers" ], "properties": { "list_stakers": { "type": "object", "properties": { "limit": { "type": [ "integer", "null" ], "format": "uint32", "minimum": 0.0 }, "start_after": { "type": [ "string", "null" ] } }, "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "active_threshold" ], "properties": { "active_threshold": { "type": "object", "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "get_hooks" ], "properties": { "get_hooks": { "type": "object", "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "token_contract" ], "properties": { "token_contract": { "type": "object", "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "denom" ], "properties": { "denom": { "type": "object", "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "is_active" ], "properties": { "is_active": { "type": "object", "additionalProperties": false } }, "additionalProperties": false }, { "description": "Returns the voting power for an address at a given height.", "type": "object", "required": [ "voting_power_at_height" ], "properties": { "voting_power_at_height": { "type": "object", "required": [ "address" ], "properties": { "address": { "type": "string" }, "height": { "type": [ "integer", "null" ], "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Returns the total voting power at a given block heigh.", "type": "object", "required": [ "total_power_at_height" ], "properties": { "total_power_at_height": { "type": "object", "properties": { "height": { "type": [ "integer", "null" ], "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Returns the address of the DAO this module belongs to.", "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 } ] }, "migrate": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "MigrateMsg", "type": "object", "additionalProperties": false }, "sudo": null, "responses": { "active_threshold": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ActiveThresholdResponse", "type": "object", "properties": { "active_threshold": { "anyOf": [ { "$ref": "#/definitions/ActiveThreshold" }, { "type": "null" } ] } }, "additionalProperties": false, "definitions": { "ActiveThreshold": { "description": "The threshold of tokens that must be staked in order for this voting module to be active. If this is not reached, this module will response to `is_active` queries with false and proposal modules which respect active thresholds will not allow the creation of proposals.", "oneOf": [ { "description": "The absolute number of tokens that must be staked for the module to be active.", "type": "object", "required": [ "absolute_count" ], "properties": { "absolute_count": { "type": "object", "required": [ "count" ], "properties": { "count": { "$ref": "#/definitions/Uint128" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "The percentage of tokens that must be staked for the module to be active. Computed as `staked / total_supply`.", "type": "object", "required": [ "percentage" ], "properties": { "percentage": { "type": "object", "required": [ "percent" ], "properties": { "percent": { "$ref": "#/definitions/Decimal" } }, "additionalProperties": false } }, "additionalProperties": false } ] }, "Decimal": { "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", "type": "string" }, "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" } } }, "claims": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ClaimsResponse", "type": "object", "required": [ "claims" ], "properties": { "claims": { "type": "array", "items": { "$ref": "#/definitions/Claim" } } }, "additionalProperties": false, "definitions": { "Claim": { "type": "object", "required": [ "amount", "release_at" ], "properties": { "amount": { "$ref": "#/definitions/Uint128" }, "release_at": { "$ref": "#/definitions/Expiration" } }, "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 } ] }, "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" } } }, "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" }, "denom": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "DenomResponse", "type": "object", "required": [ "denom" ], "properties": { "denom": { "type": "string" } }, "additionalProperties": false }, "get_config": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "Config", "type": "object", "properties": { "unstaking_duration": { "anyOf": [ { "$ref": "#/definitions/Duration" }, { "type": "null" } ] } }, "additionalProperties": false, "definitions": { "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 } ] } } }, "get_hooks": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "GetHooksResponse", "type": "object", "required": [ "hooks" ], "properties": { "hooks": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false }, "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 } } }, "is_active": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "Boolean", "type": "boolean" }, "list_stakers": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ListStakersResponse", "type": "object", "required": [ "stakers" ], "properties": { "stakers": { "type": "array", "items": { "$ref": "#/definitions/StakerBalanceResponse" } } }, "additionalProperties": false, "definitions": { "StakerBalanceResponse": { "type": "object", "required": [ "address", "balance" ], "properties": { "address": { "type": "string" }, "balance": { "$ref": "#/definitions/Uint128" } }, "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" } } }, "token_contract": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "Nullable_Addr", "anyOf": [ { "$ref": "#/definitions/Addr" }, { "type": "null" } ], "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" } } }, "total_power_at_height": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "TotalPowerAtHeightResponse", "type": "object", "required": [ "height", "power" ], "properties": { "height": { "type": "integer", "format": "uint64", "minimum": 0.0 }, "power": { "$ref": "#/definitions/Uint128" } }, "additionalProperties": false, "definitions": { "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" } } }, "voting_power_at_height": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "VotingPowerAtHeightResponse", "type": "object", "required": [ "height", "power" ], "properties": { "height": { "type": "integer", "format": "uint64", "minimum": 0.0 }, "power": { "$ref": "#/definitions/Uint128" } }, "additionalProperties": false, "definitions": { "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" } } } } }