{ "contract_name": "cw20-wrap", "contract_version": "1.0.0", "idl_version": "1.0.0", "instantiate": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "InstantiateMsg", "type": "object", "required": [ "decimals", "name", "native_coin", "symbol" ], "properties": { "decimals": { "type": "integer", "format": "uint8", "minimum": 0.0 }, "name": { "type": "string" }, "native_coin": { "description": "native coin to wrap", "type": "string" }, "symbol": { "type": "string" } }, "additionalProperties": false }, "execute": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ExecuteMsg", "oneOf": [ { "description": "Deposit token and get wrapped cw20 token", "type": "object", "required": [ "deposit" ], "properties": { "deposit": { "type": "object", "additionalProperties": false } }, "additionalProperties": false }, { "description": "Withdraw your wrapped token previous allowance", "type": "object", "required": [ "withdraw" ], "properties": { "withdraw": { "type": "object", "required": [ "amount" ], "properties": { "amount": { "$ref": "#/definitions/Uint128" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "CW20. Transfer is a base message to move tokens to another account without triggering actions", "type": "object", "required": [ "transfer" ], "properties": { "transfer": { "type": "object", "required": [ "amount", "recipient" ], "properties": { "amount": { "$ref": "#/definitions/Uint128" }, "recipient": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "CW20. Burn is a base message to destroy tokens forever", "type": "object", "required": [ "burn" ], "properties": { "burn": { "type": "object", "required": [ "amount" ], "properties": { "amount": { "$ref": "#/definitions/Uint128" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "CW20. Send is a base message to transfer tokens to a contract and trigger an action on the receiving contract.", "type": "object", "required": [ "send" ], "properties": { "send": { "type": "object", "required": [ "amount", "contract", "msg" ], "properties": { "amount": { "$ref": "#/definitions/Uint128" }, "contract": { "type": "string" }, "msg": { "$ref": "#/definitions/Binary" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "CW20 \"approval\" extension. Allows spender to access an additional amount tokens from the owner's (env.sender) account. If expires is Some(), overwrites current allowance expiration with this one.", "type": "object", "required": [ "increase_allowance" ], "properties": { "increase_allowance": { "type": "object", "required": [ "amount", "spender" ], "properties": { "amount": { "$ref": "#/definitions/Uint128" }, "expires": { "anyOf": [ { "$ref": "#/definitions/Expiration" }, { "type": "null" } ] }, "spender": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "CW20 \"approval\" extension. Lowers the spender's access of tokens from the owner's (env.sender) account by amount. If expires is Some(), overwrites current allowance expiration with this one.", "type": "object", "required": [ "decrease_allowance" ], "properties": { "decrease_allowance": { "type": "object", "required": [ "amount", "spender" ], "properties": { "amount": { "$ref": "#/definitions/Uint128" }, "expires": { "anyOf": [ { "$ref": "#/definitions/Expiration" }, { "type": "null" } ] }, "spender": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "CW20 \"approval\" extension. Transfers amount tokens from owner -> recipient if `env.sender` has sufficient pre-approval.", "type": "object", "required": [ "transfer_from" ], "properties": { "transfer_from": { "type": "object", "required": [ "amount", "owner", "recipient" ], "properties": { "amount": { "$ref": "#/definitions/Uint128" }, "owner": { "type": "string" }, "recipient": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "CW20 \"approval\" extension. Sends amount tokens from owner -> contract if `env.sender` has sufficient pre-approval.", "type": "object", "required": [ "send_from" ], "properties": { "send_from": { "type": "object", "required": [ "amount", "contract", "msg", "owner" ], "properties": { "amount": { "$ref": "#/definitions/Uint128" }, "contract": { "type": "string" }, "msg": { "$ref": "#/definitions/Binary" }, "owner": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "CW20 \"approval\" extension. Destroys tokens forever", "type": "object", "required": [ "burn_from" ], "properties": { "burn_from": { "type": "object", "required": [ "amount", "owner" ], "properties": { "amount": { "$ref": "#/definitions/Uint128" }, "owner": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false } ], "definitions": { "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" }, "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" } } }, "query": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "QueryMsg", "oneOf": [ { "description": "CW20. Returns the current balance of the given address, 0 if unset.", "type": "object", "required": [ "balance" ], "properties": { "balance": { "type": "object", "required": [ "address" ], "properties": { "address": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "CW20. Returns metadata on the contract - name, decimals, supply, etc.", "type": "object", "required": [ "token_info" ], "properties": { "token_info": { "type": "object", "additionalProperties": false } }, "additionalProperties": false }, { "description": "CW20. Only with \"mintable\" extension. Returns who can mint and how much.", "type": "object", "required": [ "minter" ], "properties": { "minter": { "type": "object", "additionalProperties": false } }, "additionalProperties": false }, { "description": "CW20 \"allowance\" extension. Returns how much spender can use from owner account, 0 if unset.", "type": "object", "required": [ "allowance" ], "properties": { "allowance": { "type": "object", "required": [ "owner", "spender" ], "properties": { "owner": { "type": "string" }, "spender": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "CW20. Only with \"enumerable\" extension (and \"allowances\") Returns all allowances this owner has approved. Supports pagination.", "type": "object", "required": [ "all_allowances" ], "properties": { "all_allowances": { "type": "object", "required": [ "owner" ], "properties": { "limit": { "type": [ "integer", "null" ], "format": "uint32", "minimum": 0.0 }, "owner": { "type": "string" }, "start_after": { "type": [ "string", "null" ] } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "CW20. Only with \"enumerable\" extension Returns all accounts that have balances. Supports pagination.", "type": "object", "required": [ "all_accounts" ], "properties": { "all_accounts": { "type": "object", "properties": { "limit": { "type": [ "integer", "null" ], "format": "uint32", "minimum": 0.0 }, "start_after": { "type": [ "string", "null" ] } }, "additionalProperties": false } }, "additionalProperties": false } ] }, "migrate": null, "sudo": null, "responses": { "all_accounts": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "AllAccountsResponse", "type": "object", "required": [ "accounts" ], "properties": { "accounts": { "type": "array", "items": { "type": "string" } } } }, "all_allowances": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "AllAllowancesResponse", "type": "object", "required": [ "allowances" ], "properties": { "allowances": { "type": "array", "items": { "$ref": "#/definitions/AllowanceInfo" } } }, "definitions": { "AllowanceInfo": { "type": "object", "required": [ "allowance", "expires", "spender" ], "properties": { "allowance": { "$ref": "#/definitions/Uint128" }, "expires": { "$ref": "#/definitions/Expiration" }, "spender": { "type": "string" } }, "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" } } }, "allowance": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "AllowanceResponse", "type": "object", "required": [ "allowance", "expires" ], "properties": { "allowance": { "$ref": "#/definitions/Uint128" }, "expires": { "$ref": "#/definitions/Expiration" } }, "definitions": { "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" } } }, "balance": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "BalanceResponse", "type": "object", "required": [ "balance" ], "properties": { "balance": { "$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" } } }, "minter": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "MinterResponse", "type": "object", "required": [ "minter" ], "properties": { "cap": { "description": "cap is a hard cap on total supply that can be achieved by minting. Note that this refers to total_supply. If None, there is unlimited cap.", "anyOf": [ { "$ref": "#/definitions/Uint128" }, { "type": "null" } ] }, "minter": { "type": "string" } }, "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" } } }, "token_info": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "TokenInfoResponse", "type": "object", "required": [ "decimals", "name", "symbol", "total_supply" ], "properties": { "decimals": { "type": "integer", "format": "uint8", "minimum": 0.0 }, "name": { "type": "string" }, "symbol": { "type": "string" }, "total_supply": { "$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" } } } } }