{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "ContractState", "description": "ContractState is the state of the IBC application.", "type": "object", "required": [ "admin" ], "properties": { "admin": { "description": "The address of the admin of the IBC application.", "allOf": [ { "$ref": "#/definitions/Addr" } ] }, "allow_channel_open_init": { "description": "If true, the IBC application will accept `MsgChannelOpenInit` messages.", "default": false, "type": "boolean" }, "ica_info": { "description": "The Interchain Account (ICA) info needed to send packets. This is set during the handshake.", "anyOf": [ { "$ref": "#/definitions/IcaInfo" }, { "type": "null" } ] } }, "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" }, "IcaInfo": { "description": "IcaInfo is the ICA address and channel ID.", "type": "object", "required": [ "channel_id", "encoding", "ica_address" ], "properties": { "channel_id": { "type": "string" }, "encoding": { "$ref": "#/definitions/TxEncoding" }, "ica_address": { "type": "string" } }, "additionalProperties": false }, "TxEncoding": { "description": "Encoding is the encoding of the transactions sent to the ICA host.", "oneOf": [ { "description": "Protobuf is the protobuf serialization of the CosmosSDK's Any.", "type": "string", "enum": [ "proto3" ] }, { "description": "Proto3Json is the json serialization of the CosmosSDK's Any.", "type": "string", "enum": [ "proto3json" ] } ] } } }