diff --git a/abstract/account/0.26.0/abstract-account.json b/abstract/account/0.26.0/abstract-account.json new file mode 100644 index 0000000..36fc6b9 --- /dev/null +++ b/abstract/account/0.26.0/abstract-account.json @@ -0,0 +1,3381 @@ +{ + "contract_name": "abstract-account", + "contract_version": "0.26.0", + "idl_version": "1.0.0", + "instantiate": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InstantiateMsg", + "description": "Account Instantiate Msg https://github.com/burnt-labs/contracts/blob/main/contracts/account/src/msg.rs", + "type": "object", + "required": [ + "code_id", + "owner" + ], + "properties": { + "account_id": { + "description": "Optionally specify an account-id for this account. If provided must be between (u32::MAX/2)..u32::MAX range.", + "anyOf": [ + { + "$ref": "#/definitions/AccountId" + }, + { + "type": "null" + } + ] + }, + "authenticator": { + "description": "Optional authenticator for use with the `abstractaccount` cosmos-sdk module.", + "anyOf": [ + { + "$ref": "#/definitions/AddAuthenticator" + }, + { + "type": "null" + } + ] + }, + "code_id": { + "description": "Code id of the account", + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "description": { + "description": "Optional account description.", + "type": [ + "string", + "null" + ] + }, + "install_modules": { + "description": "Optionally install modules on instantiation. Any fees will be deducted from the account and should be provided on instantiation.", + "default": [], + "type": "array", + "items": { + "$ref": "#/definitions/ModuleInstallConfig" + } + }, + "link": { + "description": "Optional account link.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Optional account name.", + "type": [ + "string", + "null" + ] + }, + "namespace": { + "description": "Optionally claim a namespace on instantiation. Any fees will be deducted from the account and should be provided on instantiation.", + "type": [ + "string", + "null" + ] + }, + "owner": { + "description": "The ownership structure of the Account.", + "allOf": [ + { + "$ref": "#/definitions/GovernanceDetails_for_String" + } + ] + } + }, + "additionalProperties": false, + "definitions": { + "AccountId": { + "description": "Unique identifier for an account. On each chain this is unique.", + "type": "object", + "required": [ + "seq", + "trace" + ], + "properties": { + "seq": { + "description": "Unique identifier for the accounts create on a local chain. Is reused when creating an interchain account.", + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "trace": { + "description": "Sequence of the chain that triggered the IBC account creation `AccountTrace::Local` if the account was created locally Example: Account created on Juno which has an abstract interchain account on Osmosis, which in turn creates an interchain account on Terra -> `AccountTrace::Remote(vec![\"juno\", \"osmosis\"])`", + "allOf": [ + { + "$ref": "#/definitions/AccountTrace" + } + ] + } + }, + "additionalProperties": false + }, + "AccountTrace": { + "description": "The identifier of chain that triggered the account creation\n\nNote that the serialization to string and to Cw-storage-plus keys is different\n\nFor String, `AccountTrace::Remote(vec![\"neutron\", \"osmosis\"])` will be serialized as `osmosis>neutron`\n\nFor cw-storage-plus-key, `AccountTrace::Remote(vec![\"neutron\", \"osmosis\"])` will be serialized as `remote:[\"neutron\", \"osmosis\", \"\", \"\", \"\", \"\"]`", + "oneOf": [ + { + "type": "string", + "enum": [ + "local" + ] + }, + { + "type": "object", + "required": [ + "remote" + ], + "properties": { + "remote": { + "type": "array", + "items": { + "$ref": "#/definitions/TruncatedChainId" + } + } + }, + "additionalProperties": false + } + ] + }, + "AddAuthenticator": { + "oneOf": [ + { + "type": "object", + "required": [ + "Secp256K1" + ], + "properties": { + "Secp256K1": { + "type": "object", + "required": [ + "id", + "pubkey", + "signature" + ], + "properties": { + "id": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "pubkey": { + "$ref": "#/definitions/Binary" + }, + "signature": { + "$ref": "#/definitions/Binary" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "Ed25519" + ], + "properties": { + "Ed25519": { + "type": "object", + "required": [ + "id", + "pubkey", + "signature" + ], + "properties": { + "id": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "pubkey": { + "$ref": "#/definitions/Binary" + }, + "signature": { + "$ref": "#/definitions/Binary" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "EthWallet" + ], + "properties": { + "EthWallet": { + "type": "object", + "required": [ + "address", + "id", + "signature" + ], + "properties": { + "address": { + "type": "string" + }, + "id": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "signature": { + "$ref": "#/definitions/Binary" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "Jwt" + ], + "properties": { + "Jwt": { + "type": "object", + "required": [ + "aud", + "id", + "sub", + "token" + ], + "properties": { + "aud": { + "type": "string" + }, + "id": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "sub": { + "type": "string" + }, + "token": { + "$ref": "#/definitions/Binary" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "Secp256R1" + ], + "properties": { + "Secp256R1": { + "type": "object", + "required": [ + "id", + "pubkey", + "signature" + ], + "properties": { + "id": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "pubkey": { + "$ref": "#/definitions/Binary" + }, + "signature": { + "$ref": "#/definitions/Binary" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "Passkey" + ], + "properties": { + "Passkey": { + "type": "object", + "required": [ + "credential", + "id", + "url" + ], + "properties": { + "credential": { + "$ref": "#/definitions/Binary" + }, + "id": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "url": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "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" + }, + "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" + }, + "GovernanceDetails_for_String": { + "description": "Governance types", + "oneOf": [ + { + "description": "A single address is admin", + "type": "object", + "required": [ + "monarchy" + ], + "properties": { + "monarchy": { + "type": "object", + "required": [ + "monarch" + ], + "properties": { + "monarch": { + "description": "The monarch's address", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Used when the account is a sub-account of another account.", + "type": "object", + "required": [ + "sub_account" + ], + "properties": { + "sub_account": { + "type": "object", + "required": [ + "account" + ], + "properties": { + "account": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "An external governance source. This could be a cw3 contract for instance The `governance_address` will be the admin of the Account.", + "type": "object", + "required": [ + "external" + ], + "properties": { + "external": { + "type": "object", + "required": [ + "governance_address", + "governance_type" + ], + "properties": { + "governance_address": { + "description": "The external contract address", + "type": "string" + }, + "governance_type": { + "description": "Governance type used for doing extra off-chain queries depending on the type.", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "This account is linked to an NFT collection. The owner of the specified token_id is the owner of the account", + "type": "object", + "required": [ + "n_f_t" + ], + "properties": { + "n_f_t": { + "type": "object", + "required": [ + "collection_addr", + "token_id" + ], + "properties": { + "collection_addr": { + "type": "string" + }, + "token_id": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Abstract account. Admin actions have to be sent through signature bit flag\n\nMore details: https://github.com/burnt-labs/abstract-account/blob/2c933a7b2a8dacc0ae5bf4344159a7d4ab080135/README.md", + "type": "object", + "required": [ + "abstract_account" + ], + "properties": { + "abstract_account": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "description": "Address of this abstract account", + "allOf": [ + { + "$ref": "#/definitions/Addr" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Renounced account This account no longer has an owner and cannot be used.", + "type": "object", + "required": [ + "renounced" + ], + "properties": { + "renounced": { + "type": "object", + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "ModuleInfo": { + "description": "Stores the namespace, name, and version of an Abstract module.", + "type": "object", + "required": [ + "name", + "namespace", + "version" + ], + "properties": { + "name": { + "description": "Name of the contract", + "type": "string" + }, + "namespace": { + "description": "Namespace of the module", + "allOf": [ + { + "$ref": "#/definitions/Namespace" + } + ] + }, + "version": { + "description": "Version of the module", + "allOf": [ + { + "$ref": "#/definitions/ModuleVersion" + } + ] + } + }, + "additionalProperties": false + }, + "ModuleInstallConfig": { + "description": "Module info and init message", + "type": "object", + "required": [ + "module" + ], + "properties": { + "init_msg": { + "anyOf": [ + { + "$ref": "#/definitions/Binary" + }, + { + "type": "null" + } + ] + }, + "module": { + "$ref": "#/definitions/ModuleInfo" + } + }, + "additionalProperties": false + }, + "ModuleVersion": { + "oneOf": [ + { + "type": "string", + "enum": [ + "latest" + ] + }, + { + "type": "object", + "required": [ + "version" + ], + "properties": { + "version": { + "type": "string" + } + }, + "additionalProperties": false + } + ] + }, + "Namespace": { + "description": "Represents an Abstract namespace for modules", + "type": "string" + }, + "TruncatedChainId": { + "description": "The name of a chain, aka the chain-id without the post-fix number. ex. `cosmoshub-4` -> `cosmoshub`, `juno-1` -> `juno`", + "type": "string" + } + } + }, + "execute": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ExecuteMsg", + "oneOf": [ + { + "description": "Executes the provided messages if sender is whitelisted", + "type": "object", + "required": [ + "execute" + ], + "properties": { + "execute": { + "type": "object", + "required": [ + "msgs" + ], + "properties": { + "msgs": { + "type": "array", + "items": { + "$ref": "#/definitions/CosmosMsg_for_Empty" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Execute a message and forward the Response data", + "type": "object", + "required": [ + "execute_with_data" + ], + "properties": { + "execute_with_data": { + "type": "object", + "required": [ + "msg" + ], + "properties": { + "msg": { + "$ref": "#/definitions/CosmosMsg_for_Empty" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Forward execution message to module", + "type": "object", + "required": [ + "execute_on_module" + ], + "properties": { + "execute_on_module": { + "type": "object", + "required": [ + "exec_msg", + "funds", + "module_id" + ], + "properties": { + "exec_msg": { + "$ref": "#/definitions/Binary" + }, + "funds": { + "description": "Funds attached from account to the module", + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "module_id": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Execute a Wasm Message with Account Admin privileges", + "type": "object", + "required": [ + "admin_execute" + ], + "properties": { + "admin_execute": { + "type": "object", + "required": [ + "addr", + "msg" + ], + "properties": { + "addr": { + "type": "string" + }, + "msg": { + "$ref": "#/definitions/Binary" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Forward execution message to module with Account Admin privileges", + "type": "object", + "required": [ + "admin_execute_on_module" + ], + "properties": { + "admin_execute_on_module": { + "type": "object", + "required": [ + "module_id", + "msg" + ], + "properties": { + "module_id": { + "type": "string" + }, + "msg": { + "$ref": "#/definitions/Binary" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Queries the Abstract Ica Client with the provided action query. Provides access to different ICA implementations for different ecosystems.", + "type": "object", + "required": [ + "ica_action" + ], + "properties": { + "ica_action": { + "type": "object", + "required": [ + "action_query_msg" + ], + "properties": { + "action_query_msg": { + "description": "Query of type `abstract-ica-client::msg::QueryMsg`", + "allOf": [ + { + "$ref": "#/definitions/Binary" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Update Abstract-specific configuration of the module. Only callable by the owner.", + "type": "object", + "required": [ + "update_internal_config" + ], + "properties": { + "update_internal_config": { + "$ref": "#/definitions/InternalConfigAction" + } + }, + "additionalProperties": false + }, + { + "description": "Install module using module factory, callable by Owner", + "type": "object", + "required": [ + "install_modules" + ], + "properties": { + "install_modules": { + "type": "object", + "required": [ + "modules" + ], + "properties": { + "modules": { + "type": "array", + "items": { + "$ref": "#/definitions/ModuleInstallConfig" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Uninstall a module given its ID.", + "type": "object", + "required": [ + "uninstall_module" + ], + "properties": { + "uninstall_module": { + "type": "object", + "required": [ + "module_id" + ], + "properties": { + "module_id": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Upgrade the module to a new version If module is `abstract::account` then the contract will do a self-migration. Self-migration is protected and only possible to the [`crate::objects::module_reference::ModuleReference::Account`] registered in Registry", + "type": "object", + "required": [ + "upgrade" + ], + "properties": { + "upgrade": { + "type": "object", + "required": [ + "modules" + ], + "properties": { + "modules": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/ModuleInfo" + }, + { + "anyOf": [ + { + "$ref": "#/definitions/Binary" + }, + { + "type": "null" + } + ] + } + ], + "maxItems": 2, + "minItems": 2 + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Creates a sub-account on the account", + "type": "object", + "required": [ + "create_sub_account" + ], + "properties": { + "create_sub_account": { + "type": "object", + "required": [ + "install_modules" + ], + "properties": { + "account_id": { + "description": "If `None`, will create a new local account without asserting account-id.\n\nWhen provided sequence in 0..2147483648 range: The tx will error When provided sequence in 2147483648..u32::MAX range: Signals use of unclaimed Account Id in this range. The tx will error if this account-id already claimed. Useful for instantiate2 address prediction.", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + }, + "description": { + "type": [ + "string", + "null" + ] + }, + "install_modules": { + "type": "array", + "items": { + "$ref": "#/definitions/ModuleInstallConfig" + } + }, + "link": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "namespace": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Update info", + "type": "object", + "required": [ + "update_info" + ], + "properties": { + "update_info": { + "type": "object", + "properties": { + "description": { + "type": [ + "string", + "null" + ] + }, + "link": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Update account statuses", + "type": "object", + "required": [ + "update_status" + ], + "properties": { + "update_status": { + "type": "object", + "properties": { + "is_suspended": { + "type": [ + "boolean", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Actions called by internal or external sub-accounts", + "type": "object", + "required": [ + "update_sub_account" + ], + "properties": { + "update_sub_account": { + "$ref": "#/definitions/UpdateSubAccountAction" + } + }, + "additionalProperties": false + }, + { + "description": "Update the contract's ownership. The `action` can propose transferring ownership to an account, accept a pending ownership transfer, or renounce the ownership of the account permanently.", + "type": "object", + "required": [ + "update_ownership" + ], + "properties": { + "update_ownership": { + "$ref": "#/definitions/GovAction" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "add_auth_method" + ], + "properties": { + "add_auth_method": { + "type": "object", + "required": [ + "add_authenticator" + ], + "properties": { + "add_authenticator": { + "$ref": "#/definitions/AddAuthenticator" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "remove_auth_method" + ], + "properties": { + "remove_auth_method": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "AddAuthenticator": { + "oneOf": [ + { + "type": "object", + "required": [ + "Secp256K1" + ], + "properties": { + "Secp256K1": { + "type": "object", + "required": [ + "id", + "pubkey", + "signature" + ], + "properties": { + "id": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "pubkey": { + "$ref": "#/definitions/Binary" + }, + "signature": { + "$ref": "#/definitions/Binary" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "Ed25519" + ], + "properties": { + "Ed25519": { + "type": "object", + "required": [ + "id", + "pubkey", + "signature" + ], + "properties": { + "id": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "pubkey": { + "$ref": "#/definitions/Binary" + }, + "signature": { + "$ref": "#/definitions/Binary" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "EthWallet" + ], + "properties": { + "EthWallet": { + "type": "object", + "required": [ + "address", + "id", + "signature" + ], + "properties": { + "address": { + "type": "string" + }, + "id": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "signature": { + "$ref": "#/definitions/Binary" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "Jwt" + ], + "properties": { + "Jwt": { + "type": "object", + "required": [ + "aud", + "id", + "sub", + "token" + ], + "properties": { + "aud": { + "type": "string" + }, + "id": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "sub": { + "type": "string" + }, + "token": { + "$ref": "#/definitions/Binary" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "Secp256R1" + ], + "properties": { + "Secp256R1": { + "type": "object", + "required": [ + "id", + "pubkey", + "signature" + ], + "properties": { + "id": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "pubkey": { + "$ref": "#/definitions/Binary" + }, + "signature": { + "$ref": "#/definitions/Binary" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "Passkey" + ], + "properties": { + "Passkey": { + "type": "object", + "required": [ + "credential", + "id", + "url" + ], + "properties": { + "credential": { + "$ref": "#/definitions/Binary" + }, + "id": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "url": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "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" + }, + "AnyMsg": { + "description": "A message encoded the same way as a protobuf [Any](https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/any.proto). This is the same structure as messages in `TxBody` from [ADR-020](https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-020-protobuf-transaction-encoding.md)", + "type": "object", + "required": [ + "type_url", + "value" + ], + "properties": { + "type_url": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/Binary" + } + }, + "additionalProperties": false + }, + "BankMsg": { + "description": "The message types of the bank module.\n\nSee https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/bank/v1beta1/tx.proto", + "oneOf": [ + { + "description": "Sends native tokens from the contract to the given address.\n\nThis is translated to a [MsgSend](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/bank/v1beta1/tx.proto#L19-L28). `from_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "send" + ], + "properties": { + "send": { + "type": "object", + "required": [ + "amount", + "to_address" + ], + "properties": { + "amount": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "to_address": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "This will burn the given coins from the contract's account. There is no Cosmos SDK message that performs this, but it can be done by calling the bank keeper. Important if a contract controls significant token supply that must be retired.", + "type": "object", + "required": [ + "burn" + ], + "properties": { + "burn": { + "type": "object", + "required": [ + "amount" + ], + "properties": { + "amount": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + } + }, + "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" + } + }, + "additionalProperties": false + }, + "CosmosMsg_for_Empty": { + "oneOf": [ + { + "type": "object", + "required": [ + "bank" + ], + "properties": { + "bank": { + "$ref": "#/definitions/BankMsg" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "custom" + ], + "properties": { + "custom": { + "$ref": "#/definitions/Empty" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "staking" + ], + "properties": { + "staking": { + "$ref": "#/definitions/StakingMsg" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "distribution" + ], + "properties": { + "distribution": { + "$ref": "#/definitions/DistributionMsg" + } + }, + "additionalProperties": false + }, + { + "description": "This is the same structure as messages in `TxBody` from [ADR-020](https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-020-protobuf-transaction-encoding.md)", + "deprecated": true, + "type": "object", + "required": [ + "stargate" + ], + "properties": { + "stargate": { + "type": "object", + "required": [ + "type_url", + "value" + ], + "properties": { + "type_url": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/Binary" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "`CosmosMsg::Any` is the replaces the \"stargate message\" – a message wrapped in a [protobuf Any](https://protobuf.dev/programming-guides/proto3/#any) that is suppored by the chain. It behaves the same as `CosmosMsg::Stargate` but has a better name and slightly improved syntax.\n\nThis is feature-gated at compile time with `cosmwasm_2_0` because a chain running CosmWasm < 2.0 cannot process this.", + "type": "object", + "required": [ + "any" + ], + "properties": { + "any": { + "$ref": "#/definitions/AnyMsg" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "ibc" + ], + "properties": { + "ibc": { + "$ref": "#/definitions/IbcMsg" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "wasm" + ], + "properties": { + "wasm": { + "$ref": "#/definitions/WasmMsg" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "gov" + ], + "properties": { + "gov": { + "$ref": "#/definitions/GovMsg" + } + }, + "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" + }, + "DistributionMsg": { + "description": "The message types of the distribution module.\n\nSee https://github.com/cosmos/cosmos-sdk/blob/v0.42.4/proto/cosmos/distribution/v1beta1/tx.proto", + "oneOf": [ + { + "description": "This is translated to a [MsgSetWithdrawAddress](https://github.com/cosmos/cosmos-sdk/blob/v0.42.4/proto/cosmos/distribution/v1beta1/tx.proto#L29-L37). `delegator_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "set_withdraw_address" + ], + "properties": { + "set_withdraw_address": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "description": "The `withdraw_address`", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "This is translated to a [[MsgWithdrawDelegatorReward](https://github.com/cosmos/cosmos-sdk/blob/v0.42.4/proto/cosmos/distribution/v1beta1/tx.proto#L42-L50). `delegator_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "withdraw_delegator_reward" + ], + "properties": { + "withdraw_delegator_reward": { + "type": "object", + "required": [ + "validator" + ], + "properties": { + "validator": { + "description": "The `validator_address`", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "This is translated to a [[MsgFundCommunityPool](https://github.com/cosmos/cosmos-sdk/blob/v0.42.4/proto/cosmos/distribution/v1beta1/tx.proto#LL69C1-L76C2). `depositor` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "fund_community_pool" + ], + "properties": { + "fund_community_pool": { + "type": "object", + "required": [ + "amount" + ], + "properties": { + "amount": { + "description": "The amount to spend", + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "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", + "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 + } + ] + }, + "GovAction": { + "description": "Actions that can be taken to alter the contract's governance ownership", + "oneOf": [ + { + "description": "Propose to transfer the contract's ownership to another account, optionally with an expiry time.\n\nCan only be called by the contract's current owner.\n\nAny existing pending ownership transfer is overwritten.", + "type": "object", + "required": [ + "transfer_ownership" + ], + "properties": { + "transfer_ownership": { + "type": "object", + "required": [ + "new_owner" + ], + "properties": { + "expiry": { + "anyOf": [ + { + "$ref": "#/definitions/Expiration" + }, + { + "type": "null" + } + ] + }, + "new_owner": { + "$ref": "#/definitions/GovernanceDetails_for_String" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Accept the pending ownership transfer.\n\nCan only be called by the pending owner.", + "type": "string", + "enum": [ + "accept_ownership" + ] + }, + { + "description": "Give up the contract's ownership and the possibility of appointing a new owner.\n\nCan only be invoked by the contract's current owner.\n\nAny existing pending ownership transfer is canceled.", + "type": "string", + "enum": [ + "renounce_ownership" + ] + } + ] + }, + "GovMsg": { + "description": "This message type allows the contract interact with the [x/gov] module in order to cast votes.\n\n[x/gov]: https://github.com/cosmos/cosmos-sdk/tree/v0.45.12/x/gov\n\n## Examples\n\nCast a simple vote:\n\n``` # use cosmwasm_std::{ # HexBinary, # Storage, Api, Querier, DepsMut, Deps, entry_point, Env, StdError, MessageInfo, # Response, QueryResponse, # }; # type ExecuteMsg = (); use cosmwasm_std::{GovMsg, VoteOption};\n\n#[entry_point] pub fn execute( deps: DepsMut, env: Env, info: MessageInfo, msg: ExecuteMsg, ) -> Result { // ... Ok(Response::new().add_message(GovMsg::Vote { proposal_id: 4, option: VoteOption::Yes, })) } ```\n\nCast a weighted vote:\n\n``` # use cosmwasm_std::{ # HexBinary, # Storage, Api, Querier, DepsMut, Deps, entry_point, Env, StdError, MessageInfo, # Response, QueryResponse, # }; # type ExecuteMsg = (); # #[cfg(feature = \"cosmwasm_1_2\")] use cosmwasm_std::{Decimal, GovMsg, VoteOption, WeightedVoteOption};\n\n# #[cfg(feature = \"cosmwasm_1_2\")] #[entry_point] pub fn execute( deps: DepsMut, env: Env, info: MessageInfo, msg: ExecuteMsg, ) -> Result { // ... Ok(Response::new().add_message(GovMsg::VoteWeighted { proposal_id: 4, options: vec![ WeightedVoteOption { option: VoteOption::Yes, weight: Decimal::percent(65), }, WeightedVoteOption { option: VoteOption::Abstain, weight: Decimal::percent(35), }, ], })) } ```", + "oneOf": [ + { + "description": "This maps directly to [MsgVote](https://github.com/cosmos/cosmos-sdk/blob/v0.42.5/proto/cosmos/gov/v1beta1/tx.proto#L46-L56) in the Cosmos SDK with voter set to the contract address.", + "type": "object", + "required": [ + "vote" + ], + "properties": { + "vote": { + "type": "object", + "required": [ + "option", + "proposal_id" + ], + "properties": { + "option": { + "description": "The vote option.\n\nThis used to be called \"vote\", but was changed for consistency with Cosmos SDK.", + "allOf": [ + { + "$ref": "#/definitions/VoteOption" + } + ] + }, + "proposal_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "This maps directly to [MsgVoteWeighted](https://github.com/cosmos/cosmos-sdk/blob/v0.45.8/proto/cosmos/gov/v1beta1/tx.proto#L66-L78) in the Cosmos SDK with voter set to the contract address.", + "type": "object", + "required": [ + "vote_weighted" + ], + "properties": { + "vote_weighted": { + "type": "object", + "required": [ + "options", + "proposal_id" + ], + "properties": { + "options": { + "type": "array", + "items": { + "$ref": "#/definitions/WeightedVoteOption" + } + }, + "proposal_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "GovernanceDetails_for_String": { + "description": "Governance types", + "oneOf": [ + { + "description": "A single address is admin", + "type": "object", + "required": [ + "monarchy" + ], + "properties": { + "monarchy": { + "type": "object", + "required": [ + "monarch" + ], + "properties": { + "monarch": { + "description": "The monarch's address", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Used when the account is a sub-account of another account.", + "type": "object", + "required": [ + "sub_account" + ], + "properties": { + "sub_account": { + "type": "object", + "required": [ + "account" + ], + "properties": { + "account": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "An external governance source. This could be a cw3 contract for instance The `governance_address` will be the admin of the Account.", + "type": "object", + "required": [ + "external" + ], + "properties": { + "external": { + "type": "object", + "required": [ + "governance_address", + "governance_type" + ], + "properties": { + "governance_address": { + "description": "The external contract address", + "type": "string" + }, + "governance_type": { + "description": "Governance type used for doing extra off-chain queries depending on the type.", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "This account is linked to an NFT collection. The owner of the specified token_id is the owner of the account", + "type": "object", + "required": [ + "n_f_t" + ], + "properties": { + "n_f_t": { + "type": "object", + "required": [ + "collection_addr", + "token_id" + ], + "properties": { + "collection_addr": { + "type": "string" + }, + "token_id": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Abstract account. Admin actions have to be sent through signature bit flag\n\nMore details: https://github.com/burnt-labs/abstract-account/blob/2c933a7b2a8dacc0ae5bf4344159a7d4ab080135/README.md", + "type": "object", + "required": [ + "abstract_account" + ], + "properties": { + "abstract_account": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "description": "Address of this abstract account", + "allOf": [ + { + "$ref": "#/definitions/Addr" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Renounced account This account no longer has an owner and cannot be used.", + "type": "object", + "required": [ + "renounced" + ], + "properties": { + "renounced": { + "type": "object", + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "IbcMsg": { + "description": "These are messages in the IBC lifecycle. Only usable by IBC-enabled contracts (contracts that directly speak the IBC protocol via 6 entry points)", + "oneOf": [ + { + "description": "Sends bank tokens owned by the contract to the given address on another chain. The channel must already be established between the ibctransfer module on this chain and a matching module on the remote chain. We cannot select the port_id, this is whatever the local chain has bound the ibctransfer module to.", + "type": "object", + "required": [ + "transfer" + ], + "properties": { + "transfer": { + "type": "object", + "required": [ + "amount", + "channel_id", + "timeout", + "to_address" + ], + "properties": { + "amount": { + "description": "packet data only supports one coin https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/ibc/applications/transfer/v1/transfer.proto#L11-L20", + "allOf": [ + { + "$ref": "#/definitions/Coin" + } + ] + }, + "channel_id": { + "description": "existing channel to send the tokens over", + "type": "string" + }, + "memo": { + "description": "An optional memo. See the blog post [\"Moving Beyond Simple Token Transfers\"](https://medium.com/the-interchain-foundation/moving-beyond-simple-token-transfers-d42b2b1dc29b) for more information.\n\nThere is no difference between setting this to `None` or an empty string.\n\nThis field is only supported on chains with CosmWasm >= 2.0 and silently ignored on older chains. If you need support for both 1.x and 2.x chain with the same codebase, it is recommended to use `CosmosMsg::Stargate` with a custom MsgTransfer protobuf encoder instead.", + "type": [ + "string", + "null" + ] + }, + "timeout": { + "description": "when packet times out, measured on remote chain", + "allOf": [ + { + "$ref": "#/definitions/IbcTimeout" + } + ] + }, + "to_address": { + "description": "address on the remote chain to receive these tokens", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Sends an IBC packet with given data over the existing channel. Data should be encoded in a format defined by the channel version, and the module on the other side should know how to parse this.", + "type": "object", + "required": [ + "send_packet" + ], + "properties": { + "send_packet": { + "type": "object", + "required": [ + "channel_id", + "data", + "timeout" + ], + "properties": { + "channel_id": { + "type": "string" + }, + "data": { + "$ref": "#/definitions/Binary" + }, + "timeout": { + "description": "when packet times out, measured on remote chain", + "allOf": [ + { + "$ref": "#/definitions/IbcTimeout" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "This will close an existing channel that is owned by this contract. Port is auto-assigned to the contract's IBC port", + "type": "object", + "required": [ + "close_channel" + ], + "properties": { + "close_channel": { + "type": "object", + "required": [ + "channel_id" + ], + "properties": { + "channel_id": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "IbcTimeout": { + "description": "In IBC each package must set at least one type of timeout: the timestamp or the block height. Using this rather complex enum instead of two timeout fields we ensure that at least one timeout is set.", + "type": "object", + "properties": { + "block": { + "anyOf": [ + { + "$ref": "#/definitions/IbcTimeoutBlock" + }, + { + "type": "null" + } + ] + }, + "timestamp": { + "anyOf": [ + { + "$ref": "#/definitions/Timestamp" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + }, + "IbcTimeoutBlock": { + "description": "IBCTimeoutHeight Height is a monotonically increasing data type that can be compared against another Height for the purposes of updating and freezing clients. Ordering is (revision_number, timeout_height)", + "type": "object", + "required": [ + "height", + "revision" + ], + "properties": { + "height": { + "description": "block height after which the packet times out. the height within the given revision", + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "revision": { + "description": "the version that the client is currently on (e.g. after resetting the chain this could increment 1 as height drops to 0)", + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, + "InternalConfigAction": { + "description": "Internal configuration actions accessible from the [`ExecuteMsg::UpdateInternalConfig`] message.", + "oneOf": [ + { + "description": "Updates the [`state::ACCOUNT_MODULES`] map Only callable by owner.", + "type": "object", + "required": [ + "update_module_addresses" + ], + "properties": { + "update_module_addresses": { + "type": "object", + "required": [ + "to_add", + "to_remove" + ], + "properties": { + "to_add": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "type": "string" + }, + { + "type": "string" + } + ], + "maxItems": 2, + "minItems": 2 + } + }, + "to_remove": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Update the execution whitelist in [`state::WHITELISTED_MODULES`] Only callable by owner.", + "type": "object", + "required": [ + "update_whitelist" + ], + "properties": { + "update_whitelist": { + "type": "object", + "required": [ + "to_add", + "to_remove" + ], + "properties": { + "to_add": { + "description": "Addresses to add to the Account's execution whitelist", + "type": "array", + "items": { + "type": "string" + } + }, + "to_remove": { + "description": "Addresses to remove from the Account's execution whitelist", + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "ModuleInfo": { + "description": "Stores the namespace, name, and version of an Abstract module.", + "type": "object", + "required": [ + "name", + "namespace", + "version" + ], + "properties": { + "name": { + "description": "Name of the contract", + "type": "string" + }, + "namespace": { + "description": "Namespace of the module", + "allOf": [ + { + "$ref": "#/definitions/Namespace" + } + ] + }, + "version": { + "description": "Version of the module", + "allOf": [ + { + "$ref": "#/definitions/ModuleVersion" + } + ] + } + }, + "additionalProperties": false + }, + "ModuleInstallConfig": { + "description": "Module info and init message", + "type": "object", + "required": [ + "module" + ], + "properties": { + "init_msg": { + "anyOf": [ + { + "$ref": "#/definitions/Binary" + }, + { + "type": "null" + } + ] + }, + "module": { + "$ref": "#/definitions/ModuleInfo" + } + }, + "additionalProperties": false + }, + "ModuleVersion": { + "oneOf": [ + { + "type": "string", + "enum": [ + "latest" + ] + }, + { + "type": "object", + "required": [ + "version" + ], + "properties": { + "version": { + "type": "string" + } + }, + "additionalProperties": false + } + ] + }, + "Namespace": { + "description": "Represents an Abstract namespace for modules", + "type": "string" + }, + "StakingMsg": { + "description": "The message types of the staking module.\n\nSee https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto", + "oneOf": [ + { + "description": "This is translated to a [MsgDelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L81-L90). `delegator_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "delegate" + ], + "properties": { + "delegate": { + "type": "object", + "required": [ + "amount", + "validator" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Coin" + }, + "validator": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "This is translated to a [MsgUndelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L112-L121). `delegator_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "undelegate" + ], + "properties": { + "undelegate": { + "type": "object", + "required": [ + "amount", + "validator" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Coin" + }, + "validator": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "This is translated to a [MsgBeginRedelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L95-L105). `delegator_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "redelegate" + ], + "properties": { + "redelegate": { + "type": "object", + "required": [ + "amount", + "dst_validator", + "src_validator" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Coin" + }, + "dst_validator": { + "type": "string" + }, + "src_validator": { + "type": "string" + } + }, + "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" + }, + "UpdateSubAccountAction": { + "oneOf": [ + { + "description": "Unregister sub-account It will unregister sub-account from the state Could be called only by the sub-account itself", + "type": "object", + "required": [ + "unregister_sub_account" + ], + "properties": { + "unregister_sub_account": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Register sub-account It will register new sub-account into the state Could be called by the sub-account", + "type": "object", + "required": [ + "register_sub_account" + ], + "properties": { + "register_sub_account": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "VoteOption": { + "type": "string", + "enum": [ + "yes", + "no", + "abstain", + "no_with_veto" + ] + }, + "WasmMsg": { + "description": "The message types of the wasm module.\n\nSee https://github.com/CosmWasm/wasmd/blob/v0.14.0/x/wasm/internal/types/tx.proto", + "oneOf": [ + { + "description": "Dispatches a call to another contract at a known address (with known ABI).\n\nThis is translated to a [MsgExecuteContract](https://github.com/CosmWasm/wasmd/blob/v0.14.0/x/wasm/internal/types/tx.proto#L68-L78). `sender` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "execute" + ], + "properties": { + "execute": { + "type": "object", + "required": [ + "contract_addr", + "funds", + "msg" + ], + "properties": { + "contract_addr": { + "type": "string" + }, + "funds": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "msg": { + "description": "msg is the json-encoded ExecuteMsg struct (as raw Binary)", + "allOf": [ + { + "$ref": "#/definitions/Binary" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Instantiates a new contracts from previously uploaded Wasm code.\n\nThe contract address is non-predictable. But it is guaranteed that when emitting the same Instantiate message multiple times, multiple instances on different addresses will be generated. See also Instantiate2.\n\nThis is translated to a [MsgInstantiateContract](https://github.com/CosmWasm/wasmd/blob/v0.29.2/proto/cosmwasm/wasm/v1/tx.proto#L53-L71). `sender` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "instantiate" + ], + "properties": { + "instantiate": { + "type": "object", + "required": [ + "code_id", + "funds", + "label", + "msg" + ], + "properties": { + "admin": { + "type": [ + "string", + "null" + ] + }, + "code_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "funds": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "label": { + "description": "A human-readable label for the contract.\n\nValid values should: - not be empty - not be bigger than 128 bytes (or some chain-specific limit) - not start / end with whitespace", + "type": "string" + }, + "msg": { + "description": "msg is the JSON-encoded InstantiateMsg struct (as raw Binary)", + "allOf": [ + { + "$ref": "#/definitions/Binary" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Instantiates a new contracts from previously uploaded Wasm code using a predictable address derivation algorithm implemented in [`cosmwasm_std::instantiate2_address`].\n\nThis is translated to a [MsgInstantiateContract2](https://github.com/CosmWasm/wasmd/blob/v0.29.2/proto/cosmwasm/wasm/v1/tx.proto#L73-L96). `sender` is automatically filled with the current contract's address. `fix_msg` is automatically set to false.", + "type": "object", + "required": [ + "instantiate2" + ], + "properties": { + "instantiate2": { + "type": "object", + "required": [ + "code_id", + "funds", + "label", + "msg", + "salt" + ], + "properties": { + "admin": { + "type": [ + "string", + "null" + ] + }, + "code_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "funds": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "label": { + "description": "A human-readable label for the contract.\n\nValid values should: - not be empty - not be bigger than 128 bytes (or some chain-specific limit) - not start / end with whitespace", + "type": "string" + }, + "msg": { + "description": "msg is the JSON-encoded InstantiateMsg struct (as raw Binary)", + "allOf": [ + { + "$ref": "#/definitions/Binary" + } + ] + }, + "salt": { + "$ref": "#/definitions/Binary" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Migrates a given contracts to use new wasm code. Passes a MigrateMsg to allow us to customize behavior.\n\nOnly the contract admin (as defined in wasmd), if any, is able to make this call.\n\nThis is translated to a [MsgMigrateContract](https://github.com/CosmWasm/wasmd/blob/v0.14.0/x/wasm/internal/types/tx.proto#L86-L96). `sender` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "migrate" + ], + "properties": { + "migrate": { + "type": "object", + "required": [ + "contract_addr", + "msg", + "new_code_id" + ], + "properties": { + "contract_addr": { + "type": "string" + }, + "msg": { + "description": "msg is the json-encoded MigrateMsg struct that will be passed to the new code", + "allOf": [ + { + "$ref": "#/definitions/Binary" + } + ] + }, + "new_code_id": { + "description": "the code_id of the new logic to place in the given contract", + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Sets a new admin (for migrate) on the given contract. Fails if this contract is not currently admin of the target contract.", + "type": "object", + "required": [ + "update_admin" + ], + "properties": { + "update_admin": { + "type": "object", + "required": [ + "admin", + "contract_addr" + ], + "properties": { + "admin": { + "type": "string" + }, + "contract_addr": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Clears the admin on the given contract, so no more migration possible. Fails if this contract is not currently admin of the target contract.", + "type": "object", + "required": [ + "clear_admin" + ], + "properties": { + "clear_admin": { + "type": "object", + "required": [ + "contract_addr" + ], + "properties": { + "contract_addr": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "WeightedVoteOption": { + "type": "object", + "required": [ + "option", + "weight" + ], + "properties": { + "option": { + "$ref": "#/definitions/VoteOption" + }, + "weight": { + "$ref": "#/definitions/Decimal" + } + }, + "additionalProperties": false + } + } + }, + "query": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryMsg", + "oneOf": [ + { + "description": "Contains the enabled modules Returns [`ConfigResponse`]", + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "type": "object", + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Query the versions of modules installed on the account given their `ids`. Returns [`ModuleVersionsResponse`]", + "type": "object", + "required": [ + "module_versions" + ], + "properties": { + "module_versions": { + "type": "object", + "required": [ + "ids" + ], + "properties": { + "ids": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Query the addresses of modules installed on the account given their `ids`. Returns [`ModuleAddressesResponse`]", + "type": "object", + "required": [ + "module_addresses" + ], + "properties": { + "module_addresses": { + "type": "object", + "required": [ + "ids" + ], + "properties": { + "ids": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Query information of all modules installed on the account. Returns [`ModuleInfosResponse`]", + "type": "object", + "required": [ + "module_infos" + ], + "properties": { + "module_infos": { + "type": "object", + "properties": { + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint8", + "minimum": 0.0 + }, + "start_after": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Query the Account info. Returns [`InfoResponse`]", + "type": "object", + "required": [ + "info" + ], + "properties": { + "info": { + "type": "object", + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Returns [`SubAccountIdsResponse`]", + "type": "object", + "required": [ + "sub_account_ids" + ], + "properties": { + "sub_account_ids": { + "type": "object", + "properties": { + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint8", + "minimum": 0.0 + }, + "start_after": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Returns [`TopLevelOwnerResponse`]", + "type": "object", + "required": [ + "top_level_owner" + ], + "properties": { + "top_level_owner": { + "type": "object", + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Query the contract's ownership information", + "type": "object", + "required": [ + "ownership" + ], + "properties": { + "ownership": { + "type": "object", + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Query the pubkey associated with this account.", + "type": "object", + "required": [ + "authenticator_by_i_d" + ], + "properties": { + "authenticator_by_i_d": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Query the pubkey associated with this account.", + "type": "object", + "required": [ + "authenticator_i_ds" + ], + "properties": { + "authenticator_i_ds": { + "type": "object", + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "migrate": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "MigrateMsg", + "type": "object", + "additionalProperties": false + }, + "sudo": null, + "responses": { + "authenticator_by_i_d": { + "$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" + }, + "authenticator_i_ds": { + "$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" + }, + "config": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ConfigResponse", + "type": "object", + "required": [ + "account_id", + "is_suspended", + "module_factory_address", + "registry_address", + "whitelisted_addresses" + ], + "properties": { + "account_id": { + "$ref": "#/definitions/AccountId" + }, + "is_suspended": { + "type": "boolean" + }, + "module_factory_address": { + "$ref": "#/definitions/Addr" + }, + "registry_address": { + "$ref": "#/definitions/Addr" + }, + "whitelisted_addresses": { + "type": "array", + "items": { + "$ref": "#/definitions/Addr" + } + } + }, + "additionalProperties": false, + "definitions": { + "AccountId": { + "description": "Unique identifier for an account. On each chain this is unique.", + "type": "object", + "required": [ + "seq", + "trace" + ], + "properties": { + "seq": { + "description": "Unique identifier for the accounts create on a local chain. Is reused when creating an interchain account.", + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "trace": { + "description": "Sequence of the chain that triggered the IBC account creation `AccountTrace::Local` if the account was created locally Example: Account created on Juno which has an abstract interchain account on Osmosis, which in turn creates an interchain account on Terra -> `AccountTrace::Remote(vec![\"juno\", \"osmosis\"])`", + "allOf": [ + { + "$ref": "#/definitions/AccountTrace" + } + ] + } + }, + "additionalProperties": false + }, + "AccountTrace": { + "description": "The identifier of chain that triggered the account creation\n\nNote that the serialization to string and to Cw-storage-plus keys is different\n\nFor String, `AccountTrace::Remote(vec![\"neutron\", \"osmosis\"])` will be serialized as `osmosis>neutron`\n\nFor cw-storage-plus-key, `AccountTrace::Remote(vec![\"neutron\", \"osmosis\"])` will be serialized as `remote:[\"neutron\", \"osmosis\", \"\", \"\", \"\", \"\"]`", + "oneOf": [ + { + "type": "string", + "enum": [ + "local" + ] + }, + { + "type": "object", + "required": [ + "remote" + ], + "properties": { + "remote": { + "type": "array", + "items": { + "$ref": "#/definitions/TruncatedChainId" + } + } + }, + "additionalProperties": false + } + ] + }, + "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" + }, + "TruncatedChainId": { + "description": "The name of a chain, aka the chain-id without the post-fix number. ex. `cosmoshub-4` -> `cosmoshub`, `juno-1` -> `juno`", + "type": "string" + } + } + }, + "info": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InfoResponse", + "type": "object", + "required": [ + "info" + ], + "properties": { + "info": { + "$ref": "#/definitions/AccountInfo" + } + }, + "additionalProperties": false, + "definitions": { + "AccountInfo": { + "description": "Abstract Account details.", + "type": "object", + "properties": { + "description": { + "type": [ + "string", + "null" + ] + }, + "link": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + } + }, + "module_addresses": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ModuleAddressesResponse", + "type": "object", + "required": [ + "modules" + ], + "properties": { + "modules": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/Addr" + } + ], + "maxItems": 2, + "minItems": 2 + } + } + }, + "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" + } + } + }, + "module_infos": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ModuleInfosResponse", + "type": "object", + "required": [ + "module_infos" + ], + "properties": { + "module_infos": { + "type": "array", + "items": { + "$ref": "#/definitions/AccountModuleInfo" + } + } + }, + "additionalProperties": false, + "definitions": { + "AccountModuleInfo": { + "type": "object", + "required": [ + "address", + "id", + "version" + ], + "properties": { + "address": { + "$ref": "#/definitions/Addr" + }, + "id": { + "type": "string" + }, + "version": { + "$ref": "#/definitions/ContractVersion" + } + }, + "additionalProperties": false + }, + "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" + }, + "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 + } + } + }, + "module_versions": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ModuleVersionsResponse", + "type": "object", + "required": [ + "versions" + ], + "properties": { + "versions": { + "type": "array", + "items": { + "$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 + } + } + }, + "ownership": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Ownership_for_String", + "description": "The contract's ownership info", + "type": "object", + "required": [ + "owner" + ], + "properties": { + "owner": { + "description": "The contract's current owner.", + "allOf": [ + { + "$ref": "#/definitions/GovernanceDetails_for_String" + } + ] + }, + "pending_expiry": { + "description": "The deadline for the pending owner to accept the ownership. `None` if there isn't a pending ownership transfer, or if a transfer exists and it doesn't have a deadline.", + "anyOf": [ + { + "$ref": "#/definitions/Expiration" + }, + { + "type": "null" + } + ] + }, + "pending_owner": { + "description": "The account who has been proposed to take over the ownership. `None` if there isn't a pending ownership transfer.", + "anyOf": [ + { + "$ref": "#/definitions/GovernanceDetails_for_String" + }, + { + "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" + }, + "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 + } + ] + }, + "GovernanceDetails_for_String": { + "description": "Governance types", + "oneOf": [ + { + "description": "A single address is admin", + "type": "object", + "required": [ + "monarchy" + ], + "properties": { + "monarchy": { + "type": "object", + "required": [ + "monarch" + ], + "properties": { + "monarch": { + "description": "The monarch's address", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Used when the account is a sub-account of another account.", + "type": "object", + "required": [ + "sub_account" + ], + "properties": { + "sub_account": { + "type": "object", + "required": [ + "account" + ], + "properties": { + "account": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "An external governance source. This could be a cw3 contract for instance The `governance_address` will be the admin of the Account.", + "type": "object", + "required": [ + "external" + ], + "properties": { + "external": { + "type": "object", + "required": [ + "governance_address", + "governance_type" + ], + "properties": { + "governance_address": { + "description": "The external contract address", + "type": "string" + }, + "governance_type": { + "description": "Governance type used for doing extra off-chain queries depending on the type.", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "This account is linked to an NFT collection. The owner of the specified token_id is the owner of the account", + "type": "object", + "required": [ + "n_f_t" + ], + "properties": { + "n_f_t": { + "type": "object", + "required": [ + "collection_addr", + "token_id" + ], + "properties": { + "collection_addr": { + "type": "string" + }, + "token_id": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Abstract account. Admin actions have to be sent through signature bit flag\n\nMore details: https://github.com/burnt-labs/abstract-account/blob/2c933a7b2a8dacc0ae5bf4344159a7d4ab080135/README.md", + "type": "object", + "required": [ + "abstract_account" + ], + "properties": { + "abstract_account": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "description": "Address of this abstract account", + "allOf": [ + { + "$ref": "#/definitions/Addr" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Renounced account This account no longer has an owner and cannot be used.", + "type": "object", + "required": [ + "renounced" + ], + "properties": { + "renounced": { + "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" + } + ] + }, + "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" + } + } + }, + "sub_account_ids": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "SubAccountIdsResponse", + "type": "object", + "required": [ + "sub_accounts" + ], + "properties": { + "sub_accounts": { + "type": "array", + "items": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + } + } + }, + "additionalProperties": false + }, + "top_level_owner": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "TopLevelOwnerResponse", + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "$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" + } + } + } + } +} diff --git a/abstract/ans-host/0.26.0/abstract-ans-host.json b/abstract/ans-host/0.26.0/abstract-ans-host.json new file mode 100644 index 0000000..424f751 --- /dev/null +++ b/abstract/ans-host/0.26.0/abstract-ans-host.json @@ -0,0 +1,2208 @@ +{ + "contract_name": "abstract-ans-host", + "contract_version": "0.26.0", + "idl_version": "1.0.0", + "instantiate": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InstantiateMsg", + "description": "AnsHost Instantiate msg", + "type": "object", + "required": [ + "admin" + ], + "properties": { + "admin": { + "type": "string" + } + }, + "additionalProperties": false + }, + "execute": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ExecuteMsg", + "description": "AnsHost Execute msg", + "oneOf": [ + { + "description": "Updates the contract addressbook", + "type": "object", + "required": [ + "update_contract_addresses" + ], + "properties": { + "update_contract_addresses": { + "type": "object", + "required": [ + "to_add", + "to_remove" + ], + "properties": { + "to_add": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/UncheckedContractEntry" + }, + { + "type": "string" + } + ], + "maxItems": 2, + "minItems": 2 + } + }, + "to_remove": { + "type": "array", + "items": { + "$ref": "#/definitions/UncheckedContractEntry" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Updates the Asset addressbook", + "type": "object", + "required": [ + "update_asset_addresses" + ], + "properties": { + "update_asset_addresses": { + "type": "object", + "required": [ + "to_add", + "to_remove" + ], + "properties": { + "to_add": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/AssetInfoBase_for_String" + } + ], + "maxItems": 2, + "minItems": 2 + } + }, + "to_remove": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Updates the Asset addressbook", + "type": "object", + "required": [ + "update_channels" + ], + "properties": { + "update_channels": { + "type": "object", + "required": [ + "to_add", + "to_remove" + ], + "properties": { + "to_add": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/UncheckedChannelEntry" + }, + { + "type": "string" + } + ], + "maxItems": 2, + "minItems": 2 + } + }, + "to_remove": { + "type": "array", + "items": { + "$ref": "#/definitions/UncheckedChannelEntry" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Registers a dex", + "type": "object", + "required": [ + "update_dexes" + ], + "properties": { + "update_dexes": { + "type": "object", + "required": [ + "to_add", + "to_remove" + ], + "properties": { + "to_add": { + "type": "array", + "items": { + "type": "string" + } + }, + "to_remove": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Update the pools", + "type": "object", + "required": [ + "update_pools" + ], + "properties": { + "update_pools": { + "type": "object", + "required": [ + "to_add", + "to_remove" + ], + "properties": { + "to_add": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/PoolAddressBase_for_String" + }, + { + "$ref": "#/definitions/PoolMetadata" + } + ], + "maxItems": 2, + "minItems": 2 + } + }, + "to_remove": { + "type": "array", + "items": { + "$ref": "#/definitions/UniquePoolId" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Update the contract's ownership. The `action` to be provided can be either to propose transferring ownership to an account, accept a pending ownership transfer, or renounce the ownership permanently.", + "type": "object", + "required": [ + "update_ownership" + ], + "properties": { + "update_ownership": { + "$ref": "#/definitions/Action" + } + }, + "additionalProperties": false + } + ], + "definitions": { + "Action": { + "description": "Actions that can be taken to alter the contract's ownership", + "oneOf": [ + { + "description": "Propose to transfer the contract's ownership to another account, optionally with an expiry time.\n\nCan only be called by the contract's current owner.\n\nAny existing pending ownership transfer is overwritten.", + "type": "object", + "required": [ + "transfer_ownership" + ], + "properties": { + "transfer_ownership": { + "type": "object", + "required": [ + "new_owner" + ], + "properties": { + "expiry": { + "anyOf": [ + { + "$ref": "#/definitions/Expiration" + }, + { + "type": "null" + } + ] + }, + "new_owner": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Accept the pending ownership transfer.\n\nCan only be called by the pending owner.", + "type": "string", + "enum": [ + "accept_ownership" + ] + }, + { + "description": "Give up the contract's ownership and the possibility of appointing a new owner.\n\nCan only be invoked by the contract's current owner.\n\nAny existing pending ownership transfer is canceled.", + "type": "string", + "enum": [ + "renounce_ownership" + ] + } + ] + }, + "AssetEntry": { + "description": "An unchecked ANS asset entry. This is a string that is formatted as `src_chain>[intermediate_chain>]asset_name`", + "type": "string" + }, + "AssetInfoBase_for_String": { + "description": "Represents the type of an fungible asset.\n\nEach **asset info** instance can be one of three variants:\n\n- Native SDK coins. To create an **asset info** instance of this type, provide the denomination. - CW20 tokens. To create an **asset info** instance of this type, provide the contract address.", + "oneOf": [ + { + "type": "object", + "required": [ + "native" + ], + "properties": { + "native": { + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "cw20" + ], + "properties": { + "cw20": { + "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 + } + ] + }, + "PoolAddressBase_for_String": { + "oneOf": [ + { + "type": "object", + "required": [ + "separate_addresses" + ], + "properties": { + "separate_addresses": { + "type": "object", + "required": [ + "liquidity", + "swap" + ], + "properties": { + "liquidity": { + "type": "string" + }, + "swap": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "contract" + ], + "properties": { + "contract": { + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + ] + }, + "PoolMetadata": { + "type": "object", + "required": [ + "assets", + "dex", + "pool_type" + ], + "properties": { + "assets": { + "type": "array", + "items": { + "$ref": "#/definitions/AssetEntry" + } + }, + "dex": { + "type": "string" + }, + "pool_type": { + "$ref": "#/definitions/PoolType" + } + }, + "additionalProperties": false + }, + "PoolType": { + "type": "string", + "enum": [ + "ConstantProduct", + "Stable", + "Weighted", + "LiquidityBootstrap", + "ConcentratedLiquidity" + ] + }, + "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" + } + ] + }, + "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" + }, + "UncheckedChannelEntry": { + "description": "Key to get the Address of a connected_chain", + "type": "object", + "required": [ + "connected_chain", + "protocol" + ], + "properties": { + "connected_chain": { + "type": "string" + }, + "protocol": { + "type": "string" + } + }, + "additionalProperties": false + }, + "UncheckedContractEntry": { + "description": "Key to get the Address of a contract", + "type": "object", + "required": [ + "contract", + "protocol" + ], + "properties": { + "contract": { + "type": "string" + }, + "protocol": { + "type": "string" + } + }, + "additionalProperties": false + }, + "UniquePoolId": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + }, + "query": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryMsg", + "description": "AnsHost smart-query", + "oneOf": [ + { + "description": "Query the config Returns [`ConfigResponse`]", + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "type": "object", + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Queries assets based on name returns [`AssetsResponse`]", + "type": "object", + "required": [ + "assets" + ], + "properties": { + "assets": { + "type": "object", + "required": [ + "names" + ], + "properties": { + "names": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Page over assets returns [`AssetListResponse`]", + "type": "object", + "required": [ + "asset_list" + ], + "properties": { + "asset_list": { + "type": "object", + "properties": { + "filter": { + "anyOf": [ + { + "$ref": "#/definitions/AssetFilter" + }, + { + "type": "null" + } + ] + }, + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint8", + "minimum": 0.0 + }, + "start_after": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Queries assets based on address returns [`AssetInfosResponse`]", + "type": "object", + "required": [ + "asset_infos" + ], + "properties": { + "asset_infos": { + "type": "object", + "required": [ + "infos" + ], + "properties": { + "infos": { + "type": "array", + "items": { + "$ref": "#/definitions/AssetInfoBase_for_String" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Page over asset infos returns [`AssetInfoListResponse`]", + "type": "object", + "required": [ + "asset_info_list" + ], + "properties": { + "asset_info_list": { + "type": "object", + "properties": { + "filter": { + "anyOf": [ + { + "$ref": "#/definitions/AssetInfoFilter" + }, + { + "type": "null" + } + ] + }, + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint8", + "minimum": 0.0 + }, + "start_after": { + "anyOf": [ + { + "$ref": "#/definitions/AssetInfoBase_for_String" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Queries contracts based on name returns [`ContractsResponse`]", + "type": "object", + "required": [ + "contracts" + ], + "properties": { + "contracts": { + "type": "object", + "required": [ + "entries" + ], + "properties": { + "entries": { + "type": "array", + "items": { + "$ref": "#/definitions/ContractEntry" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Page over contracts returns [`ContractListResponse`]", + "type": "object", + "required": [ + "contract_list" + ], + "properties": { + "contract_list": { + "type": "object", + "properties": { + "filter": { + "anyOf": [ + { + "$ref": "#/definitions/ContractFilter" + }, + { + "type": "null" + } + ] + }, + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint8", + "minimum": 0.0 + }, + "start_after": { + "anyOf": [ + { + "$ref": "#/definitions/ContractEntry" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Queries contracts based on name returns [`ChannelsResponse`]", + "type": "object", + "required": [ + "channels" + ], + "properties": { + "channels": { + "type": "object", + "required": [ + "entries" + ], + "properties": { + "entries": { + "type": "array", + "items": { + "$ref": "#/definitions/ChannelEntry" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Page over contracts returns [`ChannelListResponse`]", + "type": "object", + "required": [ + "channel_list" + ], + "properties": { + "channel_list": { + "type": "object", + "properties": { + "filter": { + "anyOf": [ + { + "$ref": "#/definitions/ChannelFilter" + }, + { + "type": "null" + } + ] + }, + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint8", + "minimum": 0.0 + }, + "start_after": { + "anyOf": [ + { + "$ref": "#/definitions/ChannelEntry" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Retrieve the registered dexes returns [`RegisteredDexesResponse`]", + "type": "object", + "required": [ + "registered_dexes" + ], + "properties": { + "registered_dexes": { + "type": "object", + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Retrieve the pools with the specified keys returns [`PoolsResponse`]", + "type": "object", + "required": [ + "pools" + ], + "properties": { + "pools": { + "type": "object", + "required": [ + "pairings" + ], + "properties": { + "pairings": { + "type": "array", + "items": { + "$ref": "#/definitions/DexAssetPairing_for_AssetEntry" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Retrieve the (optionally-filtered) list of pools. returns [`PoolAddressListResponse`]", + "type": "object", + "required": [ + "pool_list" + ], + "properties": { + "pool_list": { + "type": "object", + "properties": { + "filter": { + "anyOf": [ + { + "$ref": "#/definitions/AssetPairingFilter" + }, + { + "type": "null" + } + ] + }, + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint8", + "minimum": 0.0 + }, + "start_after": { + "anyOf": [ + { + "$ref": "#/definitions/DexAssetPairing_for_AssetEntry" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Get the pool metadatas for given pool ids returns [`PoolMetadatasResponse`]", + "type": "object", + "required": [ + "pool_metadatas" + ], + "properties": { + "pool_metadatas": { + "type": "object", + "required": [ + "ids" + ], + "properties": { + "ids": { + "type": "array", + "items": { + "$ref": "#/definitions/UniquePoolId" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Retrieve the (optionally-filtered) list of pool metadatas returns [`PoolMetadataListResponse`]", + "type": "object", + "required": [ + "pool_metadata_list" + ], + "properties": { + "pool_metadata_list": { + "type": "object", + "properties": { + "filter": { + "anyOf": [ + { + "$ref": "#/definitions/PoolMetadataFilter" + }, + { + "type": "null" + } + ] + }, + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint8", + "minimum": 0.0 + }, + "start_after": { + "anyOf": [ + { + "$ref": "#/definitions/UniquePoolId" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Query the contract's ownership information", + "type": "object", + "required": [ + "ownership" + ], + "properties": { + "ownership": { + "type": "object", + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "AssetEntry": { + "description": "An unchecked ANS asset entry. This is a string that is formatted as `src_chain>[intermediate_chain>]asset_name`", + "type": "string" + }, + "AssetFilter": { + "description": "UNUSED - stub for future use", + "type": "object", + "additionalProperties": false + }, + "AssetInfoBase_for_String": { + "description": "Represents the type of an fungible asset.\n\nEach **asset info** instance can be one of three variants:\n\n- Native SDK coins. To create an **asset info** instance of this type, provide the denomination. - CW20 tokens. To create an **asset info** instance of this type, provide the contract address.", + "oneOf": [ + { + "type": "object", + "required": [ + "native" + ], + "properties": { + "native": { + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "cw20" + ], + "properties": { + "cw20": { + "type": "string" + } + }, + "additionalProperties": false + } + ] + }, + "AssetInfoFilter": { + "description": "UNUSED - stub for future use", + "type": "object", + "additionalProperties": false + }, + "AssetPairingFilter": { + "type": "object", + "properties": { + "asset_pair": { + "description": "Filter by asset pair", + "type": [ + "array", + "null" + ], + "items": [ + { + "$ref": "#/definitions/AssetEntry" + }, + { + "$ref": "#/definitions/AssetEntry" + } + ], + "maxItems": 2, + "minItems": 2 + }, + "dex": { + "description": "Filter by dex", + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + }, + "ChannelEntry": { + "description": "Key to get the Address of a connected_chain Use [`UncheckedChannelEntry`] to construct this type.", + "type": "object", + "required": [ + "connected_chain", + "protocol" + ], + "properties": { + "connected_chain": { + "$ref": "#/definitions/TruncatedChainId" + }, + "protocol": { + "type": "string" + } + }, + "additionalProperties": false + }, + "ChannelFilter": { + "description": "UNUSED - stub for future use", + "type": "object", + "additionalProperties": false + }, + "ContractEntry": { + "description": "Key to get the Address of a contract Use [`UncheckedContractEntry`] to construct this type.", + "type": "object", + "required": [ + "contract", + "protocol" + ], + "properties": { + "contract": { + "type": "string" + }, + "protocol": { + "type": "string" + } + }, + "additionalProperties": false + }, + "ContractFilter": { + "description": "UNUSED - stub for future use", + "type": "object", + "additionalProperties": false + }, + "DexAssetPairing_for_AssetEntry": { + "description": "The key for an asset pairing Consists of the two assets and the dex name", + "type": "array", + "items": [ + { + "$ref": "#/definitions/AssetEntry" + }, + { + "$ref": "#/definitions/AssetEntry" + }, + { + "type": "string" + } + ], + "maxItems": 3, + "minItems": 3 + }, + "PoolMetadataFilter": { + "description": "Filter on the pool metadatas", + "type": "object", + "properties": { + "pool_type": { + "description": "Filter by pool type", + "anyOf": [ + { + "$ref": "#/definitions/PoolType" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + }, + "PoolType": { + "type": "string", + "enum": [ + "ConstantProduct", + "Stable", + "Weighted", + "LiquidityBootstrap", + "ConcentratedLiquidity" + ] + }, + "TruncatedChainId": { + "description": "The name of a chain, aka the chain-id without the post-fix number. ex. `cosmoshub-4` -> `cosmoshub`, `juno-1` -> `juno`", + "type": "string" + }, + "UniquePoolId": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + }, + "migrate": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "MigrateMsg", + "oneOf": [ + { + "description": "Migrating from blob contract", + "type": "object", + "required": [ + "instantiate" + ], + "properties": { + "instantiate": { + "$ref": "#/definitions/InstantiateMsg" + } + }, + "additionalProperties": false + }, + { + "description": "Migrating from previous version", + "type": "object", + "required": [ + "migrate" + ], + "properties": { + "migrate": { + "type": "object", + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "InstantiateMsg": { + "description": "AnsHost Instantiate msg", + "type": "object", + "required": [ + "admin" + ], + "properties": { + "admin": { + "type": "string" + } + }, + "additionalProperties": false + } + } + }, + "sudo": null, + "responses": { + "asset_info_list": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "AssetInfosResponse", + "type": "object", + "required": [ + "infos" + ], + "properties": { + "infos": { + "description": "Assets (assetinfo, name)", + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/AssetInfoBase_for_Addr" + }, + { + "$ref": "#/definitions/AssetEntry" + } + ], + "maxItems": 2, + "minItems": 2 + } + } + }, + "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" + }, + "AssetEntry": { + "description": "An unchecked ANS asset entry. This is a string that is formatted as `src_chain>[intermediate_chain>]asset_name`", + "type": "string" + }, + "AssetInfoBase_for_Addr": { + "description": "Represents the type of an fungible asset.\n\nEach **asset info** instance can be one of three variants:\n\n- Native SDK coins. To create an **asset info** instance of this type, provide the denomination. - CW20 tokens. To create an **asset info** instance of this type, provide the contract address.", + "oneOf": [ + { + "type": "object", + "required": [ + "native" + ], + "properties": { + "native": { + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "cw20" + ], + "properties": { + "cw20": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + } + ] + } + } + }, + "asset_infos": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "AssetInfosResponse", + "type": "object", + "required": [ + "infos" + ], + "properties": { + "infos": { + "description": "Assets (assetinfo, name)", + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/AssetInfoBase_for_Addr" + }, + { + "$ref": "#/definitions/AssetEntry" + } + ], + "maxItems": 2, + "minItems": 2 + } + } + }, + "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" + }, + "AssetEntry": { + "description": "An unchecked ANS asset entry. This is a string that is formatted as `src_chain>[intermediate_chain>]asset_name`", + "type": "string" + }, + "AssetInfoBase_for_Addr": { + "description": "Represents the type of an fungible asset.\n\nEach **asset info** instance can be one of three variants:\n\n- Native SDK coins. To create an **asset info** instance of this type, provide the denomination. - CW20 tokens. To create an **asset info** instance of this type, provide the contract address.", + "oneOf": [ + { + "type": "object", + "required": [ + "native" + ], + "properties": { + "native": { + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "cw20" + ], + "properties": { + "cw20": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + } + ] + } + } + }, + "asset_list": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "AssetsResponse", + "description": "Query response", + "type": "object", + "required": [ + "assets" + ], + "properties": { + "assets": { + "description": "Assets (name, assetinfo)", + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/AssetEntry" + }, + { + "$ref": "#/definitions/AssetInfoBase_for_Addr" + } + ], + "maxItems": 2, + "minItems": 2 + } + } + }, + "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" + }, + "AssetEntry": { + "description": "An unchecked ANS asset entry. This is a string that is formatted as `src_chain>[intermediate_chain>]asset_name`", + "type": "string" + }, + "AssetInfoBase_for_Addr": { + "description": "Represents the type of an fungible asset.\n\nEach **asset info** instance can be one of three variants:\n\n- Native SDK coins. To create an **asset info** instance of this type, provide the denomination. - CW20 tokens. To create an **asset info** instance of this type, provide the contract address.", + "oneOf": [ + { + "type": "object", + "required": [ + "native" + ], + "properties": { + "native": { + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "cw20" + ], + "properties": { + "cw20": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + } + ] + } + } + }, + "assets": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "AssetsResponse", + "description": "Query response", + "type": "object", + "required": [ + "assets" + ], + "properties": { + "assets": { + "description": "Assets (name, assetinfo)", + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/AssetEntry" + }, + { + "$ref": "#/definitions/AssetInfoBase_for_Addr" + } + ], + "maxItems": 2, + "minItems": 2 + } + } + }, + "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" + }, + "AssetEntry": { + "description": "An unchecked ANS asset entry. This is a string that is formatted as `src_chain>[intermediate_chain>]asset_name`", + "type": "string" + }, + "AssetInfoBase_for_Addr": { + "description": "Represents the type of an fungible asset.\n\nEach **asset info** instance can be one of three variants:\n\n- Native SDK coins. To create an **asset info** instance of this type, provide the denomination. - CW20 tokens. To create an **asset info** instance of this type, provide the contract address.", + "oneOf": [ + { + "type": "object", + "required": [ + "native" + ], + "properties": { + "native": { + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "cw20" + ], + "properties": { + "cw20": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + } + ] + } + } + }, + "channel_list": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ChannelListResponse", + "type": "object", + "required": [ + "channels" + ], + "properties": { + "channels": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/ChannelEntry" + }, + { + "type": "string" + } + ], + "maxItems": 2, + "minItems": 2 + } + } + }, + "additionalProperties": false, + "definitions": { + "ChannelEntry": { + "description": "Key to get the Address of a connected_chain Use [`UncheckedChannelEntry`] to construct this type.", + "type": "object", + "required": [ + "connected_chain", + "protocol" + ], + "properties": { + "connected_chain": { + "$ref": "#/definitions/TruncatedChainId" + }, + "protocol": { + "type": "string" + } + }, + "additionalProperties": false + }, + "TruncatedChainId": { + "description": "The name of a chain, aka the chain-id without the post-fix number. ex. `cosmoshub-4` -> `cosmoshub`, `juno-1` -> `juno`", + "type": "string" + } + } + }, + "channels": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ChannelsResponse", + "type": "object", + "required": [ + "channels" + ], + "properties": { + "channels": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/ChannelEntry" + }, + { + "type": "string" + } + ], + "maxItems": 2, + "minItems": 2 + } + } + }, + "additionalProperties": false, + "definitions": { + "ChannelEntry": { + "description": "Key to get the Address of a connected_chain Use [`UncheckedChannelEntry`] to construct this type.", + "type": "object", + "required": [ + "connected_chain", + "protocol" + ], + "properties": { + "connected_chain": { + "$ref": "#/definitions/TruncatedChainId" + }, + "protocol": { + "type": "string" + } + }, + "additionalProperties": false + }, + "TruncatedChainId": { + "description": "The name of a chain, aka the chain-id without the post-fix number. ex. `cosmoshub-4` -> `cosmoshub`, `juno-1` -> `juno`", + "type": "string" + } + } + }, + "config": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ConfigResponse", + "type": "object", + "required": [ + "next_unique_pool_id" + ], + "properties": { + "next_unique_pool_id": { + "$ref": "#/definitions/UniquePoolId" + } + }, + "additionalProperties": false, + "definitions": { + "UniquePoolId": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + }, + "contract_list": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ContractListResponse", + "type": "object", + "required": [ + "contracts" + ], + "properties": { + "contracts": { + "description": "Contracts (name, address)", + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/ContractEntry" + }, + { + "$ref": "#/definitions/Addr" + } + ], + "maxItems": 2, + "minItems": 2 + } + } + }, + "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" + }, + "ContractEntry": { + "description": "Key to get the Address of a contract Use [`UncheckedContractEntry`] to construct this type.", + "type": "object", + "required": [ + "contract", + "protocol" + ], + "properties": { + "contract": { + "type": "string" + }, + "protocol": { + "type": "string" + } + }, + "additionalProperties": false + } + } + }, + "contracts": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ContractsResponse", + "type": "object", + "required": [ + "contracts" + ], + "properties": { + "contracts": { + "description": "Contracts (name, address)", + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/ContractEntry" + }, + { + "$ref": "#/definitions/Addr" + } + ], + "maxItems": 2, + "minItems": 2 + } + } + }, + "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" + }, + "ContractEntry": { + "description": "Key to get the Address of a contract Use [`UncheckedContractEntry`] to construct this type.", + "type": "object", + "required": [ + "contract", + "protocol" + ], + "properties": { + "contract": { + "type": "string" + }, + "protocol": { + "type": "string" + } + }, + "additionalProperties": false + } + } + }, + "ownership": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Ownership_for_String", + "description": "The contract's ownership info", + "type": "object", + "properties": { + "owner": { + "description": "The contract's current owner. `None` if the ownership has been renounced.", + "type": [ + "string", + "null" + ] + }, + "pending_expiry": { + "description": "The deadline for the pending owner to accept the ownership. `None` if there isn't a pending ownership transfer, or if a transfer exists and it doesn't have a deadline.", + "anyOf": [ + { + "$ref": "#/definitions/Expiration" + }, + { + "type": "null" + } + ] + }, + "pending_owner": { + "description": "The account who has been proposed to take over the ownership. `None` if there isn't a pending ownership transfer.", + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false, + "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" + } + ] + }, + "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" + } + } + }, + "pool_list": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "PoolAddressListResponse", + "type": "object", + "required": [ + "pools" + ], + "properties": { + "pools": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/DexAssetPairing_for_AssetEntry" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/PoolReference" + } + } + ], + "maxItems": 2, + "minItems": 2 + } + } + }, + "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" + }, + "AssetEntry": { + "description": "An unchecked ANS asset entry. This is a string that is formatted as `src_chain>[intermediate_chain>]asset_name`", + "type": "string" + }, + "DexAssetPairing_for_AssetEntry": { + "description": "The key for an asset pairing Consists of the two assets and the dex name", + "type": "array", + "items": [ + { + "$ref": "#/definitions/AssetEntry" + }, + { + "$ref": "#/definitions/AssetEntry" + }, + { + "type": "string" + } + ], + "maxItems": 3, + "minItems": 3 + }, + "PoolAddressBase_for_Addr": { + "oneOf": [ + { + "type": "object", + "required": [ + "separate_addresses" + ], + "properties": { + "separate_addresses": { + "type": "object", + "required": [ + "liquidity", + "swap" + ], + "properties": { + "liquidity": { + "$ref": "#/definitions/Addr" + }, + "swap": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "contract" + ], + "properties": { + "contract": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + ] + }, + "PoolReference": { + "type": "object", + "required": [ + "pool_address", + "unique_id" + ], + "properties": { + "pool_address": { + "$ref": "#/definitions/PoolAddressBase_for_Addr" + }, + "unique_id": { + "$ref": "#/definitions/UniquePoolId" + } + }, + "additionalProperties": false + }, + "UniquePoolId": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + }, + "pool_metadata_list": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "PoolMetadataListResponse", + "type": "object", + "required": [ + "metadatas" + ], + "properties": { + "metadatas": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/UniquePoolId" + }, + { + "$ref": "#/definitions/PoolMetadata" + } + ], + "maxItems": 2, + "minItems": 2 + } + } + }, + "additionalProperties": false, + "definitions": { + "AssetEntry": { + "description": "An unchecked ANS asset entry. This is a string that is formatted as `src_chain>[intermediate_chain>]asset_name`", + "type": "string" + }, + "PoolMetadata": { + "type": "object", + "required": [ + "assets", + "dex", + "pool_type" + ], + "properties": { + "assets": { + "type": "array", + "items": { + "$ref": "#/definitions/AssetEntry" + } + }, + "dex": { + "type": "string" + }, + "pool_type": { + "$ref": "#/definitions/PoolType" + } + }, + "additionalProperties": false + }, + "PoolType": { + "type": "string", + "enum": [ + "ConstantProduct", + "Stable", + "Weighted", + "LiquidityBootstrap", + "ConcentratedLiquidity" + ] + }, + "UniquePoolId": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + }, + "pool_metadatas": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "PoolMetadatasResponse", + "type": "object", + "required": [ + "metadatas" + ], + "properties": { + "metadatas": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/UniquePoolId" + }, + { + "$ref": "#/definitions/PoolMetadata" + } + ], + "maxItems": 2, + "minItems": 2 + } + } + }, + "additionalProperties": false, + "definitions": { + "AssetEntry": { + "description": "An unchecked ANS asset entry. This is a string that is formatted as `src_chain>[intermediate_chain>]asset_name`", + "type": "string" + }, + "PoolMetadata": { + "type": "object", + "required": [ + "assets", + "dex", + "pool_type" + ], + "properties": { + "assets": { + "type": "array", + "items": { + "$ref": "#/definitions/AssetEntry" + } + }, + "dex": { + "type": "string" + }, + "pool_type": { + "$ref": "#/definitions/PoolType" + } + }, + "additionalProperties": false + }, + "PoolType": { + "type": "string", + "enum": [ + "ConstantProduct", + "Stable", + "Weighted", + "LiquidityBootstrap", + "ConcentratedLiquidity" + ] + }, + "UniquePoolId": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + }, + "pools": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "PoolsResponse", + "type": "object", + "required": [ + "pools" + ], + "properties": { + "pools": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/DexAssetPairing_for_AssetEntry" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/PoolReference" + } + } + ], + "maxItems": 2, + "minItems": 2 + } + } + }, + "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" + }, + "AssetEntry": { + "description": "An unchecked ANS asset entry. This is a string that is formatted as `src_chain>[intermediate_chain>]asset_name`", + "type": "string" + }, + "DexAssetPairing_for_AssetEntry": { + "description": "The key for an asset pairing Consists of the two assets and the dex name", + "type": "array", + "items": [ + { + "$ref": "#/definitions/AssetEntry" + }, + { + "$ref": "#/definitions/AssetEntry" + }, + { + "type": "string" + } + ], + "maxItems": 3, + "minItems": 3 + }, + "PoolAddressBase_for_Addr": { + "oneOf": [ + { + "type": "object", + "required": [ + "separate_addresses" + ], + "properties": { + "separate_addresses": { + "type": "object", + "required": [ + "liquidity", + "swap" + ], + "properties": { + "liquidity": { + "$ref": "#/definitions/Addr" + }, + "swap": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "contract" + ], + "properties": { + "contract": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + ] + }, + "PoolReference": { + "type": "object", + "required": [ + "pool_address", + "unique_id" + ], + "properties": { + "pool_address": { + "$ref": "#/definitions/PoolAddressBase_for_Addr" + }, + "unique_id": { + "$ref": "#/definitions/UniquePoolId" + } + }, + "additionalProperties": false + }, + "UniquePoolId": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + }, + "registered_dexes": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "RegisteredDexesResponse", + "type": "object", + "required": [ + "dexes" + ], + "properties": { + "dexes": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + } + } +} diff --git a/abstract/ibc-host/0.26.0/abstract-ibc-host.json b/abstract/ibc-host/0.26.0/abstract-ibc-host.json new file mode 100644 index 0000000..8863d3d --- /dev/null +++ b/abstract/ibc-host/0.26.0/abstract-ibc-host.json @@ -0,0 +1,2692 @@ +{ + "contract_name": "abstract-ibc-host", + "contract_version": "0.26.0", + "idl_version": "1.0.0", + "instantiate": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InstantiateMsg", + "description": "Used by Abstract to instantiate the contract The contract is then registered on the registry contract using [`crate::registry::ExecuteMsg::ProposeModules`].", + "type": "object", + "additionalProperties": false + }, + "execute": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ExecuteMsg", + "description": "Interface to the Host.", + "oneOf": [ + { + "type": "object", + "required": [ + "update_ownership" + ], + "properties": { + "update_ownership": { + "$ref": "#/definitions/Action" + } + }, + "additionalProperties": false + }, + { + "description": "Register the Polytone proxy for a specific chain. proxy should be a local address (will be validated)", + "type": "object", + "required": [ + "register_chain_proxy" + ], + "properties": { + "register_chain_proxy": { + "type": "object", + "required": [ + "chain", + "proxy" + ], + "properties": { + "chain": { + "$ref": "#/definitions/TruncatedChainId" + }, + "proxy": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Remove the Polytone proxy for a specific chain.", + "type": "object", + "required": [ + "remove_chain_proxy" + ], + "properties": { + "remove_chain_proxy": { + "type": "object", + "required": [ + "chain" + ], + "properties": { + "chain": { + "$ref": "#/definitions/TruncatedChainId" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Allows for remote execution from the Polytone implementation", + "type": "object", + "required": [ + "execute" + ], + "properties": { + "execute": { + "type": "object", + "required": [ + "account_address", + "account_id", + "action" + ], + "properties": { + "account_address": { + "description": "The address of the calling account id. This is used purely for the send-all-back method. We include it in all messages none-the-less to simplify the users life", + "type": "string" + }, + "account_id": { + "$ref": "#/definitions/AccountId" + }, + "action": { + "$ref": "#/definitions/HostAction" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Performs an execution on a local module", + "type": "object", + "required": [ + "module_execute" + ], + "properties": { + "module_execute": { + "type": "object", + "required": [ + "msg", + "source_module", + "target_module" + ], + "properties": { + "msg": { + "$ref": "#/definitions/Binary" + }, + "source_module": { + "$ref": "#/definitions/InstalledModuleIdentification" + }, + "target_module": { + "$ref": "#/definitions/ModuleInfo" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Sends the associated funds to the local account corresponding to the source account id", + "type": "object", + "required": [ + "fund" + ], + "properties": { + "fund": { + "type": "object", + "required": [ + "src_account", + "src_chain" + ], + "properties": { + "src_account": { + "$ref": "#/definitions/AccountId" + }, + "src_chain": { + "$ref": "#/definitions/TruncatedChainId" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "AccountId": { + "description": "Unique identifier for an account. On each chain this is unique.", + "type": "object", + "required": [ + "seq", + "trace" + ], + "properties": { + "seq": { + "description": "Unique identifier for the accounts create on a local chain. Is reused when creating an interchain account.", + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "trace": { + "description": "Sequence of the chain that triggered the IBC account creation `AccountTrace::Local` if the account was created locally Example: Account created on Juno which has an abstract interchain account on Osmosis, which in turn creates an interchain account on Terra -> `AccountTrace::Remote(vec![\"juno\", \"osmosis\"])`", + "allOf": [ + { + "$ref": "#/definitions/AccountTrace" + } + ] + } + }, + "additionalProperties": false + }, + "AccountTrace": { + "description": "The identifier of chain that triggered the account creation\n\nNote that the serialization to string and to Cw-storage-plus keys is different\n\nFor String, `AccountTrace::Remote(vec![\"neutron\", \"osmosis\"])` will be serialized as `osmosis>neutron`\n\nFor cw-storage-plus-key, `AccountTrace::Remote(vec![\"neutron\", \"osmosis\"])` will be serialized as `remote:[\"neutron\", \"osmosis\", \"\", \"\", \"\", \"\"]`", + "oneOf": [ + { + "type": "string", + "enum": [ + "local" + ] + }, + { + "type": "object", + "required": [ + "remote" + ], + "properties": { + "remote": { + "type": "array", + "items": { + "$ref": "#/definitions/TruncatedChainId" + } + } + }, + "additionalProperties": false + } + ] + }, + "Action": { + "description": "Actions that can be taken to alter the contract's ownership", + "oneOf": [ + { + "description": "Propose to transfer the contract's ownership to another account, optionally with an expiry time.\n\nCan only be called by the contract's current owner.\n\nAny existing pending ownership transfer is overwritten.", + "type": "object", + "required": [ + "transfer_ownership" + ], + "properties": { + "transfer_ownership": { + "type": "object", + "required": [ + "new_owner" + ], + "properties": { + "expiry": { + "anyOf": [ + { + "$ref": "#/definitions/Expiration" + }, + { + "type": "null" + } + ] + }, + "new_owner": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Accept the pending ownership transfer.\n\nCan only be called by the pending owner.", + "type": "string", + "enum": [ + "accept_ownership" + ] + }, + { + "description": "Give up the contract's ownership and the possibility of appointing a new owner.\n\nCan only be invoked by the contract's current owner.\n\nAny existing pending ownership transfer is canceled.", + "type": "string", + "enum": [ + "renounce_ownership" + ] + } + ] + }, + "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" + }, + "AnyMsg": { + "description": "A message encoded the same way as a protobuf [Any](https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/any.proto). This is the same structure as messages in `TxBody` from [ADR-020](https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-020-protobuf-transaction-encoding.md)", + "type": "object", + "required": [ + "type_url", + "value" + ], + "properties": { + "type_url": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/Binary" + } + }, + "additionalProperties": false + }, + "BankMsg": { + "description": "The message types of the bank module.\n\nSee https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/bank/v1beta1/tx.proto", + "oneOf": [ + { + "description": "Sends native tokens from the contract to the given address.\n\nThis is translated to a [MsgSend](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/bank/v1beta1/tx.proto#L19-L28). `from_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "send" + ], + "properties": { + "send": { + "type": "object", + "required": [ + "amount", + "to_address" + ], + "properties": { + "amount": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "to_address": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "This will burn the given coins from the contract's account. There is no Cosmos SDK message that performs this, but it can be done by calling the bank keeper. Important if a contract controls significant token supply that must be retired.", + "type": "object", + "required": [ + "burn" + ], + "properties": { + "burn": { + "type": "object", + "required": [ + "amount" + ], + "properties": { + "amount": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + } + }, + "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" + } + }, + "additionalProperties": false + }, + "CosmosMsg_for_Empty": { + "oneOf": [ + { + "type": "object", + "required": [ + "bank" + ], + "properties": { + "bank": { + "$ref": "#/definitions/BankMsg" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "custom" + ], + "properties": { + "custom": { + "$ref": "#/definitions/Empty" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "staking" + ], + "properties": { + "staking": { + "$ref": "#/definitions/StakingMsg" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "distribution" + ], + "properties": { + "distribution": { + "$ref": "#/definitions/DistributionMsg" + } + }, + "additionalProperties": false + }, + { + "description": "This is the same structure as messages in `TxBody` from [ADR-020](https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-020-protobuf-transaction-encoding.md)", + "deprecated": true, + "type": "object", + "required": [ + "stargate" + ], + "properties": { + "stargate": { + "type": "object", + "required": [ + "type_url", + "value" + ], + "properties": { + "type_url": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/Binary" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "`CosmosMsg::Any` is the replaces the \"stargate message\" – a message wrapped in a [protobuf Any](https://protobuf.dev/programming-guides/proto3/#any) that is suppored by the chain. It behaves the same as `CosmosMsg::Stargate` but has a better name and slightly improved syntax.\n\nThis is feature-gated at compile time with `cosmwasm_2_0` because a chain running CosmWasm < 2.0 cannot process this.", + "type": "object", + "required": [ + "any" + ], + "properties": { + "any": { + "$ref": "#/definitions/AnyMsg" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "ibc" + ], + "properties": { + "ibc": { + "$ref": "#/definitions/IbcMsg" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "wasm" + ], + "properties": { + "wasm": { + "$ref": "#/definitions/WasmMsg" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "gov" + ], + "properties": { + "gov": { + "$ref": "#/definitions/GovMsg" + } + }, + "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" + }, + "DistributionMsg": { + "description": "The message types of the distribution module.\n\nSee https://github.com/cosmos/cosmos-sdk/blob/v0.42.4/proto/cosmos/distribution/v1beta1/tx.proto", + "oneOf": [ + { + "description": "This is translated to a [MsgSetWithdrawAddress](https://github.com/cosmos/cosmos-sdk/blob/v0.42.4/proto/cosmos/distribution/v1beta1/tx.proto#L29-L37). `delegator_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "set_withdraw_address" + ], + "properties": { + "set_withdraw_address": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "description": "The `withdraw_address`", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "This is translated to a [[MsgWithdrawDelegatorReward](https://github.com/cosmos/cosmos-sdk/blob/v0.42.4/proto/cosmos/distribution/v1beta1/tx.proto#L42-L50). `delegator_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "withdraw_delegator_reward" + ], + "properties": { + "withdraw_delegator_reward": { + "type": "object", + "required": [ + "validator" + ], + "properties": { + "validator": { + "description": "The `validator_address`", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "This is translated to a [[MsgFundCommunityPool](https://github.com/cosmos/cosmos-sdk/blob/v0.42.4/proto/cosmos/distribution/v1beta1/tx.proto#LL69C1-L76C2). `depositor` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "fund_community_pool" + ], + "properties": { + "fund_community_pool": { + "type": "object", + "required": [ + "amount" + ], + "properties": { + "amount": { + "description": "The amount to spend", + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "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", + "additionalProperties": false + }, + "ExecuteMsg_for_Empty": { + "oneOf": [ + { + "description": "Executes the provided messages if sender is whitelisted", + "type": "object", + "required": [ + "execute" + ], + "properties": { + "execute": { + "type": "object", + "required": [ + "msgs" + ], + "properties": { + "msgs": { + "type": "array", + "items": { + "$ref": "#/definitions/CosmosMsg_for_Empty" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Execute a message and forward the Response data", + "type": "object", + "required": [ + "execute_with_data" + ], + "properties": { + "execute_with_data": { + "type": "object", + "required": [ + "msg" + ], + "properties": { + "msg": { + "$ref": "#/definitions/CosmosMsg_for_Empty" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Forward execution message to module", + "type": "object", + "required": [ + "execute_on_module" + ], + "properties": { + "execute_on_module": { + "type": "object", + "required": [ + "exec_msg", + "funds", + "module_id" + ], + "properties": { + "exec_msg": { + "$ref": "#/definitions/Binary" + }, + "funds": { + "description": "Funds attached from account to the module", + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "module_id": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Execute a Wasm Message with Account Admin privileges", + "type": "object", + "required": [ + "admin_execute" + ], + "properties": { + "admin_execute": { + "type": "object", + "required": [ + "addr", + "msg" + ], + "properties": { + "addr": { + "type": "string" + }, + "msg": { + "$ref": "#/definitions/Binary" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Forward execution message to module with Account Admin privileges", + "type": "object", + "required": [ + "admin_execute_on_module" + ], + "properties": { + "admin_execute_on_module": { + "type": "object", + "required": [ + "module_id", + "msg" + ], + "properties": { + "module_id": { + "type": "string" + }, + "msg": { + "$ref": "#/definitions/Binary" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Queries the Abstract Ica Client with the provided action query. Provides access to different ICA implementations for different ecosystems.", + "type": "object", + "required": [ + "ica_action" + ], + "properties": { + "ica_action": { + "type": "object", + "required": [ + "action_query_msg" + ], + "properties": { + "action_query_msg": { + "description": "Query of type `abstract-ica-client::msg::QueryMsg`", + "allOf": [ + { + "$ref": "#/definitions/Binary" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Update Abstract-specific configuration of the module. Only callable by the owner.", + "type": "object", + "required": [ + "update_internal_config" + ], + "properties": { + "update_internal_config": { + "$ref": "#/definitions/InternalConfigAction" + } + }, + "additionalProperties": false + }, + { + "description": "Install module using module factory, callable by Owner", + "type": "object", + "required": [ + "install_modules" + ], + "properties": { + "install_modules": { + "type": "object", + "required": [ + "modules" + ], + "properties": { + "modules": { + "type": "array", + "items": { + "$ref": "#/definitions/ModuleInstallConfig" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Uninstall a module given its ID.", + "type": "object", + "required": [ + "uninstall_module" + ], + "properties": { + "uninstall_module": { + "type": "object", + "required": [ + "module_id" + ], + "properties": { + "module_id": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Upgrade the module to a new version If module is `abstract::account` then the contract will do a self-migration. Self-migration is protected and only possible to the [`crate::objects::module_reference::ModuleReference::Account`] registered in Registry", + "type": "object", + "required": [ + "upgrade" + ], + "properties": { + "upgrade": { + "type": "object", + "required": [ + "modules" + ], + "properties": { + "modules": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/ModuleInfo" + }, + { + "anyOf": [ + { + "$ref": "#/definitions/Binary" + }, + { + "type": "null" + } + ] + } + ], + "maxItems": 2, + "minItems": 2 + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Creates a sub-account on the account", + "type": "object", + "required": [ + "create_sub_account" + ], + "properties": { + "create_sub_account": { + "type": "object", + "required": [ + "install_modules" + ], + "properties": { + "account_id": { + "description": "If `None`, will create a new local account without asserting account-id.\n\nWhen provided sequence in 0..2147483648 range: The tx will error When provided sequence in 2147483648..u32::MAX range: Signals use of unclaimed Account Id in this range. The tx will error if this account-id already claimed. Useful for instantiate2 address prediction.", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + }, + "description": { + "type": [ + "string", + "null" + ] + }, + "install_modules": { + "type": "array", + "items": { + "$ref": "#/definitions/ModuleInstallConfig" + } + }, + "link": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "namespace": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Update info", + "type": "object", + "required": [ + "update_info" + ], + "properties": { + "update_info": { + "type": "object", + "properties": { + "description": { + "type": [ + "string", + "null" + ] + }, + "link": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Update account statuses", + "type": "object", + "required": [ + "update_status" + ], + "properties": { + "update_status": { + "type": "object", + "properties": { + "is_suspended": { + "type": [ + "boolean", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Actions called by internal or external sub-accounts", + "type": "object", + "required": [ + "update_sub_account" + ], + "properties": { + "update_sub_account": { + "$ref": "#/definitions/UpdateSubAccountAction" + } + }, + "additionalProperties": false + }, + { + "description": "Update the contract's ownership. The `action` can propose transferring ownership to an account, accept a pending ownership transfer, or renounce the ownership of the account permanently.", + "type": "object", + "required": [ + "update_ownership" + ], + "properties": { + "update_ownership": { + "$ref": "#/definitions/GovAction" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "add_auth_method" + ], + "properties": { + "add_auth_method": { + "type": "object", + "required": [ + "add_authenticator" + ], + "properties": { + "add_authenticator": { + "$ref": "#/definitions/Empty" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "remove_auth_method" + ], + "properties": { + "remove_auth_method": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + } + }, + "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 + } + ] + }, + "GovAction": { + "description": "Actions that can be taken to alter the contract's governance ownership", + "oneOf": [ + { + "description": "Propose to transfer the contract's ownership to another account, optionally with an expiry time.\n\nCan only be called by the contract's current owner.\n\nAny existing pending ownership transfer is overwritten.", + "type": "object", + "required": [ + "transfer_ownership" + ], + "properties": { + "transfer_ownership": { + "type": "object", + "required": [ + "new_owner" + ], + "properties": { + "expiry": { + "anyOf": [ + { + "$ref": "#/definitions/Expiration" + }, + { + "type": "null" + } + ] + }, + "new_owner": { + "$ref": "#/definitions/GovernanceDetails_for_String" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Accept the pending ownership transfer.\n\nCan only be called by the pending owner.", + "type": "string", + "enum": [ + "accept_ownership" + ] + }, + { + "description": "Give up the contract's ownership and the possibility of appointing a new owner.\n\nCan only be invoked by the contract's current owner.\n\nAny existing pending ownership transfer is canceled.", + "type": "string", + "enum": [ + "renounce_ownership" + ] + } + ] + }, + "GovMsg": { + "description": "This message type allows the contract interact with the [x/gov] module in order to cast votes.\n\n[x/gov]: https://github.com/cosmos/cosmos-sdk/tree/v0.45.12/x/gov\n\n## Examples\n\nCast a simple vote:\n\n``` # use cosmwasm_std::{ # HexBinary, # Storage, Api, Querier, DepsMut, Deps, entry_point, Env, StdError, MessageInfo, # Response, QueryResponse, # }; # type ExecuteMsg = (); use cosmwasm_std::{GovMsg, VoteOption};\n\n#[entry_point] pub fn execute( deps: DepsMut, env: Env, info: MessageInfo, msg: ExecuteMsg, ) -> Result { // ... Ok(Response::new().add_message(GovMsg::Vote { proposal_id: 4, option: VoteOption::Yes, })) } ```\n\nCast a weighted vote:\n\n``` # use cosmwasm_std::{ # HexBinary, # Storage, Api, Querier, DepsMut, Deps, entry_point, Env, StdError, MessageInfo, # Response, QueryResponse, # }; # type ExecuteMsg = (); # #[cfg(feature = \"cosmwasm_1_2\")] use cosmwasm_std::{Decimal, GovMsg, VoteOption, WeightedVoteOption};\n\n# #[cfg(feature = \"cosmwasm_1_2\")] #[entry_point] pub fn execute( deps: DepsMut, env: Env, info: MessageInfo, msg: ExecuteMsg, ) -> Result { // ... Ok(Response::new().add_message(GovMsg::VoteWeighted { proposal_id: 4, options: vec![ WeightedVoteOption { option: VoteOption::Yes, weight: Decimal::percent(65), }, WeightedVoteOption { option: VoteOption::Abstain, weight: Decimal::percent(35), }, ], })) } ```", + "oneOf": [ + { + "description": "This maps directly to [MsgVote](https://github.com/cosmos/cosmos-sdk/blob/v0.42.5/proto/cosmos/gov/v1beta1/tx.proto#L46-L56) in the Cosmos SDK with voter set to the contract address.", + "type": "object", + "required": [ + "vote" + ], + "properties": { + "vote": { + "type": "object", + "required": [ + "option", + "proposal_id" + ], + "properties": { + "option": { + "description": "The vote option.\n\nThis used to be called \"vote\", but was changed for consistency with Cosmos SDK.", + "allOf": [ + { + "$ref": "#/definitions/VoteOption" + } + ] + }, + "proposal_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "This maps directly to [MsgVoteWeighted](https://github.com/cosmos/cosmos-sdk/blob/v0.45.8/proto/cosmos/gov/v1beta1/tx.proto#L66-L78) in the Cosmos SDK with voter set to the contract address.", + "type": "object", + "required": [ + "vote_weighted" + ], + "properties": { + "vote_weighted": { + "type": "object", + "required": [ + "options", + "proposal_id" + ], + "properties": { + "options": { + "type": "array", + "items": { + "$ref": "#/definitions/WeightedVoteOption" + } + }, + "proposal_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "GovernanceDetails_for_String": { + "description": "Governance types", + "oneOf": [ + { + "description": "A single address is admin", + "type": "object", + "required": [ + "monarchy" + ], + "properties": { + "monarchy": { + "type": "object", + "required": [ + "monarch" + ], + "properties": { + "monarch": { + "description": "The monarch's address", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Used when the account is a sub-account of another account.", + "type": "object", + "required": [ + "sub_account" + ], + "properties": { + "sub_account": { + "type": "object", + "required": [ + "account" + ], + "properties": { + "account": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "An external governance source. This could be a cw3 contract for instance The `governance_address` will be the admin of the Account.", + "type": "object", + "required": [ + "external" + ], + "properties": { + "external": { + "type": "object", + "required": [ + "governance_address", + "governance_type" + ], + "properties": { + "governance_address": { + "description": "The external contract address", + "type": "string" + }, + "governance_type": { + "description": "Governance type used for doing extra off-chain queries depending on the type.", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "This account is linked to an NFT collection. The owner of the specified token_id is the owner of the account", + "type": "object", + "required": [ + "n_f_t" + ], + "properties": { + "n_f_t": { + "type": "object", + "required": [ + "collection_addr", + "token_id" + ], + "properties": { + "collection_addr": { + "type": "string" + }, + "token_id": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Abstract account. Admin actions have to be sent through signature bit flag\n\nMore details: https://github.com/burnt-labs/abstract-account/blob/2c933a7b2a8dacc0ae5bf4344159a7d4ab080135/README.md", + "type": "object", + "required": [ + "abstract_account" + ], + "properties": { + "abstract_account": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "description": "Address of this abstract account", + "allOf": [ + { + "$ref": "#/definitions/Addr" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Renounced account This account no longer has an owner and cannot be used.", + "type": "object", + "required": [ + "renounced" + ], + "properties": { + "renounced": { + "type": "object", + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "HelperAction": { + "type": "string", + "enum": [ + "send_all_back" + ] + }, + "HostAction": { + "description": "Callable actions on a remote host", + "oneOf": [ + { + "description": "Dispatch messages to a remote Account. Will create a new Account if required.", + "type": "object", + "required": [ + "dispatch" + ], + "properties": { + "dispatch": { + "type": "object", + "required": [ + "account_msgs" + ], + "properties": { + "account_msgs": { + "type": "array", + "items": { + "$ref": "#/definitions/ExecuteMsg_for_Empty" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Can't be called by an account directly. These are permissioned messages that only the IBC Client is allowed to call by itself.", + "type": "object", + "required": [ + "internal" + ], + "properties": { + "internal": { + "$ref": "#/definitions/InternalAction" + } + }, + "additionalProperties": false + }, + { + "description": "Some helpers that allow calling dispatch messages faster (for actions that are called regularly)", + "type": "object", + "required": [ + "helpers" + ], + "properties": { + "helpers": { + "$ref": "#/definitions/HelperAction" + } + }, + "additionalProperties": false + } + ] + }, + "IbcMsg": { + "description": "These are messages in the IBC lifecycle. Only usable by IBC-enabled contracts (contracts that directly speak the IBC protocol via 6 entry points)", + "oneOf": [ + { + "description": "Sends bank tokens owned by the contract to the given address on another chain. The channel must already be established between the ibctransfer module on this chain and a matching module on the remote chain. We cannot select the port_id, this is whatever the local chain has bound the ibctransfer module to.", + "type": "object", + "required": [ + "transfer" + ], + "properties": { + "transfer": { + "type": "object", + "required": [ + "amount", + "channel_id", + "timeout", + "to_address" + ], + "properties": { + "amount": { + "description": "packet data only supports one coin https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/ibc/applications/transfer/v1/transfer.proto#L11-L20", + "allOf": [ + { + "$ref": "#/definitions/Coin" + } + ] + }, + "channel_id": { + "description": "existing channel to send the tokens over", + "type": "string" + }, + "memo": { + "description": "An optional memo. See the blog post [\"Moving Beyond Simple Token Transfers\"](https://medium.com/the-interchain-foundation/moving-beyond-simple-token-transfers-d42b2b1dc29b) for more information.\n\nThere is no difference between setting this to `None` or an empty string.\n\nThis field is only supported on chains with CosmWasm >= 2.0 and silently ignored on older chains. If you need support for both 1.x and 2.x chain with the same codebase, it is recommended to use `CosmosMsg::Stargate` with a custom MsgTransfer protobuf encoder instead.", + "type": [ + "string", + "null" + ] + }, + "timeout": { + "description": "when packet times out, measured on remote chain", + "allOf": [ + { + "$ref": "#/definitions/IbcTimeout" + } + ] + }, + "to_address": { + "description": "address on the remote chain to receive these tokens", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Sends an IBC packet with given data over the existing channel. Data should be encoded in a format defined by the channel version, and the module on the other side should know how to parse this.", + "type": "object", + "required": [ + "send_packet" + ], + "properties": { + "send_packet": { + "type": "object", + "required": [ + "channel_id", + "data", + "timeout" + ], + "properties": { + "channel_id": { + "type": "string" + }, + "data": { + "$ref": "#/definitions/Binary" + }, + "timeout": { + "description": "when packet times out, measured on remote chain", + "allOf": [ + { + "$ref": "#/definitions/IbcTimeout" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "This will close an existing channel that is owned by this contract. Port is auto-assigned to the contract's IBC port", + "type": "object", + "required": [ + "close_channel" + ], + "properties": { + "close_channel": { + "type": "object", + "required": [ + "channel_id" + ], + "properties": { + "channel_id": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "IbcTimeout": { + "description": "In IBC each package must set at least one type of timeout: the timestamp or the block height. Using this rather complex enum instead of two timeout fields we ensure that at least one timeout is set.", + "type": "object", + "properties": { + "block": { + "anyOf": [ + { + "$ref": "#/definitions/IbcTimeoutBlock" + }, + { + "type": "null" + } + ] + }, + "timestamp": { + "anyOf": [ + { + "$ref": "#/definitions/Timestamp" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + }, + "IbcTimeoutBlock": { + "description": "IBCTimeoutHeight Height is a monotonically increasing data type that can be compared against another Height for the purposes of updating and freezing clients. Ordering is (revision_number, timeout_height)", + "type": "object", + "required": [ + "height", + "revision" + ], + "properties": { + "height": { + "description": "block height after which the packet times out. the height within the given revision", + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "revision": { + "description": "the version that the client is currently on (e.g. after resetting the chain this could increment 1 as height drops to 0)", + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, + "InstalledModuleIdentification": { + "description": "This is used for identifying calling modules For adapters, we don't need the account id because it's independent of an account For apps and standalone, the account id is used to identify the calling module", + "type": "object", + "required": [ + "module_info" + ], + "properties": { + "account_id": { + "anyOf": [ + { + "$ref": "#/definitions/AccountId" + }, + { + "type": "null" + } + ] + }, + "module_info": { + "$ref": "#/definitions/ModuleInfo" + } + }, + "additionalProperties": false + }, + "InternalAction": { + "oneOf": [ + { + "description": "Registers a new account from a remote chain", + "type": "object", + "required": [ + "register" + ], + "properties": { + "register": { + "type": "object", + "required": [ + "install_modules" + ], + "properties": { + "description": { + "type": [ + "string", + "null" + ] + }, + "install_modules": { + "type": "array", + "items": { + "$ref": "#/definitions/ModuleInstallConfig" + } + }, + "link": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "namespace": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "InternalConfigAction": { + "description": "Internal configuration actions accessible from the [`ExecuteMsg::UpdateInternalConfig`] message.", + "oneOf": [ + { + "description": "Updates the [`state::ACCOUNT_MODULES`] map Only callable by owner.", + "type": "object", + "required": [ + "update_module_addresses" + ], + "properties": { + "update_module_addresses": { + "type": "object", + "required": [ + "to_add", + "to_remove" + ], + "properties": { + "to_add": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "type": "string" + }, + { + "type": "string" + } + ], + "maxItems": 2, + "minItems": 2 + } + }, + "to_remove": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Update the execution whitelist in [`state::WHITELISTED_MODULES`] Only callable by owner.", + "type": "object", + "required": [ + "update_whitelist" + ], + "properties": { + "update_whitelist": { + "type": "object", + "required": [ + "to_add", + "to_remove" + ], + "properties": { + "to_add": { + "description": "Addresses to add to the Account's execution whitelist", + "type": "array", + "items": { + "type": "string" + } + }, + "to_remove": { + "description": "Addresses to remove from the Account's execution whitelist", + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "ModuleInfo": { + "description": "Stores the namespace, name, and version of an Abstract module.", + "type": "object", + "required": [ + "name", + "namespace", + "version" + ], + "properties": { + "name": { + "description": "Name of the contract", + "type": "string" + }, + "namespace": { + "description": "Namespace of the module", + "allOf": [ + { + "$ref": "#/definitions/Namespace" + } + ] + }, + "version": { + "description": "Version of the module", + "allOf": [ + { + "$ref": "#/definitions/ModuleVersion" + } + ] + } + }, + "additionalProperties": false + }, + "ModuleInstallConfig": { + "description": "Module info and init message", + "type": "object", + "required": [ + "module" + ], + "properties": { + "init_msg": { + "anyOf": [ + { + "$ref": "#/definitions/Binary" + }, + { + "type": "null" + } + ] + }, + "module": { + "$ref": "#/definitions/ModuleInfo" + } + }, + "additionalProperties": false + }, + "ModuleVersion": { + "oneOf": [ + { + "type": "string", + "enum": [ + "latest" + ] + }, + { + "type": "object", + "required": [ + "version" + ], + "properties": { + "version": { + "type": "string" + } + }, + "additionalProperties": false + } + ] + }, + "Namespace": { + "description": "Represents an Abstract namespace for modules", + "type": "string" + }, + "StakingMsg": { + "description": "The message types of the staking module.\n\nSee https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto", + "oneOf": [ + { + "description": "This is translated to a [MsgDelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L81-L90). `delegator_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "delegate" + ], + "properties": { + "delegate": { + "type": "object", + "required": [ + "amount", + "validator" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Coin" + }, + "validator": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "This is translated to a [MsgUndelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L112-L121). `delegator_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "undelegate" + ], + "properties": { + "undelegate": { + "type": "object", + "required": [ + "amount", + "validator" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Coin" + }, + "validator": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "This is translated to a [MsgBeginRedelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L95-L105). `delegator_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "redelegate" + ], + "properties": { + "redelegate": { + "type": "object", + "required": [ + "amount", + "dst_validator", + "src_validator" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Coin" + }, + "dst_validator": { + "type": "string" + }, + "src_validator": { + "type": "string" + } + }, + "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" + } + ] + }, + "TruncatedChainId": { + "description": "The name of a chain, aka the chain-id without the post-fix number. ex. `cosmoshub-4` -> `cosmoshub`, `juno-1` -> `juno`", + "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" + }, + "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" + }, + "UpdateSubAccountAction": { + "oneOf": [ + { + "description": "Unregister sub-account It will unregister sub-account from the state Could be called only by the sub-account itself", + "type": "object", + "required": [ + "unregister_sub_account" + ], + "properties": { + "unregister_sub_account": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Register sub-account It will register new sub-account into the state Could be called by the sub-account", + "type": "object", + "required": [ + "register_sub_account" + ], + "properties": { + "register_sub_account": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "VoteOption": { + "type": "string", + "enum": [ + "yes", + "no", + "abstain", + "no_with_veto" + ] + }, + "WasmMsg": { + "description": "The message types of the wasm module.\n\nSee https://github.com/CosmWasm/wasmd/blob/v0.14.0/x/wasm/internal/types/tx.proto", + "oneOf": [ + { + "description": "Dispatches a call to another contract at a known address (with known ABI).\n\nThis is translated to a [MsgExecuteContract](https://github.com/CosmWasm/wasmd/blob/v0.14.0/x/wasm/internal/types/tx.proto#L68-L78). `sender` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "execute" + ], + "properties": { + "execute": { + "type": "object", + "required": [ + "contract_addr", + "funds", + "msg" + ], + "properties": { + "contract_addr": { + "type": "string" + }, + "funds": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "msg": { + "description": "msg is the json-encoded ExecuteMsg struct (as raw Binary)", + "allOf": [ + { + "$ref": "#/definitions/Binary" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Instantiates a new contracts from previously uploaded Wasm code.\n\nThe contract address is non-predictable. But it is guaranteed that when emitting the same Instantiate message multiple times, multiple instances on different addresses will be generated. See also Instantiate2.\n\nThis is translated to a [MsgInstantiateContract](https://github.com/CosmWasm/wasmd/blob/v0.29.2/proto/cosmwasm/wasm/v1/tx.proto#L53-L71). `sender` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "instantiate" + ], + "properties": { + "instantiate": { + "type": "object", + "required": [ + "code_id", + "funds", + "label", + "msg" + ], + "properties": { + "admin": { + "type": [ + "string", + "null" + ] + }, + "code_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "funds": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "label": { + "description": "A human-readable label for the contract.\n\nValid values should: - not be empty - not be bigger than 128 bytes (or some chain-specific limit) - not start / end with whitespace", + "type": "string" + }, + "msg": { + "description": "msg is the JSON-encoded InstantiateMsg struct (as raw Binary)", + "allOf": [ + { + "$ref": "#/definitions/Binary" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Instantiates a new contracts from previously uploaded Wasm code using a predictable address derivation algorithm implemented in [`cosmwasm_std::instantiate2_address`].\n\nThis is translated to a [MsgInstantiateContract2](https://github.com/CosmWasm/wasmd/blob/v0.29.2/proto/cosmwasm/wasm/v1/tx.proto#L73-L96). `sender` is automatically filled with the current contract's address. `fix_msg` is automatically set to false.", + "type": "object", + "required": [ + "instantiate2" + ], + "properties": { + "instantiate2": { + "type": "object", + "required": [ + "code_id", + "funds", + "label", + "msg", + "salt" + ], + "properties": { + "admin": { + "type": [ + "string", + "null" + ] + }, + "code_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "funds": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "label": { + "description": "A human-readable label for the contract.\n\nValid values should: - not be empty - not be bigger than 128 bytes (or some chain-specific limit) - not start / end with whitespace", + "type": "string" + }, + "msg": { + "description": "msg is the JSON-encoded InstantiateMsg struct (as raw Binary)", + "allOf": [ + { + "$ref": "#/definitions/Binary" + } + ] + }, + "salt": { + "$ref": "#/definitions/Binary" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Migrates a given contracts to use new wasm code. Passes a MigrateMsg to allow us to customize behavior.\n\nOnly the contract admin (as defined in wasmd), if any, is able to make this call.\n\nThis is translated to a [MsgMigrateContract](https://github.com/CosmWasm/wasmd/blob/v0.14.0/x/wasm/internal/types/tx.proto#L86-L96). `sender` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "migrate" + ], + "properties": { + "migrate": { + "type": "object", + "required": [ + "contract_addr", + "msg", + "new_code_id" + ], + "properties": { + "contract_addr": { + "type": "string" + }, + "msg": { + "description": "msg is the json-encoded MigrateMsg struct that will be passed to the new code", + "allOf": [ + { + "$ref": "#/definitions/Binary" + } + ] + }, + "new_code_id": { + "description": "the code_id of the new logic to place in the given contract", + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Sets a new admin (for migrate) on the given contract. Fails if this contract is not currently admin of the target contract.", + "type": "object", + "required": [ + "update_admin" + ], + "properties": { + "update_admin": { + "type": "object", + "required": [ + "admin", + "contract_addr" + ], + "properties": { + "admin": { + "type": "string" + }, + "contract_addr": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Clears the admin on the given contract, so no more migration possible. Fails if this contract is not currently admin of the target contract.", + "type": "object", + "required": [ + "clear_admin" + ], + "properties": { + "clear_admin": { + "type": "object", + "required": [ + "contract_addr" + ], + "properties": { + "contract_addr": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "WeightedVoteOption": { + "type": "object", + "required": [ + "option", + "weight" + ], + "properties": { + "option": { + "$ref": "#/definitions/VoteOption" + }, + "weight": { + "$ref": "#/definitions/Decimal" + } + }, + "additionalProperties": false + } + } + }, + "query": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryMsg", + "description": "Query Host message", + "oneOf": [ + { + "description": "Queries the ownership of the ibc client contract Returns [`cw_ownable::Ownership`]", + "type": "object", + "required": [ + "ownership" + ], + "properties": { + "ownership": { + "type": "object", + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Returns [`ConfigResponse`].", + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "type": "object", + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Lists all the polytone proxy contracts and their respective client chain registered with the host. Returns [`ClientProxiesResponse`].", + "type": "object", + "required": [ + "client_proxies" + ], + "properties": { + "client_proxies": { + "type": "object", + "properties": { + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + }, + "start_after": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Returns the polytone proxy contract address for a specific client chain. Returns [`ClientProxyResponse`].", + "type": "object", + "required": [ + "client_proxy" + ], + "properties": { + "client_proxy": { + "type": "object", + "required": [ + "chain" + ], + "properties": { + "chain": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Performs an query on a local module", + "type": "object", + "required": [ + "module_query" + ], + "properties": { + "module_query": { + "type": "object", + "required": [ + "msg", + "target_module" + ], + "properties": { + "msg": { + "$ref": "#/definitions/Binary" + }, + "target_module": { + "$ref": "#/definitions/InstalledModuleIdentification" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "AccountId": { + "description": "Unique identifier for an account. On each chain this is unique.", + "type": "object", + "required": [ + "seq", + "trace" + ], + "properties": { + "seq": { + "description": "Unique identifier for the accounts create on a local chain. Is reused when creating an interchain account.", + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "trace": { + "description": "Sequence of the chain that triggered the IBC account creation `AccountTrace::Local` if the account was created locally Example: Account created on Juno which has an abstract interchain account on Osmosis, which in turn creates an interchain account on Terra -> `AccountTrace::Remote(vec![\"juno\", \"osmosis\"])`", + "allOf": [ + { + "$ref": "#/definitions/AccountTrace" + } + ] + } + }, + "additionalProperties": false + }, + "AccountTrace": { + "description": "The identifier of chain that triggered the account creation\n\nNote that the serialization to string and to Cw-storage-plus keys is different\n\nFor String, `AccountTrace::Remote(vec![\"neutron\", \"osmosis\"])` will be serialized as `osmosis>neutron`\n\nFor cw-storage-plus-key, `AccountTrace::Remote(vec![\"neutron\", \"osmosis\"])` will be serialized as `remote:[\"neutron\", \"osmosis\", \"\", \"\", \"\", \"\"]`", + "oneOf": [ + { + "type": "string", + "enum": [ + "local" + ] + }, + { + "type": "object", + "required": [ + "remote" + ], + "properties": { + "remote": { + "type": "array", + "items": { + "$ref": "#/definitions/TruncatedChainId" + } + } + }, + "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" + }, + "InstalledModuleIdentification": { + "description": "This is used for identifying calling modules For adapters, we don't need the account id because it's independent of an account For apps and standalone, the account id is used to identify the calling module", + "type": "object", + "required": [ + "module_info" + ], + "properties": { + "account_id": { + "anyOf": [ + { + "$ref": "#/definitions/AccountId" + }, + { + "type": "null" + } + ] + }, + "module_info": { + "$ref": "#/definitions/ModuleInfo" + } + }, + "additionalProperties": false + }, + "ModuleInfo": { + "description": "Stores the namespace, name, and version of an Abstract module.", + "type": "object", + "required": [ + "name", + "namespace", + "version" + ], + "properties": { + "name": { + "description": "Name of the contract", + "type": "string" + }, + "namespace": { + "description": "Namespace of the module", + "allOf": [ + { + "$ref": "#/definitions/Namespace" + } + ] + }, + "version": { + "description": "Version of the module", + "allOf": [ + { + "$ref": "#/definitions/ModuleVersion" + } + ] + } + }, + "additionalProperties": false + }, + "ModuleVersion": { + "oneOf": [ + { + "type": "string", + "enum": [ + "latest" + ] + }, + { + "type": "object", + "required": [ + "version" + ], + "properties": { + "version": { + "type": "string" + } + }, + "additionalProperties": false + } + ] + }, + "Namespace": { + "description": "Represents an Abstract namespace for modules", + "type": "string" + }, + "TruncatedChainId": { + "description": "The name of a chain, aka the chain-id without the post-fix number. ex. `cosmoshub-4` -> `cosmoshub`, `juno-1` -> `juno`", + "type": "string" + } + } + }, + "migrate": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "MigrateMsg", + "type": "object", + "additionalProperties": false + }, + "sudo": null, + "responses": { + "client_proxies": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ClientProxiesResponse", + "type": "object", + "required": [ + "chains" + ], + "properties": { + "chains": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/TruncatedChainId" + }, + { + "$ref": "#/definitions/Addr" + } + ], + "maxItems": 2, + "minItems": 2 + } + } + }, + "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" + }, + "TruncatedChainId": { + "description": "The name of a chain, aka the chain-id without the post-fix number. ex. `cosmoshub-4` -> `cosmoshub`, `juno-1` -> `juno`", + "type": "string" + } + } + }, + "client_proxy": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ClientProxyResponse", + "type": "object", + "required": [ + "proxy" + ], + "properties": { + "proxy": { + "$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" + } + } + }, + "config": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ConfigResponse", + "type": "object", + "required": [ + "ans_host_address", + "module_factory_address", + "registry_address" + ], + "properties": { + "ans_host_address": { + "$ref": "#/definitions/Addr" + }, + "module_factory_address": { + "$ref": "#/definitions/Addr" + }, + "registry_address": { + "$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" + } + } + }, + "module_query": { + "$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" + }, + "ownership": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Ownership_for_Addr", + "description": "The contract's ownership info", + "type": "object", + "properties": { + "owner": { + "description": "The contract's current owner. `None` if the ownership has been renounced.", + "anyOf": [ + { + "$ref": "#/definitions/Addr" + }, + { + "type": "null" + } + ] + }, + "pending_expiry": { + "description": "The deadline for the pending owner to accept the ownership. `None` if there isn't a pending ownership transfer, or if a transfer exists and it doesn't have a deadline.", + "anyOf": [ + { + "$ref": "#/definitions/Expiration" + }, + { + "type": "null" + } + ] + }, + "pending_owner": { + "description": "The account who has been proposed to take over the ownership. `None` if there isn't a pending ownership transfer.", + "anyOf": [ + { + "$ref": "#/definitions/Addr" + }, + { + "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" + }, + "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" + } + ] + }, + "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" + } + } + } + } +} diff --git a/abstract/ica-client/0.26.0/abstract-ica-client.json b/abstract/ica-client/0.26.0/abstract-ica-client.json new file mode 100644 index 0000000..e899cda --- /dev/null +++ b/abstract/ica-client/0.26.0/abstract-ica-client.json @@ -0,0 +1,1571 @@ +{ + "contract_name": "abstract-ica-client", + "contract_version": "0.26.0", + "idl_version": "1.0.0", + "instantiate": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InstantiateMsg", + "description": "This needs no info. Owner of the contract is whoever signed the InstantiateMsg.", + "type": "object", + "required": [ + "ans_host_address", + "registry_address" + ], + "properties": { + "ans_host_address": { + "type": "string" + }, + "registry_address": { + "type": "string" + } + }, + "additionalProperties": false + }, + "execute": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ExecuteMsg", + "oneOf": [ + { + "description": "Update the contract's ownership. The `action` to be provided can be either to propose transferring ownership to an account, accept a pending ownership transfer, or renounce the ownership permanently.", + "type": "object", + "required": [ + "update_ownership" + ], + "properties": { + "update_ownership": { + "$ref": "#/definitions/Action" + } + }, + "additionalProperties": false + } + ], + "definitions": { + "Action": { + "description": "Actions that can be taken to alter the contract's ownership", + "oneOf": [ + { + "description": "Propose to transfer the contract's ownership to another account, optionally with an expiry time.\n\nCan only be called by the contract's current owner.\n\nAny existing pending ownership transfer is overwritten.", + "type": "object", + "required": [ + "transfer_ownership" + ], + "properties": { + "transfer_ownership": { + "type": "object", + "required": [ + "new_owner" + ], + "properties": { + "expiry": { + "anyOf": [ + { + "$ref": "#/definitions/Expiration" + }, + { + "type": "null" + } + ] + }, + "new_owner": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Accept the pending ownership transfer.\n\nCan only be called by the pending owner.", + "type": "string", + "enum": [ + "accept_ownership" + ] + }, + { + "description": "Give up the contract's ownership and the possibility of appointing a new owner.\n\nCan only be invoked by the contract's current owner.\n\nAny existing pending ownership transfer is canceled.", + "type": "string", + "enum": [ + "renounce_ownership" + ] + } + ] + }, + "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" + } + ] + }, + "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": "Returns config Returns [`ConfigResponse`]", + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "type": "object", + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "ica_action" + ], + "properties": { + "ica_action": { + "type": "object", + "required": [ + "account_address", + "actions", + "chain" + ], + "properties": { + "account_address": { + "type": "string" + }, + "actions": { + "type": "array", + "items": { + "$ref": "#/definitions/IcaAction" + } + }, + "chain": { + "$ref": "#/definitions/TruncatedChainId" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Query the contract's ownership information", + "type": "object", + "required": [ + "ownership" + ], + "properties": { + "ownership": { + "type": "object", + "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" + }, + "CallbackRequest": { + "description": "A request for a callback.", + "type": "object", + "required": [ + "msg", + "receiver" + ], + "properties": { + "msg": { + "$ref": "#/definitions/Binary" + }, + "receiver": { + "type": "string" + } + }, + "additionalProperties": false + }, + "Coin": { + "type": "object", + "required": [ + "amount", + "denom" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Uint128" + }, + "denom": { + "type": "string" + } + }, + "additionalProperties": false + }, + "EvmMsg_for_String": { + "description": "A message to be sent to the EVM", + "oneOf": [ + { + "description": "Call a contract with the given data", + "type": "object", + "required": [ + "call" + ], + "properties": { + "call": { + "type": "object", + "required": [ + "data", + "to" + ], + "properties": { + "allow_failure": { + "description": "Don't revert entire batch when this transaction fails", + "type": [ + "boolean", + "null" + ] + }, + "data": { + "description": "The calldata to send to the contract", + "allOf": [ + { + "$ref": "#/definitions/HexBinary" + } + ] + }, + "to": { + "description": "The address of the contract to call, must pass checksum validation", + "type": "string" + }, + "value": { + "description": "Native ETH used in the tx", + "anyOf": [ + { + "$ref": "#/definitions/Uint128" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Delegate a call to an external contract. This is dangerous and should be used with caution.", + "type": "object", + "required": [ + "delegate_call" + ], + "properties": { + "delegate_call": { + "type": "object", + "required": [ + "data", + "to" + ], + "properties": { + "allow_failure": { + "description": "Don't revert entire batch when this transaction fails", + "type": [ + "boolean", + "null" + ] + }, + "data": { + "description": "The calldata to send to the contract", + "allOf": [ + { + "$ref": "#/definitions/HexBinary" + } + ] + }, + "to": { + "description": "The address of the contract to call, must pass checksum validation", + "type": "string" + }, + "value": { + "description": "Native ETH used in the tx", + "anyOf": [ + { + "$ref": "#/definitions/Uint128" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "HexBinary": { + "description": "This is a wrapper around Vec to add hex de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is similar to `cosmwasm_std::Binary` but uses hex. See also .", + "type": "string" + }, + "IcaAction": { + "description": "Interchain Account Action", + "oneOf": [ + { + "type": "object", + "required": [ + "execute" + ], + "properties": { + "execute": { + "$ref": "#/definitions/IcaExecute" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "fund" + ], + "properties": { + "fund": { + "type": "object", + "required": [ + "funds" + ], + "properties": { + "funds": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "memo": { + "type": [ + "string", + "null" + ] + }, + "receiver": { + "anyOf": [ + { + "$ref": "#/definitions/Binary" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "IcaExecute": { + "oneOf": [ + { + "type": "object", + "required": [ + "evm" + ], + "properties": { + "evm": { + "type": "object", + "required": [ + "msgs" + ], + "properties": { + "callback": { + "anyOf": [ + { + "$ref": "#/definitions/CallbackRequest" + }, + { + "type": "null" + } + ] + }, + "msgs": { + "type": "array", + "items": { + "$ref": "#/definitions/EvmMsg_for_String" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "TruncatedChainId": { + "description": "The name of a chain, aka the chain-id without the post-fix number. ex. `cosmoshub-4` -> `cosmoshub`, `juno-1` -> `juno`", + "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" + } + } + }, + "migrate": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "MigrateMsg", + "oneOf": [ + { + "type": "object", + "required": [ + "instantiate" + ], + "properties": { + "instantiate": { + "$ref": "#/definitions/InstantiateMsg" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "migrate" + ], + "properties": { + "migrate": { + "type": "object", + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "InstantiateMsg": { + "description": "This needs no info. Owner of the contract is whoever signed the InstantiateMsg.", + "type": "object", + "required": [ + "ans_host_address", + "registry_address" + ], + "properties": { + "ans_host_address": { + "type": "string" + }, + "registry_address": { + "type": "string" + } + }, + "additionalProperties": false + } + } + }, + "sudo": null, + "responses": { + "config": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ConfigResponse", + "type": "object", + "required": [ + "ans_host", + "registry_address" + ], + "properties": { + "ans_host": { + "$ref": "#/definitions/Addr" + }, + "registry_address": { + "$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" + } + } + }, + "ica_action": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "IcaActionResult", + "type": "object", + "required": [ + "msgs" + ], + "properties": { + "msgs": { + "description": "messages that call the underlying implementations (be it polytone/cw-ica-controller/etc)", + "type": "array", + "items": { + "$ref": "#/definitions/CosmosMsg_for_Empty" + } + } + }, + "additionalProperties": false, + "definitions": { + "AnyMsg": { + "description": "A message encoded the same way as a protobuf [Any](https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/any.proto). This is the same structure as messages in `TxBody` from [ADR-020](https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-020-protobuf-transaction-encoding.md)", + "type": "object", + "required": [ + "type_url", + "value" + ], + "properties": { + "type_url": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/Binary" + } + }, + "additionalProperties": false + }, + "BankMsg": { + "description": "The message types of the bank module.\n\nSee https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/bank/v1beta1/tx.proto", + "oneOf": [ + { + "description": "Sends native tokens from the contract to the given address.\n\nThis is translated to a [MsgSend](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/bank/v1beta1/tx.proto#L19-L28). `from_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "send" + ], + "properties": { + "send": { + "type": "object", + "required": [ + "amount", + "to_address" + ], + "properties": { + "amount": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "to_address": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "This will burn the given coins from the contract's account. There is no Cosmos SDK message that performs this, but it can be done by calling the bank keeper. Important if a contract controls significant token supply that must be retired.", + "type": "object", + "required": [ + "burn" + ], + "properties": { + "burn": { + "type": "object", + "required": [ + "amount" + ], + "properties": { + "amount": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + } + }, + "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" + } + }, + "additionalProperties": false + }, + "CosmosMsg_for_Empty": { + "oneOf": [ + { + "type": "object", + "required": [ + "bank" + ], + "properties": { + "bank": { + "$ref": "#/definitions/BankMsg" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "custom" + ], + "properties": { + "custom": { + "$ref": "#/definitions/Empty" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "staking" + ], + "properties": { + "staking": { + "$ref": "#/definitions/StakingMsg" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "distribution" + ], + "properties": { + "distribution": { + "$ref": "#/definitions/DistributionMsg" + } + }, + "additionalProperties": false + }, + { + "description": "This is the same structure as messages in `TxBody` from [ADR-020](https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-020-protobuf-transaction-encoding.md)", + "deprecated": true, + "type": "object", + "required": [ + "stargate" + ], + "properties": { + "stargate": { + "type": "object", + "required": [ + "type_url", + "value" + ], + "properties": { + "type_url": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/Binary" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "`CosmosMsg::Any` is the replaces the \"stargate message\" – a message wrapped in a [protobuf Any](https://protobuf.dev/programming-guides/proto3/#any) that is suppored by the chain. It behaves the same as `CosmosMsg::Stargate` but has a better name and slightly improved syntax.\n\nThis is feature-gated at compile time with `cosmwasm_2_0` because a chain running CosmWasm < 2.0 cannot process this.", + "type": "object", + "required": [ + "any" + ], + "properties": { + "any": { + "$ref": "#/definitions/AnyMsg" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "ibc" + ], + "properties": { + "ibc": { + "$ref": "#/definitions/IbcMsg" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "wasm" + ], + "properties": { + "wasm": { + "$ref": "#/definitions/WasmMsg" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "gov" + ], + "properties": { + "gov": { + "$ref": "#/definitions/GovMsg" + } + }, + "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" + }, + "DistributionMsg": { + "description": "The message types of the distribution module.\n\nSee https://github.com/cosmos/cosmos-sdk/blob/v0.42.4/proto/cosmos/distribution/v1beta1/tx.proto", + "oneOf": [ + { + "description": "This is translated to a [MsgSetWithdrawAddress](https://github.com/cosmos/cosmos-sdk/blob/v0.42.4/proto/cosmos/distribution/v1beta1/tx.proto#L29-L37). `delegator_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "set_withdraw_address" + ], + "properties": { + "set_withdraw_address": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "description": "The `withdraw_address`", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "This is translated to a [[MsgWithdrawDelegatorReward](https://github.com/cosmos/cosmos-sdk/blob/v0.42.4/proto/cosmos/distribution/v1beta1/tx.proto#L42-L50). `delegator_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "withdraw_delegator_reward" + ], + "properties": { + "withdraw_delegator_reward": { + "type": "object", + "required": [ + "validator" + ], + "properties": { + "validator": { + "description": "The `validator_address`", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "This is translated to a [[MsgFundCommunityPool](https://github.com/cosmos/cosmos-sdk/blob/v0.42.4/proto/cosmos/distribution/v1beta1/tx.proto#LL69C1-L76C2). `depositor` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "fund_community_pool" + ], + "properties": { + "fund_community_pool": { + "type": "object", + "required": [ + "amount" + ], + "properties": { + "amount": { + "description": "The amount to spend", + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "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", + "additionalProperties": false + }, + "GovMsg": { + "description": "This message type allows the contract interact with the [x/gov] module in order to cast votes.\n\n[x/gov]: https://github.com/cosmos/cosmos-sdk/tree/v0.45.12/x/gov\n\n## Examples\n\nCast a simple vote:\n\n``` # use cosmwasm_std::{ # HexBinary, # Storage, Api, Querier, DepsMut, Deps, entry_point, Env, StdError, MessageInfo, # Response, QueryResponse, # }; # type ExecuteMsg = (); use cosmwasm_std::{GovMsg, VoteOption};\n\n#[entry_point] pub fn execute( deps: DepsMut, env: Env, info: MessageInfo, msg: ExecuteMsg, ) -> Result { // ... Ok(Response::new().add_message(GovMsg::Vote { proposal_id: 4, option: VoteOption::Yes, })) } ```\n\nCast a weighted vote:\n\n``` # use cosmwasm_std::{ # HexBinary, # Storage, Api, Querier, DepsMut, Deps, entry_point, Env, StdError, MessageInfo, # Response, QueryResponse, # }; # type ExecuteMsg = (); # #[cfg(feature = \"cosmwasm_1_2\")] use cosmwasm_std::{Decimal, GovMsg, VoteOption, WeightedVoteOption};\n\n# #[cfg(feature = \"cosmwasm_1_2\")] #[entry_point] pub fn execute( deps: DepsMut, env: Env, info: MessageInfo, msg: ExecuteMsg, ) -> Result { // ... Ok(Response::new().add_message(GovMsg::VoteWeighted { proposal_id: 4, options: vec![ WeightedVoteOption { option: VoteOption::Yes, weight: Decimal::percent(65), }, WeightedVoteOption { option: VoteOption::Abstain, weight: Decimal::percent(35), }, ], })) } ```", + "oneOf": [ + { + "description": "This maps directly to [MsgVote](https://github.com/cosmos/cosmos-sdk/blob/v0.42.5/proto/cosmos/gov/v1beta1/tx.proto#L46-L56) in the Cosmos SDK with voter set to the contract address.", + "type": "object", + "required": [ + "vote" + ], + "properties": { + "vote": { + "type": "object", + "required": [ + "option", + "proposal_id" + ], + "properties": { + "option": { + "description": "The vote option.\n\nThis used to be called \"vote\", but was changed for consistency with Cosmos SDK.", + "allOf": [ + { + "$ref": "#/definitions/VoteOption" + } + ] + }, + "proposal_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "This maps directly to [MsgVoteWeighted](https://github.com/cosmos/cosmos-sdk/blob/v0.45.8/proto/cosmos/gov/v1beta1/tx.proto#L66-L78) in the Cosmos SDK with voter set to the contract address.", + "type": "object", + "required": [ + "vote_weighted" + ], + "properties": { + "vote_weighted": { + "type": "object", + "required": [ + "options", + "proposal_id" + ], + "properties": { + "options": { + "type": "array", + "items": { + "$ref": "#/definitions/WeightedVoteOption" + } + }, + "proposal_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "IbcMsg": { + "description": "These are messages in the IBC lifecycle. Only usable by IBC-enabled contracts (contracts that directly speak the IBC protocol via 6 entry points)", + "oneOf": [ + { + "description": "Sends bank tokens owned by the contract to the given address on another chain. The channel must already be established between the ibctransfer module on this chain and a matching module on the remote chain. We cannot select the port_id, this is whatever the local chain has bound the ibctransfer module to.", + "type": "object", + "required": [ + "transfer" + ], + "properties": { + "transfer": { + "type": "object", + "required": [ + "amount", + "channel_id", + "timeout", + "to_address" + ], + "properties": { + "amount": { + "description": "packet data only supports one coin https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/ibc/applications/transfer/v1/transfer.proto#L11-L20", + "allOf": [ + { + "$ref": "#/definitions/Coin" + } + ] + }, + "channel_id": { + "description": "existing channel to send the tokens over", + "type": "string" + }, + "memo": { + "description": "An optional memo. See the blog post [\"Moving Beyond Simple Token Transfers\"](https://medium.com/the-interchain-foundation/moving-beyond-simple-token-transfers-d42b2b1dc29b) for more information.\n\nThere is no difference between setting this to `None` or an empty string.\n\nThis field is only supported on chains with CosmWasm >= 2.0 and silently ignored on older chains. If you need support for both 1.x and 2.x chain with the same codebase, it is recommended to use `CosmosMsg::Stargate` with a custom MsgTransfer protobuf encoder instead.", + "type": [ + "string", + "null" + ] + }, + "timeout": { + "description": "when packet times out, measured on remote chain", + "allOf": [ + { + "$ref": "#/definitions/IbcTimeout" + } + ] + }, + "to_address": { + "description": "address on the remote chain to receive these tokens", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Sends an IBC packet with given data over the existing channel. Data should be encoded in a format defined by the channel version, and the module on the other side should know how to parse this.", + "type": "object", + "required": [ + "send_packet" + ], + "properties": { + "send_packet": { + "type": "object", + "required": [ + "channel_id", + "data", + "timeout" + ], + "properties": { + "channel_id": { + "type": "string" + }, + "data": { + "$ref": "#/definitions/Binary" + }, + "timeout": { + "description": "when packet times out, measured on remote chain", + "allOf": [ + { + "$ref": "#/definitions/IbcTimeout" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "This will close an existing channel that is owned by this contract. Port is auto-assigned to the contract's IBC port", + "type": "object", + "required": [ + "close_channel" + ], + "properties": { + "close_channel": { + "type": "object", + "required": [ + "channel_id" + ], + "properties": { + "channel_id": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "IbcTimeout": { + "description": "In IBC each package must set at least one type of timeout: the timestamp or the block height. Using this rather complex enum instead of two timeout fields we ensure that at least one timeout is set.", + "type": "object", + "properties": { + "block": { + "anyOf": [ + { + "$ref": "#/definitions/IbcTimeoutBlock" + }, + { + "type": "null" + } + ] + }, + "timestamp": { + "anyOf": [ + { + "$ref": "#/definitions/Timestamp" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + }, + "IbcTimeoutBlock": { + "description": "IBCTimeoutHeight Height is a monotonically increasing data type that can be compared against another Height for the purposes of updating and freezing clients. Ordering is (revision_number, timeout_height)", + "type": "object", + "required": [ + "height", + "revision" + ], + "properties": { + "height": { + "description": "block height after which the packet times out. the height within the given revision", + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "revision": { + "description": "the version that the client is currently on (e.g. after resetting the chain this could increment 1 as height drops to 0)", + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, + "StakingMsg": { + "description": "The message types of the staking module.\n\nSee https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto", + "oneOf": [ + { + "description": "This is translated to a [MsgDelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L81-L90). `delegator_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "delegate" + ], + "properties": { + "delegate": { + "type": "object", + "required": [ + "amount", + "validator" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Coin" + }, + "validator": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "This is translated to a [MsgUndelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L112-L121). `delegator_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "undelegate" + ], + "properties": { + "undelegate": { + "type": "object", + "required": [ + "amount", + "validator" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Coin" + }, + "validator": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "This is translated to a [MsgBeginRedelegate](https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L95-L105). `delegator_address` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "redelegate" + ], + "properties": { + "redelegate": { + "type": "object", + "required": [ + "amount", + "dst_validator", + "src_validator" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Coin" + }, + "dst_validator": { + "type": "string" + }, + "src_validator": { + "type": "string" + } + }, + "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" + }, + "VoteOption": { + "type": "string", + "enum": [ + "yes", + "no", + "abstain", + "no_with_veto" + ] + }, + "WasmMsg": { + "description": "The message types of the wasm module.\n\nSee https://github.com/CosmWasm/wasmd/blob/v0.14.0/x/wasm/internal/types/tx.proto", + "oneOf": [ + { + "description": "Dispatches a call to another contract at a known address (with known ABI).\n\nThis is translated to a [MsgExecuteContract](https://github.com/CosmWasm/wasmd/blob/v0.14.0/x/wasm/internal/types/tx.proto#L68-L78). `sender` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "execute" + ], + "properties": { + "execute": { + "type": "object", + "required": [ + "contract_addr", + "funds", + "msg" + ], + "properties": { + "contract_addr": { + "type": "string" + }, + "funds": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "msg": { + "description": "msg is the json-encoded ExecuteMsg struct (as raw Binary)", + "allOf": [ + { + "$ref": "#/definitions/Binary" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Instantiates a new contracts from previously uploaded Wasm code.\n\nThe contract address is non-predictable. But it is guaranteed that when emitting the same Instantiate message multiple times, multiple instances on different addresses will be generated. See also Instantiate2.\n\nThis is translated to a [MsgInstantiateContract](https://github.com/CosmWasm/wasmd/blob/v0.29.2/proto/cosmwasm/wasm/v1/tx.proto#L53-L71). `sender` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "instantiate" + ], + "properties": { + "instantiate": { + "type": "object", + "required": [ + "code_id", + "funds", + "label", + "msg" + ], + "properties": { + "admin": { + "type": [ + "string", + "null" + ] + }, + "code_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "funds": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "label": { + "description": "A human-readable label for the contract.\n\nValid values should: - not be empty - not be bigger than 128 bytes (or some chain-specific limit) - not start / end with whitespace", + "type": "string" + }, + "msg": { + "description": "msg is the JSON-encoded InstantiateMsg struct (as raw Binary)", + "allOf": [ + { + "$ref": "#/definitions/Binary" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Instantiates a new contracts from previously uploaded Wasm code using a predictable address derivation algorithm implemented in [`cosmwasm_std::instantiate2_address`].\n\nThis is translated to a [MsgInstantiateContract2](https://github.com/CosmWasm/wasmd/blob/v0.29.2/proto/cosmwasm/wasm/v1/tx.proto#L73-L96). `sender` is automatically filled with the current contract's address. `fix_msg` is automatically set to false.", + "type": "object", + "required": [ + "instantiate2" + ], + "properties": { + "instantiate2": { + "type": "object", + "required": [ + "code_id", + "funds", + "label", + "msg", + "salt" + ], + "properties": { + "admin": { + "type": [ + "string", + "null" + ] + }, + "code_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "funds": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "label": { + "description": "A human-readable label for the contract.\n\nValid values should: - not be empty - not be bigger than 128 bytes (or some chain-specific limit) - not start / end with whitespace", + "type": "string" + }, + "msg": { + "description": "msg is the JSON-encoded InstantiateMsg struct (as raw Binary)", + "allOf": [ + { + "$ref": "#/definitions/Binary" + } + ] + }, + "salt": { + "$ref": "#/definitions/Binary" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Migrates a given contracts to use new wasm code. Passes a MigrateMsg to allow us to customize behavior.\n\nOnly the contract admin (as defined in wasmd), if any, is able to make this call.\n\nThis is translated to a [MsgMigrateContract](https://github.com/CosmWasm/wasmd/blob/v0.14.0/x/wasm/internal/types/tx.proto#L86-L96). `sender` is automatically filled with the current contract's address.", + "type": "object", + "required": [ + "migrate" + ], + "properties": { + "migrate": { + "type": "object", + "required": [ + "contract_addr", + "msg", + "new_code_id" + ], + "properties": { + "contract_addr": { + "type": "string" + }, + "msg": { + "description": "msg is the json-encoded MigrateMsg struct that will be passed to the new code", + "allOf": [ + { + "$ref": "#/definitions/Binary" + } + ] + }, + "new_code_id": { + "description": "the code_id of the new logic to place in the given contract", + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Sets a new admin (for migrate) on the given contract. Fails if this contract is not currently admin of the target contract.", + "type": "object", + "required": [ + "update_admin" + ], + "properties": { + "update_admin": { + "type": "object", + "required": [ + "admin", + "contract_addr" + ], + "properties": { + "admin": { + "type": "string" + }, + "contract_addr": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Clears the admin on the given contract, so no more migration possible. Fails if this contract is not currently admin of the target contract.", + "type": "object", + "required": [ + "clear_admin" + ], + "properties": { + "clear_admin": { + "type": "object", + "required": [ + "contract_addr" + ], + "properties": { + "contract_addr": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "WeightedVoteOption": { + "type": "object", + "required": [ + "option", + "weight" + ], + "properties": { + "option": { + "$ref": "#/definitions/VoteOption" + }, + "weight": { + "$ref": "#/definitions/Decimal" + } + }, + "additionalProperties": false + } + } + }, + "ownership": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Ownership_for_String", + "description": "The contract's ownership info", + "type": "object", + "properties": { + "owner": { + "description": "The contract's current owner. `None` if the ownership has been renounced.", + "type": [ + "string", + "null" + ] + }, + "pending_expiry": { + "description": "The deadline for the pending owner to accept the ownership. `None` if there isn't a pending ownership transfer, or if a transfer exists and it doesn't have a deadline.", + "anyOf": [ + { + "$ref": "#/definitions/Expiration" + }, + { + "type": "null" + } + ] + }, + "pending_owner": { + "description": "The account who has been proposed to take over the ownership. `None` if there isn't a pending ownership transfer.", + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false, + "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" + } + ] + }, + "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" + } + } + } + } +} diff --git a/abstract/module-factory/0.26.0/abstract-module-factory.json b/abstract/module-factory/0.26.0/abstract-module-factory.json new file mode 100644 index 0000000..e7120c3 --- /dev/null +++ b/abstract/module-factory/0.26.0/abstract-module-factory.json @@ -0,0 +1,634 @@ +{ + "contract_name": "abstract-module-factory", + "contract_version": "0.26.0", + "idl_version": "1.0.0", + "instantiate": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InstantiateMsg", + "type": "object", + "required": [ + "admin" + ], + "properties": { + "admin": { + "type": "string" + } + }, + "additionalProperties": false + }, + "execute": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ExecuteMsg", + "description": "Module Factory Execute messages", + "oneOf": [ + { + "description": "Install modules", + "type": "object", + "required": [ + "install_modules" + ], + "properties": { + "install_modules": { + "type": "object", + "required": [ + "modules", + "salt" + ], + "properties": { + "modules": { + "type": "array", + "items": { + "$ref": "#/definitions/FactoryModuleInstallConfig" + } + }, + "salt": { + "$ref": "#/definitions/Binary" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Update the contract's ownership. The `action` to be provided can be either to propose transferring ownership to an account, accept a pending ownership transfer, or renounce the ownership permanently.", + "type": "object", + "required": [ + "update_ownership" + ], + "properties": { + "update_ownership": { + "$ref": "#/definitions/Action" + } + }, + "additionalProperties": false + } + ], + "definitions": { + "Action": { + "description": "Actions that can be taken to alter the contract's ownership", + "oneOf": [ + { + "description": "Propose to transfer the contract's ownership to another account, optionally with an expiry time.\n\nCan only be called by the contract's current owner.\n\nAny existing pending ownership transfer is overwritten.", + "type": "object", + "required": [ + "transfer_ownership" + ], + "properties": { + "transfer_ownership": { + "type": "object", + "required": [ + "new_owner" + ], + "properties": { + "expiry": { + "anyOf": [ + { + "$ref": "#/definitions/Expiration" + }, + { + "type": "null" + } + ] + }, + "new_owner": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Accept the pending ownership transfer.\n\nCan only be called by the pending owner.", + "type": "string", + "enum": [ + "accept_ownership" + ] + }, + { + "description": "Give up the contract's ownership and the possibility of appointing a new owner.\n\nCan only be invoked by the contract's current owner.\n\nAny existing pending ownership transfer is canceled.", + "type": "string", + "enum": [ + "renounce_ownership" + ] + } + ] + }, + "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 + } + ] + }, + "FactoryModuleInstallConfig": { + "description": "Module info, init message and salt", + "type": "object", + "required": [ + "module" + ], + "properties": { + "init_msg": { + "anyOf": [ + { + "$ref": "#/definitions/Binary" + }, + { + "type": "null" + } + ] + }, + "module": { + "$ref": "#/definitions/ModuleInfo" + } + }, + "additionalProperties": false + }, + "ModuleInfo": { + "description": "Stores the namespace, name, and version of an Abstract module.", + "type": "object", + "required": [ + "name", + "namespace", + "version" + ], + "properties": { + "name": { + "description": "Name of the contract", + "type": "string" + }, + "namespace": { + "description": "Namespace of the module", + "allOf": [ + { + "$ref": "#/definitions/Namespace" + } + ] + }, + "version": { + "description": "Version of the module", + "allOf": [ + { + "$ref": "#/definitions/ModuleVersion" + } + ] + } + }, + "additionalProperties": false + }, + "ModuleVersion": { + "oneOf": [ + { + "type": "string", + "enum": [ + "latest" + ] + }, + { + "type": "object", + "required": [ + "version" + ], + "properties": { + "version": { + "type": "string" + } + }, + "additionalProperties": false + } + ] + }, + "Namespace": { + "description": "Represents an Abstract namespace for modules", + "type": "string" + }, + "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" + } + ] + }, + "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", + "description": "Module factory query messages", + "oneOf": [ + { + "description": "Get the configuration for the module factory. Returns [`ConfigResponse`]", + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "type": "object", + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Simulate install module cost Returns [`SimulateInstallModulesResponse`]", + "type": "object", + "required": [ + "simulate_install_modules" + ], + "properties": { + "simulate_install_modules": { + "type": "object", + "required": [ + "modules" + ], + "properties": { + "modules": { + "type": "array", + "items": { + "$ref": "#/definitions/ModuleInfo" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Query the contract's ownership information", + "type": "object", + "required": [ + "ownership" + ], + "properties": { + "ownership": { + "type": "object", + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "ModuleInfo": { + "description": "Stores the namespace, name, and version of an Abstract module.", + "type": "object", + "required": [ + "name", + "namespace", + "version" + ], + "properties": { + "name": { + "description": "Name of the contract", + "type": "string" + }, + "namespace": { + "description": "Namespace of the module", + "allOf": [ + { + "$ref": "#/definitions/Namespace" + } + ] + }, + "version": { + "description": "Version of the module", + "allOf": [ + { + "$ref": "#/definitions/ModuleVersion" + } + ] + } + }, + "additionalProperties": false + }, + "ModuleVersion": { + "oneOf": [ + { + "type": "string", + "enum": [ + "latest" + ] + }, + { + "type": "object", + "required": [ + "version" + ], + "properties": { + "version": { + "type": "string" + } + }, + "additionalProperties": false + } + ] + }, + "Namespace": { + "description": "Represents an Abstract namespace for modules", + "type": "string" + } + } + }, + "migrate": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "MigrateMsg", + "description": "We currently take no arguments for migrations", + "oneOf": [ + { + "description": "Migrating from blob contract", + "type": "object", + "required": [ + "instantiate" + ], + "properties": { + "instantiate": { + "$ref": "#/definitions/InstantiateMsg" + } + }, + "additionalProperties": false + }, + { + "description": "Migrating from previous version", + "type": "object", + "required": [ + "migrate" + ], + "properties": { + "migrate": { + "type": "object", + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "InstantiateMsg": { + "type": "object", + "required": [ + "admin" + ], + "properties": { + "admin": { + "type": "string" + } + }, + "additionalProperties": false + } + } + }, + "sudo": null, + "responses": { + "config": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ConfigResponse", + "description": "Module factory config response", + "type": "object", + "required": [ + "ans_host_address", + "registry_address" + ], + "properties": { + "ans_host_address": { + "$ref": "#/definitions/Addr" + }, + "registry_address": { + "$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" + } + } + }, + "ownership": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Ownership_for_String", + "description": "The contract's ownership info", + "type": "object", + "properties": { + "owner": { + "description": "The contract's current owner. `None` if the ownership has been renounced.", + "type": [ + "string", + "null" + ] + }, + "pending_expiry": { + "description": "The deadline for the pending owner to accept the ownership. `None` if there isn't a pending ownership transfer, or if a transfer exists and it doesn't have a deadline.", + "anyOf": [ + { + "$ref": "#/definitions/Expiration" + }, + { + "type": "null" + } + ] + }, + "pending_owner": { + "description": "The account who has been proposed to take over the ownership. `None` if there isn't a pending ownership transfer.", + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false, + "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" + } + ] + }, + "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" + } + } + }, + "simulate_install_modules": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "SimulateInstallModulesResponse", + "type": "object", + "required": [ + "initialization_funds", + "monetization_funds", + "total_required_funds" + ], + "properties": { + "initialization_funds": { + "description": "Funds transferred to the module contract at instantiation", + "type": "array", + "items": { + "type": "array", + "items": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + } + ], + "maxItems": 2, + "minItems": 2 + } + }, + "monetization_funds": { + "description": "Funds transferred to the module creator", + "type": "array", + "items": { + "type": "array", + "items": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/Coin" + } + ], + "maxItems": 2, + "minItems": 2 + } + }, + "total_required_funds": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + } + }, + "additionalProperties": false, + "definitions": { + "Coin": { + "type": "object", + "required": [ + "amount", + "denom" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Uint128" + }, + "denom": { + "type": "string" + } + }, + "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" + } + } + } + } +} diff --git a/abstract/registry/0.26.0/abstract-registry.json b/abstract/registry/0.26.0/abstract-registry.json new file mode 100644 index 0000000..e70f81b --- /dev/null +++ b/abstract/registry/0.26.0/abstract-registry.json @@ -0,0 +1,2457 @@ +{ + "contract_name": "abstract-registry", + "contract_version": "0.26.0", + "idl_version": "1.0.0", + "instantiate": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InstantiateMsg", + "description": "Registry Instantiate Msg", + "type": "object", + "required": [ + "admin" + ], + "properties": { + "admin": { + "type": "string" + }, + "namespace_registration_fee": { + "anyOf": [ + { + "$ref": "#/definitions/Coin" + }, + { + "type": "null" + } + ] + }, + "security_enabled": { + "description": "allows users to directly register modules without going through approval Also allows them to change the module reference of an existing module Also allows to claim namespaces permisionlessly SHOULD ONLY BE `true` FOR TESTING", + "type": [ + "boolean", + "null" + ] + } + }, + "additionalProperties": false, + "definitions": { + "Coin": { + "type": "object", + "required": [ + "amount", + "denom" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Uint128" + }, + "denom": { + "type": "string" + } + }, + "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", + "description": "Registry Execute Msg", + "oneOf": [ + { + "description": "Remove some version of a module", + "type": "object", + "required": [ + "remove_module" + ], + "properties": { + "remove_module": { + "type": "object", + "required": [ + "module" + ], + "properties": { + "module": { + "$ref": "#/definitions/ModuleInfo" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Yank a version of a module so that it may not be installed Only callable by Admin", + "type": "object", + "required": [ + "yank_module" + ], + "properties": { + "yank_module": { + "type": "object", + "required": [ + "module" + ], + "properties": { + "module": { + "$ref": "#/definitions/ModuleInfo" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Propose new modules to the version registry Namespaces need to be claimed by the Account before proposing modules Once proposed, the modules need to be approved by the Admin via [`ExecuteMsg::ApproveOrRejectModules`]", + "type": "object", + "required": [ + "propose_modules" + ], + "properties": { + "propose_modules": { + "type": "object", + "required": [ + "modules" + ], + "properties": { + "modules": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/ModuleInfo" + }, + { + "$ref": "#/definitions/ModuleReference" + } + ], + "maxItems": 2, + "minItems": 2 + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Sets the metadata configuration for a module. Only callable by namespace admin", + "type": "object", + "required": [ + "update_module_configuration" + ], + "properties": { + "update_module_configuration": { + "type": "object", + "required": [ + "module_name", + "namespace", + "update_module" + ], + "properties": { + "module_name": { + "type": "string" + }, + "namespace": { + "$ref": "#/definitions/Namespace" + }, + "update_module": { + "$ref": "#/definitions/UpdateModule" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Approve or reject modules This takes the modules in the pending_modules map and moves them to the registered_modules map or yanked_modules map", + "type": "object", + "required": [ + "approve_or_reject_modules" + ], + "properties": { + "approve_or_reject_modules": { + "type": "object", + "required": [ + "approves", + "rejects" + ], + "properties": { + "approves": { + "type": "array", + "items": { + "$ref": "#/definitions/ModuleInfo" + } + }, + "rejects": { + "type": "array", + "items": { + "$ref": "#/definitions/ModuleInfo" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Claim namespaces", + "type": "object", + "required": [ + "claim_namespace" + ], + "properties": { + "claim_namespace": { + "type": "object", + "required": [ + "account_id", + "namespace" + ], + "properties": { + "account_id": { + "$ref": "#/definitions/AccountId" + }, + "namespace": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Forgo namespace claims Only admin or root user can call this", + "type": "object", + "required": [ + "forgo_namespace" + ], + "properties": { + "forgo_namespace": { + "type": "object", + "required": [ + "namespaces" + ], + "properties": { + "namespaces": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Register a new Account to the deployed Accounts. Claims namespace if provided. Only new accounts can call this.", + "type": "object", + "required": [ + "add_account" + ], + "properties": { + "add_account": { + "type": "object", + "required": [ + "creator" + ], + "properties": { + "creator": { + "type": "string" + }, + "namespace": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Updates configuration of the Registry contract", + "type": "object", + "required": [ + "update_config" + ], + "properties": { + "update_config": { + "type": "object", + "properties": { + "namespace_registration_fee": { + "description": "The fee charged when registering a namespace", + "anyOf": [ + { + "$ref": "#/definitions/Clearable_for_Coin" + }, + { + "type": "null" + } + ] + }, + "security_enabled": { + "description": "Whether the contract allows direct module registration", + "type": [ + "boolean", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Update the contract's ownership. The `action` to be provided can be either to propose transferring ownership to an account, accept a pending ownership transfer, or renounce the ownership permanently.", + "type": "object", + "required": [ + "update_ownership" + ], + "properties": { + "update_ownership": { + "$ref": "#/definitions/Action" + } + }, + "additionalProperties": false + } + ], + "definitions": { + "AccountId": { + "description": "Unique identifier for an account. On each chain this is unique.", + "type": "object", + "required": [ + "seq", + "trace" + ], + "properties": { + "seq": { + "description": "Unique identifier for the accounts create on a local chain. Is reused when creating an interchain account.", + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "trace": { + "description": "Sequence of the chain that triggered the IBC account creation `AccountTrace::Local` if the account was created locally Example: Account created on Juno which has an abstract interchain account on Osmosis, which in turn creates an interchain account on Terra -> `AccountTrace::Remote(vec![\"juno\", \"osmosis\"])`", + "allOf": [ + { + "$ref": "#/definitions/AccountTrace" + } + ] + } + }, + "additionalProperties": false + }, + "AccountTrace": { + "description": "The identifier of chain that triggered the account creation\n\nNote that the serialization to string and to Cw-storage-plus keys is different\n\nFor String, `AccountTrace::Remote(vec![\"neutron\", \"osmosis\"])` will be serialized as `osmosis>neutron`\n\nFor cw-storage-plus-key, `AccountTrace::Remote(vec![\"neutron\", \"osmosis\"])` will be serialized as `remote:[\"neutron\", \"osmosis\", \"\", \"\", \"\", \"\"]`", + "oneOf": [ + { + "type": "string", + "enum": [ + "local" + ] + }, + { + "type": "object", + "required": [ + "remote" + ], + "properties": { + "remote": { + "type": "array", + "items": { + "$ref": "#/definitions/TruncatedChainId" + } + } + }, + "additionalProperties": false + } + ] + }, + "Action": { + "description": "Actions that can be taken to alter the contract's ownership", + "oneOf": [ + { + "description": "Propose to transfer the contract's ownership to another account, optionally with an expiry time.\n\nCan only be called by the contract's current owner.\n\nAny existing pending ownership transfer is overwritten.", + "type": "object", + "required": [ + "transfer_ownership" + ], + "properties": { + "transfer_ownership": { + "type": "object", + "required": [ + "new_owner" + ], + "properties": { + "expiry": { + "anyOf": [ + { + "$ref": "#/definitions/Expiration" + }, + { + "type": "null" + } + ] + }, + "new_owner": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Accept the pending ownership transfer.\n\nCan only be called by the pending owner.", + "type": "string", + "enum": [ + "accept_ownership" + ] + }, + { + "description": "Give up the contract's ownership and the possibility of appointing a new owner.\n\nCan only be invoked by the contract's current owner.\n\nAny existing pending ownership transfer is canceled.", + "type": "string", + "enum": [ + "renounce_ownership" + ] + } + ] + }, + "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" + }, + "Clearable_for_Coin": { + "description": "A type representing a value that can either be cleared or set with a value of type `C`. ``` use cosmwasm_std::{StdResult, Response, DepsMut}; use cw_storage_plus::Item; use cw_clearable::Clearable;\n\nconst FOO: Item> = Item::new(\"foo\");\n\npub fn update_config(deps: DepsMut, foo: Option>) -> StdResult{ if let Some(foo) = foo { FOO.save(deps.storage, &foo.into()); } Ok(Response::new()) } ```", + "oneOf": [ + { + "description": "Clear the current state.", + "type": "string", + "enum": [ + "clear" + ] + }, + { + "description": "Set state with a value of type `C`.", + "type": "object", + "required": [ + "set" + ], + "properties": { + "set": { + "$ref": "#/definitions/Coin" + } + }, + "additionalProperties": false + } + ] + }, + "Coin": { + "type": "object", + "required": [ + "amount", + "denom" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Uint128" + }, + "denom": { + "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 + } + ] + }, + "FixedFee": { + "description": "A wrapper around Coin to help handle fixed fees (with multiples).", + "type": "object", + "required": [ + "fee" + ], + "properties": { + "fee": { + "description": "Fee to be paid for a unit of a service", + "allOf": [ + { + "$ref": "#/definitions/Coin" + } + ] + } + }, + "additionalProperties": false + }, + "ModuleInfo": { + "description": "Stores the namespace, name, and version of an Abstract module.", + "type": "object", + "required": [ + "name", + "namespace", + "version" + ], + "properties": { + "name": { + "description": "Name of the contract", + "type": "string" + }, + "namespace": { + "description": "Namespace of the module", + "allOf": [ + { + "$ref": "#/definitions/Namespace" + } + ] + }, + "version": { + "description": "Version of the module", + "allOf": [ + { + "$ref": "#/definitions/ModuleVersion" + } + ] + } + }, + "additionalProperties": false + }, + "ModuleReference": { + "oneOf": [ + { + "description": "Account Contract", + "type": "object", + "required": [ + "account" + ], + "properties": { + "account": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, + { + "description": "Native Abstract Contracts", + "type": "object", + "required": [ + "native" + ], + "properties": { + "native": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + }, + { + "description": "Installable adapters", + "type": "object", + "required": [ + "adapter" + ], + "properties": { + "adapter": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + }, + { + "description": "Installable apps", + "type": "object", + "required": [ + "app" + ], + "properties": { + "app": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, + { + "description": "A stand-alone contract", + "type": "object", + "required": [ + "standalone" + ], + "properties": { + "standalone": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, + { + "description": "A contract that exposes some service to others.", + "type": "object", + "required": [ + "service" + ], + "properties": { + "service": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + } + ] + }, + "ModuleVersion": { + "oneOf": [ + { + "type": "string", + "enum": [ + "latest" + ] + }, + { + "type": "object", + "required": [ + "version" + ], + "properties": { + "version": { + "type": "string" + } + }, + "additionalProperties": false + } + ] + }, + "Monetization": { + "description": "Module Monetization", + "oneOf": [ + { + "type": "string", + "enum": [ + "none" + ] + }, + { + "type": "object", + "required": [ + "install_fee" + ], + "properties": { + "install_fee": { + "$ref": "#/definitions/FixedFee" + } + }, + "additionalProperties": false + } + ] + }, + "Namespace": { + "description": "Represents an Abstract namespace for modules", + "type": "string" + }, + "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" + } + ] + }, + "TruncatedChainId": { + "description": "The name of a chain, aka the chain-id without the post-fix number. ex. `cosmoshub-4` -> `cosmoshub`, `juno-1` -> `juno`", + "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" + }, + "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" + }, + "UpdateModule": { + "oneOf": [ + { + "description": "Updates the default metadata for the module", + "type": "object", + "required": [ + "default" + ], + "properties": { + "default": { + "type": "object", + "required": [ + "metadata" + ], + "properties": { + "metadata": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Update configuration for specified version", + "type": "object", + "required": [ + "versioned" + ], + "properties": { + "versioned": { + "type": "object", + "required": [ + "version" + ], + "properties": { + "instantiation_funds": { + "description": "Update the init_funds for this version", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Coin" + } + }, + "metadata": { + "description": "Update the metadata for this version", + "type": [ + "string", + "null" + ] + }, + "monetization": { + "description": "Update the monetization for this version", + "anyOf": [ + { + "$ref": "#/definitions/Monetization" + }, + { + "type": "null" + } + ] + }, + "version": { + "description": "Module version", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + } + } + }, + "query": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryMsg", + "description": "Registry Query Msg", + "oneOf": [ + { + "description": "Query Core of Accounts Returns [`AccountsResponse`]", + "type": "object", + "required": [ + "accounts" + ], + "properties": { + "accounts": { + "type": "object", + "required": [ + "account_ids" + ], + "properties": { + "account_ids": { + "type": "array", + "items": { + "$ref": "#/definitions/AccountId" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Queries module information Modules that are yanked are not returned Returns [`ModulesResponse`]", + "type": "object", + "required": [ + "modules" + ], + "properties": { + "modules": { + "type": "object", + "required": [ + "infos" + ], + "properties": { + "infos": { + "type": "array", + "items": { + "$ref": "#/definitions/ModuleInfo" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Queries namespaces for an account Returns [`NamespacesResponse`]", + "type": "object", + "required": [ + "namespaces" + ], + "properties": { + "namespaces": { + "type": "object", + "required": [ + "accounts" + ], + "properties": { + "accounts": { + "type": "array", + "items": { + "$ref": "#/definitions/AccountId" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Queries information about the namespace Returns [`NamespaceResponse`]", + "type": "object", + "required": [ + "namespace" + ], + "properties": { + "namespace": { + "type": "object", + "required": [ + "namespace" + ], + "properties": { + "namespace": { + "$ref": "#/definitions/Namespace" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Returns [`ConfigResponse`]", + "type": "object", + "required": [ + "config" + ], + "properties": { + "config": { + "type": "object", + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Returns [`AccountListResponse`]", + "type": "object", + "required": [ + "account_list" + ], + "properties": { + "account_list": { + "type": "object", + "properties": { + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint8", + "minimum": 0.0 + }, + "start_after": { + "anyOf": [ + { + "$ref": "#/definitions/AccountId" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Returns [`ModulesListResponse`]", + "type": "object", + "required": [ + "module_list" + ], + "properties": { + "module_list": { + "type": "object", + "properties": { + "filter": { + "anyOf": [ + { + "$ref": "#/definitions/ModuleFilter" + }, + { + "type": "null" + } + ] + }, + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint8", + "minimum": 0.0 + }, + "start_after": { + "anyOf": [ + { + "$ref": "#/definitions/ModuleInfo" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Returns [`NamespaceListResponse`]", + "type": "object", + "required": [ + "namespace_list" + ], + "properties": { + "namespace_list": { + "type": "object", + "properties": { + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint8", + "minimum": 0.0 + }, + "start_after": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Query the contract's ownership information", + "type": "object", + "required": [ + "ownership" + ], + "properties": { + "ownership": { + "type": "object", + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "AccountId": { + "description": "Unique identifier for an account. On each chain this is unique.", + "type": "object", + "required": [ + "seq", + "trace" + ], + "properties": { + "seq": { + "description": "Unique identifier for the accounts create on a local chain. Is reused when creating an interchain account.", + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "trace": { + "description": "Sequence of the chain that triggered the IBC account creation `AccountTrace::Local` if the account was created locally Example: Account created on Juno which has an abstract interchain account on Osmosis, which in turn creates an interchain account on Terra -> `AccountTrace::Remote(vec![\"juno\", \"osmosis\"])`", + "allOf": [ + { + "$ref": "#/definitions/AccountTrace" + } + ] + } + }, + "additionalProperties": false + }, + "AccountTrace": { + "description": "The identifier of chain that triggered the account creation\n\nNote that the serialization to string and to Cw-storage-plus keys is different\n\nFor String, `AccountTrace::Remote(vec![\"neutron\", \"osmosis\"])` will be serialized as `osmosis>neutron`\n\nFor cw-storage-plus-key, `AccountTrace::Remote(vec![\"neutron\", \"osmosis\"])` will be serialized as `remote:[\"neutron\", \"osmosis\", \"\", \"\", \"\", \"\"]`", + "oneOf": [ + { + "type": "string", + "enum": [ + "local" + ] + }, + { + "type": "object", + "required": [ + "remote" + ], + "properties": { + "remote": { + "type": "array", + "items": { + "$ref": "#/definitions/TruncatedChainId" + } + } + }, + "additionalProperties": false + } + ] + }, + "ModuleFilter": { + "description": "A ModuleFilter that mirrors the [`ModuleInfo`] struct.", + "type": "object", + "properties": { + "name": { + "type": [ + "string", + "null" + ] + }, + "namespace": { + "type": [ + "string", + "null" + ] + }, + "status": { + "anyOf": [ + { + "$ref": "#/definitions/ModuleStatus" + }, + { + "type": "null" + } + ] + }, + "version": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + }, + "ModuleInfo": { + "description": "Stores the namespace, name, and version of an Abstract module.", + "type": "object", + "required": [ + "name", + "namespace", + "version" + ], + "properties": { + "name": { + "description": "Name of the contract", + "type": "string" + }, + "namespace": { + "description": "Namespace of the module", + "allOf": [ + { + "$ref": "#/definitions/Namespace" + } + ] + }, + "version": { + "description": "Version of the module", + "allOf": [ + { + "$ref": "#/definitions/ModuleVersion" + } + ] + } + }, + "additionalProperties": false + }, + "ModuleStatus": { + "description": "Module status", + "oneOf": [ + { + "description": "Modules in use", + "type": "string", + "enum": [ + "registered" + ] + }, + { + "description": "Pending modules", + "type": "string", + "enum": [ + "pending" + ] + }, + { + "description": "Yanked modules", + "type": "string", + "enum": [ + "yanked" + ] + } + ] + }, + "ModuleVersion": { + "oneOf": [ + { + "type": "string", + "enum": [ + "latest" + ] + }, + { + "type": "object", + "required": [ + "version" + ], + "properties": { + "version": { + "type": "string" + } + }, + "additionalProperties": false + } + ] + }, + "Namespace": { + "description": "Represents an Abstract namespace for modules", + "type": "string" + }, + "TruncatedChainId": { + "description": "The name of a chain, aka the chain-id without the post-fix number. ex. `cosmoshub-4` -> `cosmoshub`, `juno-1` -> `juno`", + "type": "string" + } + } + }, + "migrate": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "MigrateMsg", + "oneOf": [ + { + "description": "Migrating from blob contract", + "type": "object", + "required": [ + "instantiate" + ], + "properties": { + "instantiate": { + "$ref": "#/definitions/InstantiateMsg" + } + }, + "additionalProperties": false + }, + { + "description": "Migrating from previous version", + "type": "object", + "required": [ + "migrate" + ], + "properties": { + "migrate": { + "type": "object", + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "Coin": { + "type": "object", + "required": [ + "amount", + "denom" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Uint128" + }, + "denom": { + "type": "string" + } + }, + "additionalProperties": false + }, + "InstantiateMsg": { + "description": "Registry Instantiate Msg", + "type": "object", + "required": [ + "admin" + ], + "properties": { + "admin": { + "type": "string" + }, + "namespace_registration_fee": { + "anyOf": [ + { + "$ref": "#/definitions/Coin" + }, + { + "type": "null" + } + ] + }, + "security_enabled": { + "description": "allows users to directly register modules without going through approval Also allows them to change the module reference of an existing module Also allows to claim namespaces permisionlessly SHOULD ONLY BE `true` FOR TESTING", + "type": [ + "boolean", + "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" + } + } + }, + "sudo": null, + "responses": { + "account_list": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "AccountListResponse", + "type": "object", + "required": [ + "accounts" + ], + "properties": { + "accounts": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/AccountId" + }, + { + "$ref": "#/definitions/Account_for_Addr" + } + ], + "maxItems": 2, + "minItems": 2 + } + } + }, + "additionalProperties": false, + "definitions": { + "AccountId": { + "description": "Unique identifier for an account. On each chain this is unique.", + "type": "object", + "required": [ + "seq", + "trace" + ], + "properties": { + "seq": { + "description": "Unique identifier for the accounts create on a local chain. Is reused when creating an interchain account.", + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "trace": { + "description": "Sequence of the chain that triggered the IBC account creation `AccountTrace::Local` if the account was created locally Example: Account created on Juno which has an abstract interchain account on Osmosis, which in turn creates an interchain account on Terra -> `AccountTrace::Remote(vec![\"juno\", \"osmosis\"])`", + "allOf": [ + { + "$ref": "#/definitions/AccountTrace" + } + ] + } + }, + "additionalProperties": false + }, + "AccountTrace": { + "description": "The identifier of chain that triggered the account creation\n\nNote that the serialization to string and to Cw-storage-plus keys is different\n\nFor String, `AccountTrace::Remote(vec![\"neutron\", \"osmosis\"])` will be serialized as `osmosis>neutron`\n\nFor cw-storage-plus-key, `AccountTrace::Remote(vec![\"neutron\", \"osmosis\"])` will be serialized as `remote:[\"neutron\", \"osmosis\", \"\", \"\", \"\", \"\"]`", + "oneOf": [ + { + "type": "string", + "enum": [ + "local" + ] + }, + { + "type": "object", + "required": [ + "remote" + ], + "properties": { + "remote": { + "type": "array", + "items": { + "$ref": "#/definitions/TruncatedChainId" + } + } + }, + "additionalProperties": false + } + ] + }, + "Account_for_Addr": { + "description": "Contains the minimal Abstract Account contract addresses.", + "allOf": [ + { + "$ref": "#/definitions/Addr" + } + ] + }, + "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" + }, + "TruncatedChainId": { + "description": "The name of a chain, aka the chain-id without the post-fix number. ex. `cosmoshub-4` -> `cosmoshub`, `juno-1` -> `juno`", + "type": "string" + } + } + }, + "accounts": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "AccountsResponse", + "type": "object", + "required": [ + "accounts" + ], + "properties": { + "accounts": { + "type": "array", + "items": { + "$ref": "#/definitions/Account_for_Addr" + } + } + }, + "additionalProperties": false, + "definitions": { + "Account_for_Addr": { + "description": "Contains the minimal Abstract Account contract addresses.", + "allOf": [ + { + "$ref": "#/definitions/Addr" + } + ] + }, + "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" + } + } + }, + "config": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ConfigResponse", + "type": "object", + "required": [ + "local_account_sequence", + "security_enabled" + ], + "properties": { + "local_account_sequence": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "namespace_registration_fee": { + "anyOf": [ + { + "$ref": "#/definitions/Coin" + }, + { + "type": "null" + } + ] + }, + "security_enabled": { + "type": "boolean" + } + }, + "additionalProperties": false, + "definitions": { + "Coin": { + "type": "object", + "required": [ + "amount", + "denom" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Uint128" + }, + "denom": { + "type": "string" + } + }, + "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" + } + } + }, + "module_list": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ModulesListResponse", + "type": "object", + "required": [ + "modules" + ], + "properties": { + "modules": { + "type": "array", + "items": { + "$ref": "#/definitions/ModuleResponse" + } + } + }, + "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" + }, + "Coin": { + "type": "object", + "required": [ + "amount", + "denom" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Uint128" + }, + "denom": { + "type": "string" + } + }, + "additionalProperties": false + }, + "FixedFee": { + "description": "A wrapper around Coin to help handle fixed fees (with multiples).", + "type": "object", + "required": [ + "fee" + ], + "properties": { + "fee": { + "description": "Fee to be paid for a unit of a service", + "allOf": [ + { + "$ref": "#/definitions/Coin" + } + ] + } + }, + "additionalProperties": false + }, + "Module": { + "type": "object", + "required": [ + "info", + "reference" + ], + "properties": { + "info": { + "$ref": "#/definitions/ModuleInfo" + }, + "reference": { + "$ref": "#/definitions/ModuleReference" + } + }, + "additionalProperties": false + }, + "ModuleConfiguration": { + "type": "object", + "required": [ + "instantiation_funds", + "monetization" + ], + "properties": { + "instantiation_funds": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "metadata": { + "type": [ + "string", + "null" + ] + }, + "monetization": { + "$ref": "#/definitions/Monetization" + } + }, + "additionalProperties": false + }, + "ModuleInfo": { + "description": "Stores the namespace, name, and version of an Abstract module.", + "type": "object", + "required": [ + "name", + "namespace", + "version" + ], + "properties": { + "name": { + "description": "Name of the contract", + "type": "string" + }, + "namespace": { + "description": "Namespace of the module", + "allOf": [ + { + "$ref": "#/definitions/Namespace" + } + ] + }, + "version": { + "description": "Version of the module", + "allOf": [ + { + "$ref": "#/definitions/ModuleVersion" + } + ] + } + }, + "additionalProperties": false + }, + "ModuleReference": { + "oneOf": [ + { + "description": "Account Contract", + "type": "object", + "required": [ + "account" + ], + "properties": { + "account": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, + { + "description": "Native Abstract Contracts", + "type": "object", + "required": [ + "native" + ], + "properties": { + "native": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + }, + { + "description": "Installable adapters", + "type": "object", + "required": [ + "adapter" + ], + "properties": { + "adapter": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + }, + { + "description": "Installable apps", + "type": "object", + "required": [ + "app" + ], + "properties": { + "app": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, + { + "description": "A stand-alone contract", + "type": "object", + "required": [ + "standalone" + ], + "properties": { + "standalone": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, + { + "description": "A contract that exposes some service to others.", + "type": "object", + "required": [ + "service" + ], + "properties": { + "service": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + } + ] + }, + "ModuleResponse": { + "type": "object", + "required": [ + "config", + "module" + ], + "properties": { + "config": { + "$ref": "#/definitions/ModuleConfiguration" + }, + "module": { + "$ref": "#/definitions/Module" + } + }, + "additionalProperties": false + }, + "ModuleVersion": { + "oneOf": [ + { + "type": "string", + "enum": [ + "latest" + ] + }, + { + "type": "object", + "required": [ + "version" + ], + "properties": { + "version": { + "type": "string" + } + }, + "additionalProperties": false + } + ] + }, + "Monetization": { + "description": "Module Monetization", + "oneOf": [ + { + "type": "string", + "enum": [ + "none" + ] + }, + { + "type": "object", + "required": [ + "install_fee" + ], + "properties": { + "install_fee": { + "$ref": "#/definitions/FixedFee" + } + }, + "additionalProperties": false + } + ] + }, + "Namespace": { + "description": "Represents an Abstract namespace for modules", + "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" + } + } + }, + "modules": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ModulesResponse", + "type": "object", + "required": [ + "modules" + ], + "properties": { + "modules": { + "type": "array", + "items": { + "$ref": "#/definitions/ModuleResponse" + } + } + }, + "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" + }, + "Coin": { + "type": "object", + "required": [ + "amount", + "denom" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Uint128" + }, + "denom": { + "type": "string" + } + }, + "additionalProperties": false + }, + "FixedFee": { + "description": "A wrapper around Coin to help handle fixed fees (with multiples).", + "type": "object", + "required": [ + "fee" + ], + "properties": { + "fee": { + "description": "Fee to be paid for a unit of a service", + "allOf": [ + { + "$ref": "#/definitions/Coin" + } + ] + } + }, + "additionalProperties": false + }, + "Module": { + "type": "object", + "required": [ + "info", + "reference" + ], + "properties": { + "info": { + "$ref": "#/definitions/ModuleInfo" + }, + "reference": { + "$ref": "#/definitions/ModuleReference" + } + }, + "additionalProperties": false + }, + "ModuleConfiguration": { + "type": "object", + "required": [ + "instantiation_funds", + "monetization" + ], + "properties": { + "instantiation_funds": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } + }, + "metadata": { + "type": [ + "string", + "null" + ] + }, + "monetization": { + "$ref": "#/definitions/Monetization" + } + }, + "additionalProperties": false + }, + "ModuleInfo": { + "description": "Stores the namespace, name, and version of an Abstract module.", + "type": "object", + "required": [ + "name", + "namespace", + "version" + ], + "properties": { + "name": { + "description": "Name of the contract", + "type": "string" + }, + "namespace": { + "description": "Namespace of the module", + "allOf": [ + { + "$ref": "#/definitions/Namespace" + } + ] + }, + "version": { + "description": "Version of the module", + "allOf": [ + { + "$ref": "#/definitions/ModuleVersion" + } + ] + } + }, + "additionalProperties": false + }, + "ModuleReference": { + "oneOf": [ + { + "description": "Account Contract", + "type": "object", + "required": [ + "account" + ], + "properties": { + "account": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, + { + "description": "Native Abstract Contracts", + "type": "object", + "required": [ + "native" + ], + "properties": { + "native": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + }, + { + "description": "Installable adapters", + "type": "object", + "required": [ + "adapter" + ], + "properties": { + "adapter": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + }, + { + "description": "Installable apps", + "type": "object", + "required": [ + "app" + ], + "properties": { + "app": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, + { + "description": "A stand-alone contract", + "type": "object", + "required": [ + "standalone" + ], + "properties": { + "standalone": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, + { + "description": "A contract that exposes some service to others.", + "type": "object", + "required": [ + "service" + ], + "properties": { + "service": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + } + ] + }, + "ModuleResponse": { + "type": "object", + "required": [ + "config", + "module" + ], + "properties": { + "config": { + "$ref": "#/definitions/ModuleConfiguration" + }, + "module": { + "$ref": "#/definitions/Module" + } + }, + "additionalProperties": false + }, + "ModuleVersion": { + "oneOf": [ + { + "type": "string", + "enum": [ + "latest" + ] + }, + { + "type": "object", + "required": [ + "version" + ], + "properties": { + "version": { + "type": "string" + } + }, + "additionalProperties": false + } + ] + }, + "Monetization": { + "description": "Module Monetization", + "oneOf": [ + { + "type": "string", + "enum": [ + "none" + ] + }, + { + "type": "object", + "required": [ + "install_fee" + ], + "properties": { + "install_fee": { + "$ref": "#/definitions/FixedFee" + } + }, + "additionalProperties": false + } + ] + }, + "Namespace": { + "description": "Represents an Abstract namespace for modules", + "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" + } + } + }, + "namespace": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "NamespaceResponse", + "oneOf": [ + { + "type": "object", + "required": [ + "claimed" + ], + "properties": { + "claimed": { + "$ref": "#/definitions/NamespaceInfo" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "unclaimed" + ], + "properties": { + "unclaimed": { + "type": "object", + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "AccountId": { + "description": "Unique identifier for an account. On each chain this is unique.", + "type": "object", + "required": [ + "seq", + "trace" + ], + "properties": { + "seq": { + "description": "Unique identifier for the accounts create on a local chain. Is reused when creating an interchain account.", + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "trace": { + "description": "Sequence of the chain that triggered the IBC account creation `AccountTrace::Local` if the account was created locally Example: Account created on Juno which has an abstract interchain account on Osmosis, which in turn creates an interchain account on Terra -> `AccountTrace::Remote(vec![\"juno\", \"osmosis\"])`", + "allOf": [ + { + "$ref": "#/definitions/AccountTrace" + } + ] + } + }, + "additionalProperties": false + }, + "AccountTrace": { + "description": "The identifier of chain that triggered the account creation\n\nNote that the serialization to string and to Cw-storage-plus keys is different\n\nFor String, `AccountTrace::Remote(vec![\"neutron\", \"osmosis\"])` will be serialized as `osmosis>neutron`\n\nFor cw-storage-plus-key, `AccountTrace::Remote(vec![\"neutron\", \"osmosis\"])` will be serialized as `remote:[\"neutron\", \"osmosis\", \"\", \"\", \"\", \"\"]`", + "oneOf": [ + { + "type": "string", + "enum": [ + "local" + ] + }, + { + "type": "object", + "required": [ + "remote" + ], + "properties": { + "remote": { + "type": "array", + "items": { + "$ref": "#/definitions/TruncatedChainId" + } + } + }, + "additionalProperties": false + } + ] + }, + "Account_for_Addr": { + "description": "Contains the minimal Abstract Account contract addresses.", + "allOf": [ + { + "$ref": "#/definitions/Addr" + } + ] + }, + "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" + }, + "NamespaceInfo": { + "type": "object", + "required": [ + "account", + "account_id" + ], + "properties": { + "account": { + "$ref": "#/definitions/Account_for_Addr" + }, + "account_id": { + "$ref": "#/definitions/AccountId" + } + }, + "additionalProperties": false + }, + "TruncatedChainId": { + "description": "The name of a chain, aka the chain-id without the post-fix number. ex. `cosmoshub-4` -> `cosmoshub`, `juno-1` -> `juno`", + "type": "string" + } + } + }, + "namespace_list": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "NamespaceListResponse", + "type": "object", + "required": [ + "namespaces" + ], + "properties": { + "namespaces": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/Namespace" + }, + { + "$ref": "#/definitions/AccountId" + } + ], + "maxItems": 2, + "minItems": 2 + } + } + }, + "additionalProperties": false, + "definitions": { + "AccountId": { + "description": "Unique identifier for an account. On each chain this is unique.", + "type": "object", + "required": [ + "seq", + "trace" + ], + "properties": { + "seq": { + "description": "Unique identifier for the accounts create on a local chain. Is reused when creating an interchain account.", + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "trace": { + "description": "Sequence of the chain that triggered the IBC account creation `AccountTrace::Local` if the account was created locally Example: Account created on Juno which has an abstract interchain account on Osmosis, which in turn creates an interchain account on Terra -> `AccountTrace::Remote(vec![\"juno\", \"osmosis\"])`", + "allOf": [ + { + "$ref": "#/definitions/AccountTrace" + } + ] + } + }, + "additionalProperties": false + }, + "AccountTrace": { + "description": "The identifier of chain that triggered the account creation\n\nNote that the serialization to string and to Cw-storage-plus keys is different\n\nFor String, `AccountTrace::Remote(vec![\"neutron\", \"osmosis\"])` will be serialized as `osmosis>neutron`\n\nFor cw-storage-plus-key, `AccountTrace::Remote(vec![\"neutron\", \"osmosis\"])` will be serialized as `remote:[\"neutron\", \"osmosis\", \"\", \"\", \"\", \"\"]`", + "oneOf": [ + { + "type": "string", + "enum": [ + "local" + ] + }, + { + "type": "object", + "required": [ + "remote" + ], + "properties": { + "remote": { + "type": "array", + "items": { + "$ref": "#/definitions/TruncatedChainId" + } + } + }, + "additionalProperties": false + } + ] + }, + "Namespace": { + "description": "Represents an Abstract namespace for modules", + "type": "string" + }, + "TruncatedChainId": { + "description": "The name of a chain, aka the chain-id without the post-fix number. ex. `cosmoshub-4` -> `cosmoshub`, `juno-1` -> `juno`", + "type": "string" + } + } + }, + "namespaces": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "NamespacesResponse", + "type": "object", + "required": [ + "namespaces" + ], + "properties": { + "namespaces": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "$ref": "#/definitions/Namespace" + }, + { + "$ref": "#/definitions/AccountId" + } + ], + "maxItems": 2, + "minItems": 2 + } + } + }, + "additionalProperties": false, + "definitions": { + "AccountId": { + "description": "Unique identifier for an account. On each chain this is unique.", + "type": "object", + "required": [ + "seq", + "trace" + ], + "properties": { + "seq": { + "description": "Unique identifier for the accounts create on a local chain. Is reused when creating an interchain account.", + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "trace": { + "description": "Sequence of the chain that triggered the IBC account creation `AccountTrace::Local` if the account was created locally Example: Account created on Juno which has an abstract interchain account on Osmosis, which in turn creates an interchain account on Terra -> `AccountTrace::Remote(vec![\"juno\", \"osmosis\"])`", + "allOf": [ + { + "$ref": "#/definitions/AccountTrace" + } + ] + } + }, + "additionalProperties": false + }, + "AccountTrace": { + "description": "The identifier of chain that triggered the account creation\n\nNote that the serialization to string and to Cw-storage-plus keys is different\n\nFor String, `AccountTrace::Remote(vec![\"neutron\", \"osmosis\"])` will be serialized as `osmosis>neutron`\n\nFor cw-storage-plus-key, `AccountTrace::Remote(vec![\"neutron\", \"osmosis\"])` will be serialized as `remote:[\"neutron\", \"osmosis\", \"\", \"\", \"\", \"\"]`", + "oneOf": [ + { + "type": "string", + "enum": [ + "local" + ] + }, + { + "type": "object", + "required": [ + "remote" + ], + "properties": { + "remote": { + "type": "array", + "items": { + "$ref": "#/definitions/TruncatedChainId" + } + } + }, + "additionalProperties": false + } + ] + }, + "Namespace": { + "description": "Represents an Abstract namespace for modules", + "type": "string" + }, + "TruncatedChainId": { + "description": "The name of a chain, aka the chain-id without the post-fix number. ex. `cosmoshub-4` -> `cosmoshub`, `juno-1` -> `juno`", + "type": "string" + } + } + }, + "ownership": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Ownership_for_String", + "description": "The contract's ownership info", + "type": "object", + "properties": { + "owner": { + "description": "The contract's current owner. `None` if the ownership has been renounced.", + "type": [ + "string", + "null" + ] + }, + "pending_expiry": { + "description": "The deadline for the pending owner to accept the ownership. `None` if there isn't a pending ownership transfer, or if a transfer exists and it doesn't have a deadline.", + "anyOf": [ + { + "$ref": "#/definitions/Expiration" + }, + { + "type": "null" + } + ] + }, + "pending_owner": { + "description": "The account who has been proposed to take over the ownership. `None` if there isn't a pending ownership transfer.", + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false, + "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" + } + ] + }, + "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" + } + } + } + } +}