diff --git a/.circleci/config.yml b/.circleci/config.yml index 022c72e60..bb5cdb5cd 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -43,10 +43,14 @@ workflows: - build-modules: requires: - build-branch + - build-schemas: + requires: + - build-branch - merge-build-branch: requires: - build-framework - build-modules + - build-schemas modules-coverage: when: @@ -149,14 +153,6 @@ jobs: command: | set -e ./scripts/wasm-framework-ci.sh - - run: - name: Generate schemas - command: | - # Install deps - cargo install cargo-workspaces - cargo install just - # Run script - just schema - save_cache: paths: # Cargo registry @@ -174,9 +170,7 @@ jobs: git pull # Check for wasm changes git add framework/artifacts --force - # Check for schema changes - git add schema --force - git commit -m 'Update framework WASM & Schemas [skip ci]' || true + git commit -m 'Update framework WASM' || true git push origin "$CIRCLE_BRANCH-build" || true - run: name: Remove temporary branch if it failed during build framework @@ -245,6 +239,63 @@ jobs: failure_message: "**${CIRCLE_USERNAME}**'s modules WASM build failed. Please check why! 😭" webhook: "${DISCORD_STATUS_WEBHOOK}" + build-schemas: + docker: + - image: cimg/rust:1.80.0 + resource_class: xlarge + steps: + - setup_remote_docker + - checkout + - run: + name: "Check for newer workflow" + background: true + command: | + while true; do + sleep 5 + LATEST_COMMIT=$(git ls-remote $CIRCLE_REPOSITORY_URL | grep "$CIRCLE_BRANCH$" | cut -f 1) + if [ "$LATEST_COMMIT" != "$CIRCLE_SHA1" ]; then + echo "more recent commit to branch, exiting" + # Remove temporary branch + git push origin --delete "$CIRCLE_BRANCH-build" || true + curl -X POST "https://circleci.com/api/v2/workflow/$CIRCLE_WORKFLOW_ID/cancel?circle-token=$CIRCLE_API_TOKEN" + fi + done + - run: + name: Checkout temporary branch + command: | + git fetch origin "$CIRCLE_BRANCH-build" + git checkout "$CIRCLE_BRANCH-build" + - restore_cache: + keys: + - cargocache-v2-build-rust:1.80.0-{{ checksum "framework/Cargo.lock" }} + - run: + name: Generate schemas + command: | + # Install deps + cargo install cargo-workspaces + cargo install just + # Run script + just schema + - run: + name: Commit and push schemas + command: | + git config --global user.name 'CircleCI' + git config --global user.email 'circleci@example.com' + # Pull latest changes + git pull + # Check for schema changes + git add schema --force + git commit -m 'Update Schemas [skip ci]' || true + git push origin "$CIRCLE_BRANCH-build" || true + - run: + name: Remove temporary branch if it failed during build schemas + when: on_fail + command: git push origin --delete "$CIRCLE_BRANCH-build" || true + - discord/status: + fail_only: true + failure_message: "**${CIRCLE_USERNAME}**'s schemas build failed. Please check why! 😭" + webhook: "${DISCORD_STATUS_WEBHOOK}" + merge-build-branch: docker: - image: cimg/base:2024.01 @@ -252,6 +303,16 @@ jobs: steps: - setup_remote_docker - checkout + - run: + name: Import GPG Key + command: | + echo -e "$GPG_PRIVATE_KEY" | gpg --import + echo -e "trust\n5\ny\n" | gpg --command-fd 0 --edit-key 4C19E4CC17E67B7B + - run: + name: Configure Git for Signing + command: | + git config --global user.signingkey 4C19E4CC17E67B7B + git config --global commit.gpgSign true - run: name: "Merge build branch" command: | @@ -262,7 +323,7 @@ jobs: git fetch origin "$CIRCLE_BRANCH-build" # Merge artifacts to a branch git merge "origin/$CIRCLE_BRANCH-build" --squash - git commit -m "Update WASM & Schemas [skip ci]" || echo "No changes to commit" + git commit -S -m "Update WASM & Schemas [skip ci]" || echo "No changes to commit" git push origin $CIRCLE_BRANCH || true # Delete temporary branch git push origin --delete "$CIRCLE_BRANCH-build" diff --git a/framework/artifacts/abstract_account-xion.wasm b/framework/artifacts/abstract_account-xion.wasm index b8d822389..1004104fa 100644 Binary files a/framework/artifacts/abstract_account-xion.wasm and b/framework/artifacts/abstract_account-xion.wasm differ diff --git a/framework/artifacts/abstract_account.wasm b/framework/artifacts/abstract_account.wasm index d50416302..b85c3784e 100644 Binary files a/framework/artifacts/abstract_account.wasm and b/framework/artifacts/abstract_account.wasm differ diff --git a/framework/artifacts/checksums.txt b/framework/artifacts/checksums.txt index fa3101f97..4f312e6dc 100644 --- a/framework/artifacts/checksums.txt +++ b/framework/artifacts/checksums.txt @@ -1,5 +1,5 @@ -9b6394e85b956d66d8a286d541c6ef160ea52341635fa97c03f61a7563127864 abstract_account-xion.wasm -98274761e51dd60d0fb9bdba3672c8e6329edd4ce8af047481373fb9d7bbf4c0 abstract_account.wasm +3e0e10c4dbe5bfc83b9180288ca400bbc400e815cbf957fc63f0133910a59541 abstract_account-xion.wasm +378f78cfc073d1d2e0ca01234618ad2efc6b68898e2e6ecb0d88a0505922ba90 abstract_account.wasm 3541b83bb328bd6fe18c0868cd69f37bdf760975c706746e9a41365fdfef13d7 abstract_ans_host.wasm c2cf261e856081b53ba075a5cd2ce41b4ac2ef92301dc078c06babf4a12d0806 abstract_ibc_client.wasm 9482a8b60432b0e3be375126c471713c75beeeed5d12165bba1ce2fa933f6895 abstract_ibc_host.wasm diff --git a/modules/artifacts/abstract_cw_staking-archway.wasm b/modules/artifacts/abstract_cw_staking-archway.wasm index fc0ddab0c..a26d5bdb2 100644 Binary files a/modules/artifacts/abstract_cw_staking-archway.wasm and b/modules/artifacts/abstract_cw_staking-archway.wasm differ diff --git a/modules/artifacts/abstract_cw_staking.wasm b/modules/artifacts/abstract_cw_staking.wasm index 0b5ca2121..df9eb40f0 100644 Binary files a/modules/artifacts/abstract_cw_staking.wasm and b/modules/artifacts/abstract_cw_staking.wasm differ diff --git a/modules/artifacts/abstract_dex_adapter-archway.wasm b/modules/artifacts/abstract_dex_adapter-archway.wasm index 29a8e9bdb..a73242990 100644 Binary files a/modules/artifacts/abstract_dex_adapter-archway.wasm and b/modules/artifacts/abstract_dex_adapter-archway.wasm differ diff --git a/modules/artifacts/abstract_dex_adapter.wasm b/modules/artifacts/abstract_dex_adapter.wasm index 0d7721abb..b614d7a23 100644 Binary files a/modules/artifacts/abstract_dex_adapter.wasm and b/modules/artifacts/abstract_dex_adapter.wasm differ diff --git a/modules/artifacts/abstract_money_market_adapter.wasm b/modules/artifacts/abstract_money_market_adapter.wasm index 2aa879b5f..99d0ddccb 100644 Binary files a/modules/artifacts/abstract_money_market_adapter.wasm and b/modules/artifacts/abstract_money_market_adapter.wasm differ diff --git a/modules/artifacts/abstract_subscription.wasm b/modules/artifacts/abstract_subscription.wasm index a4dc9aecc..f208cb6b2 100644 Binary files a/modules/artifacts/abstract_subscription.wasm and b/modules/artifacts/abstract_subscription.wasm differ diff --git a/modules/artifacts/abstract_tendermint_staking_adapter.wasm b/modules/artifacts/abstract_tendermint_staking_adapter.wasm index 1fd81da81..fca786923 100644 Binary files a/modules/artifacts/abstract_tendermint_staking_adapter.wasm and b/modules/artifacts/abstract_tendermint_staking_adapter.wasm differ diff --git a/modules/artifacts/calendar_app.wasm b/modules/artifacts/calendar_app.wasm index d8caaa624..51598c09e 100644 Binary files a/modules/artifacts/calendar_app.wasm and b/modules/artifacts/calendar_app.wasm differ diff --git a/modules/artifacts/challenge_app.wasm b/modules/artifacts/challenge_app.wasm index 9f01d06d7..3a9d534e7 100644 Binary files a/modules/artifacts/challenge_app.wasm and b/modules/artifacts/challenge_app.wasm differ diff --git a/modules/artifacts/checksums.txt b/modules/artifacts/checksums.txt index 3615a7677..01e2b6401 100644 --- a/modules/artifacts/checksums.txt +++ b/modules/artifacts/checksums.txt @@ -1,12 +1,12 @@ -e203ad08c73098c88ead17c96346d4cb516fb5b4a4c13face4454186cb742a14 abstract_cw_staking-archway.wasm -0ced3457ede78cc2bbb5c963845b360a150fa926ee96bd887eddbafd32b863d4 abstract_cw_staking.wasm -f67f994c0d619b0accdd71695ba59ffa232459e8e4b390097c035249e772f434 abstract_dex_adapter-archway.wasm -374ea24dc7889b89cf48431304b676b2049b0a3eedf9938583e612b044f0d4fd abstract_dex_adapter.wasm -2812763bd0045f870e4b490b80be67606023852696eda4a6d25888b8bd8c5fd2 abstract_money_market_adapter.wasm -f37f930886a67fc8b7b0befb733601ca13d5d20ae97d9af03baa8a5d25174517 abstract_subscription.wasm -0c733298f55575cfcfa59c34c7d8529a0a84795634edfacf0c409fc91239324a abstract_tendermint_staking_adapter.wasm -8121bfe8d25c7910d8ea09952aa5b4dcc3ea04691feb1b9a2aae40aa6ed9e5d5 calendar_app.wasm -a34e1cf144d13e17cfe6e1766800506967359023f421338b8f1fcc8fdff556e2 challenge_app.wasm -8301db0aafbec5be34449033a9bdfe4724f39f672e9d8c4d0fa4b4e466a156ea my_standalone.wasm -098835971622ded1071ba0ae476931d8ec085135eea5125a3c61982f46b9445e payment_app.wasm -055d1a4281ab7d0dd45ffe9323a12da59aac220d9d01a308b0a562cae58c9e61 ping_pong.wasm +567b6b93614d25c92965db7909594443f0047de007bb9b61870c722ea38ffc40 abstract_cw_staking-archway.wasm +82b77a2d85831ef2ef1c038d8ec6b49f435ad7ab5dd076b9380f1b78617af340 abstract_cw_staking.wasm +3fff9ea8dc692aed089a0357ed63dcd14c9599ca1c5a09244b12faf456a96d41 abstract_dex_adapter-archway.wasm +f78c45cfca67dd6e1098e6788b68822d338cba8f7a72253ef01a90d3b03f795e abstract_dex_adapter.wasm +88fae88cea2ec92df28f3964e551bdb951395f2d8fcc825ef9b3afde2188d1f8 abstract_money_market_adapter.wasm +ee03e8cc055cf9bc03b2a90bbbfbcc72c2cebb8dc59119d90540a25dd04ec8c2 abstract_subscription.wasm +fba2b0edb9b67abee5f4bfefa46b5ea1e9188de109bc163bd9d0cb2e5aa34173 abstract_tendermint_staking_adapter.wasm +b10703d82891192762306b505d59291bf99c4814f9cad7d628a2d457f6ac0c19 calendar_app.wasm +e91afb657296d1a54b1afc83afbeb432a575ba34516c7275e53231862a0bc38a challenge_app.wasm +74b3356185e4495bee4de173576069ba874b6d16b0dc77a46be8f6259346a521 my_standalone.wasm +413d0e86d1164a2528b216d8a9af89147bf60671931dcd1cdd219ce8bdc5095c payment_app.wasm +c6aef9f088ab4a97a0287613e1f4da66270e366e84ab3b5684cbe655e39846c3 ping_pong.wasm diff --git a/modules/artifacts/my_standalone.wasm b/modules/artifacts/my_standalone.wasm index af0db7aa2..e6b9c2436 100644 Binary files a/modules/artifacts/my_standalone.wasm and b/modules/artifacts/my_standalone.wasm differ diff --git a/modules/artifacts/payment_app.wasm b/modules/artifacts/payment_app.wasm index ad2253e20..c26e1dde0 100644 Binary files a/modules/artifacts/payment_app.wasm and b/modules/artifacts/payment_app.wasm differ diff --git a/modules/artifacts/ping_pong.wasm b/modules/artifacts/ping_pong.wasm index 20a47639a..b5f8c1b45 100644 Binary files a/modules/artifacts/ping_pong.wasm and b/modules/artifacts/ping_pong.wasm differ diff --git a/schema/account/0.24.1/abstract-account.json b/schema/account/0.24.2/abstract-account.json similarity index 99% rename from schema/account/0.24.1/abstract-account.json rename to schema/account/0.24.2/abstract-account.json index ad2e80701..8b37d0ac4 100644 --- a/schema/account/0.24.1/abstract-account.json +++ b/schema/account/0.24.2/abstract-account.json @@ -1,6 +1,6 @@ { "contract_name": "abstract-account", - "contract_version": "0.24.1", + "contract_version": "0.24.2", "idl_version": "1.0.0", "instantiate": { "$schema": "http://json-schema.org/draft-07/schema#", @@ -132,15 +132,14 @@ ] }, "AddAuthenticator": { - "description": "Note: Instead of transaction bytes address of the Abstract Account used", "oneOf": [ { "type": "object", "required": [ - "secp256_k1" + "Secp256K1" ], "properties": { - "secp256_k1": { + "Secp256K1": { "type": "object", "required": [ "id", @@ -168,10 +167,10 @@ { "type": "object", "required": [ - "ed25519" + "Ed25519" ], "properties": { - "ed25519": { + "Ed25519": { "type": "object", "required": [ "id", @@ -199,10 +198,10 @@ { "type": "object", "required": [ - "eth_wallet" + "EthWallet" ], "properties": { - "eth_wallet": { + "EthWallet": { "type": "object", "required": [ "address", @@ -230,10 +229,10 @@ { "type": "object", "required": [ - "jwt" + "Jwt" ], "properties": { - "jwt": { + "Jwt": { "type": "object", "required": [ "aud", @@ -265,10 +264,10 @@ { "type": "object", "required": [ - "secp256_r1" + "Secp256R1" ], "properties": { - "secp256_r1": { + "Secp256R1": { "type": "object", "required": [ "id", @@ -296,10 +295,10 @@ { "type": "object", "required": [ - "passkey" + "Passkey" ], "properties": { - "passkey": { + "Passkey": { "type": "object", "required": [ "credential", @@ -790,7 +789,7 @@ "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 Version Control", + "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" @@ -1018,15 +1017,14 @@ ], "definitions": { "AddAuthenticator": { - "description": "Note: Instead of transaction bytes address of the Abstract Account used", "oneOf": [ { "type": "object", "required": [ - "secp256_k1" + "Secp256K1" ], "properties": { - "secp256_k1": { + "Secp256K1": { "type": "object", "required": [ "id", @@ -1054,10 +1052,10 @@ { "type": "object", "required": [ - "ed25519" + "Ed25519" ], "properties": { - "ed25519": { + "Ed25519": { "type": "object", "required": [ "id", @@ -1085,10 +1083,10 @@ { "type": "object", "required": [ - "eth_wallet" + "EthWallet" ], "properties": { - "eth_wallet": { + "EthWallet": { "type": "object", "required": [ "address", @@ -1116,10 +1114,10 @@ { "type": "object", "required": [ - "jwt" + "Jwt" ], "properties": { - "jwt": { + "Jwt": { "type": "object", "required": [ "aud", @@ -1151,10 +1149,10 @@ { "type": "object", "required": [ - "secp256_r1" + "Secp256R1" ], "properties": { - "secp256_r1": { + "Secp256R1": { "type": "object", "required": [ "id", @@ -1182,10 +1180,10 @@ { "type": "object", "required": [ - "passkey" + "Passkey" ], "properties": { - "passkey": { + "Passkey": { "type": "object", "required": [ "credential", diff --git a/schema/ibc-client/0.24.1/abstract-ibc-client.json b/schema/ibc-client/0.24.1/abstract-ibc-client.json index 9448b37ee..f7e59b3d1 100644 --- a/schema/ibc-client/0.24.1/abstract-ibc-client.json +++ b/schema/ibc-client/0.24.1/abstract-ibc-client.json @@ -1331,7 +1331,7 @@ "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 Version Control", + "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" @@ -3615,42 +3615,8 @@ "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": "This needs no info. Owner of the contract is whoever signed the InstantiateMsg.", - "type": "object", - "additionalProperties": false - } - } + "type": "object", + "additionalProperties": false }, "sudo": null, "responses": { diff --git a/schema/ibc-host/0.24.1/abstract-ibc-host.json b/schema/ibc-host/0.24.1/abstract-ibc-host.json index 62f67cd1c..9a3b4042f 100644 --- a/schema/ibc-host/0.24.1/abstract-ibc-host.json +++ b/schema/ibc-host/0.24.1/abstract-ibc-host.json @@ -776,7 +776,7 @@ "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 Version Control", + "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" @@ -2458,42 +2458,8 @@ "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": "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 - } - } + "type": "object", + "additionalProperties": false }, "sudo": null, "responses": { diff --git a/schema/ica-client/0.24.1/abstract-ica-client.json b/schema/ica-client/0.24.1/abstract-ica-client.json index 61bb510c9..651c56b0a 100644 --- a/schema/ica-client/0.24.1/abstract-ica-client.json +++ b/schema/ica-client/0.24.1/abstract-ica-client.json @@ -7,6 +7,18 @@ "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": { @@ -14,7 +26,7 @@ "title": "ExecuteMsg", "oneOf": [ { - "description": "Update the ownership.", + "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" @@ -25,253 +37,164 @@ } }, "additionalProperties": false - }, - { - "description": "Owner method: Registers the polytone note on the local chain as well as the host on the remote chain to send messages through This allows for monitoring which chain are connected to the contract remotely", - "type": "object", - "required": [ - "register_infrastructure" - ], - "properties": { - "register_infrastructure": { + } + ], + "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": [ - "chain", - "host", - "note" + "transfer_ownership" ], "properties": { - "chain": { - "description": "Chain to register the infrastructure for (\"juno\", \"osmosis\", etc.)", - "allOf": [ - { - "$ref": "#/definitions/TruncatedChainId" + "transfer_ownership": { + "type": "object", + "required": [ + "new_owner" + ], + "properties": { + "expiry": { + "anyOf": [ + { + "$ref": "#/definitions/Expiration" + }, + { + "type": "null" + } + ] + }, + "new_owner": { + "type": "string" } - ] - }, - "host": { - "description": "Address of the abstract host deployed on the remote chain", - "type": "string" - }, - "note": { - "description": "Polytone note (locally deployed)", - "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" + ] } - }, - "additionalProperties": false + ] }, - { - "description": "Only callable by Account Will attempt to forward the specified funds to the corresponding address on the remote chain.", - "type": "object", - "required": [ - "send_funds" - ], - "properties": { - "send_funds": { + "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": [ - "host_chain" + "at_height" ], "properties": { - "host_chain": { - "description": "host chain to be executed on Example: \"osmosis\"", - "allOf": [ - { - "$ref": "#/definitions/TruncatedChainId" - } - ] - }, - "memo": { - "type": [ - "string", - "null" - ] - }, - "receiver": { - "description": "Address of the token receiver on host chain Defaults to address of the remote account", - "type": [ - "string", - "null" - ] + "at_height": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 } }, "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Only callable by Account Register an Account on a remote chain over IBC This action creates a account for them on the remote chain.", - "type": "object", - "required": [ - "register" - ], - "properties": { - "register": { + }, + { + "description": "AtTime will expire when `env.block.time` >= time", "type": "object", "required": [ - "host_chain", - "install_modules" + "at_time" ], "properties": { - "host_chain": { - "description": "host chain to be executed on Example: \"osmosis\"", - "allOf": [ - { - "$ref": "#/definitions/TruncatedChainId" - } - ] - }, - "install_modules": { - "type": "array", - "items": { - "$ref": "#/definitions/ModuleInstallConfig" - } - }, - "namespace": { - "type": [ - "string", - "null" - ] + "at_time": { + "$ref": "#/definitions/Timestamp" } }, "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Only callable by Account Module", - "type": "object", - "required": [ - "module_ibc_action" - ], - "properties": { - "module_ibc_action": { + }, + { + "description": "Never will never expire. Used to express the empty variant", "type": "object", "required": [ - "host_chain", - "msg", - "target_module" + "never" ], "properties": { - "callback": { - "description": "Callback info to identify the callback that is sent (acts similar to the reply ID)", - "anyOf": [ - { - "$ref": "#/definitions/Callback" - }, - { - "type": "null" - } - ] - }, - "host_chain": { - "description": "host chain to be executed on Example: \"osmosis\"", - "allOf": [ - { - "$ref": "#/definitions/TruncatedChainId" - } - ] - }, - "msg": { - "description": "Json-encoded IbcMsg to the target module", - "allOf": [ - { - "$ref": "#/definitions/Binary" - } - ] - }, - "target_module": { - "description": "Module of this account on host chain", - "allOf": [ - { - "$ref": "#/definitions/ModuleInfo" - } - ] + "never": { + "type": "object", + "additionalProperties": false } }, "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": "Only callable by Account Module", + "description": "Returns config Returns [`ConfigResponse`]", "type": "object", "required": [ - "ibc_query" + "config" ], "properties": { - "ibc_query": { + "config": { "type": "object", - "required": [ - "callback", - "host_chain", - "queries" - ], - "properties": { - "callback": { - "description": "Callback info to identify the callback that is sent (acts similar to the reply ID)", - "allOf": [ - { - "$ref": "#/definitions/Callback" - } - ] - }, - "host_chain": { - "description": "host chain to be executed on Example: \"osmosis\"", - "allOf": [ - { - "$ref": "#/definitions/TruncatedChainId" - } - ] - }, - "queries": { - "description": "Cosmos Query requests", - "type": "array", - "items": { - "$ref": "#/definitions/QueryRequest_for_ModuleQuery" - } - } - }, "additionalProperties": false } }, "additionalProperties": false }, { - "description": "Only callable by Account Action on remote ibc host Which currently only support account messages", "type": "object", "required": [ - "remote_action" + "ica_action" ], "properties": { - "remote_action": { + "ica_action": { "type": "object", "required": [ - "action", - "host_chain" + "account_address", + "actions", + "chain" ], "properties": { - "action": { - "description": "execute the custom host function", - "allOf": [ - { - "$ref": "#/definitions/HostAction" - } - ] + "account_address": { + "type": "string" }, - "host_chain": { - "description": "host chain to be executed on Example: \"osmosis\"", - "allOf": [ - { - "$ref": "#/definitions/TruncatedChainId" - } - ] + "actions": { + "type": "array", + "items": { + "$ref": "#/definitions/IcaAction" + } + }, + "chain": { + "$ref": "#/definitions/TruncatedChainId" } }, "additionalProperties": false @@ -280,121 +203,104 @@ "additionalProperties": false }, { - "description": "Owner method: Remove connection for remote chain", + "description": "Query the contract's ownership information", "type": "object", "required": [ - "remove_host" + "ownership" ], "properties": { - "remove_host": { + "ownership": { "type": "object", - "required": [ - "host_chain" - ], - "properties": { - "host_chain": { - "$ref": "#/definitions/TruncatedChainId" - } - }, "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" }, - { - "description": "Callback from the Polytone implementation This is triggered regardless of the execution result", + "CallbackRequest": { + "description": "A request for a callback.", "type": "object", "required": [ - "callback" + "msg", + "receiver" ], "properties": { - "callback": { - "$ref": "#/definitions/CallbackMessage" + "msg": { + "$ref": "#/definitions/Binary" + }, + "receiver": { + "type": "string" } }, "additionalProperties": false - } - ], - "definitions": { - "AccountId": { - "description": "Unique identifier for an account. On each chain this is unique.", + }, + "Coin": { "type": "object", "required": [ - "seq", - "trace" + "amount", + "denom" ], "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 + "amount": { + "$ref": "#/definitions/Uint128" }, - "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" - } - ] + "denom": { + "type": "string" } }, "additionalProperties": false }, - "AccountTrace": { - "description": "The identifier of chain that triggered the account creation", - "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", + "EvmMsg_for_String": { + "description": "A message to be sent to the EVM", "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.", + "description": "Call a contract with the given data", "type": "object", "required": [ - "transfer_ownership" + "call" ], "properties": { - "transfer_ownership": { + "call": { "type": "object", "required": [ - "new_owner" + "data", + "to" ], "properties": { - "expiry": { + "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/Expiration" + "$ref": "#/definitions/Uint128" }, { "type": "null" } ] - }, - "new_owner": { - "type": "string" } }, "additionalProperties": false @@ -403,109 +309,48 @@ "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 - }, - "Attribute": { - "description": "An key value pair that is used in the context of event attributes in logs", - "type": "object", - "required": [ - "key", - "value" - ], - "properties": { - "key": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "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.", + "description": "Delegate a call to an external contract. This is dangerous and should be used with caution.", "type": "object", "required": [ - "send" + "delegate_call" ], "properties": { - "send": { + "delegate_call": { "type": "object", "required": [ - "amount", - "to_address" + "data", + "to" ], "properties": { - "amount": { - "type": "array", - "items": { - "$ref": "#/definitions/Coin" - } + "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_address": { + "to": { + "description": "The address of the contract to call, must pass checksum validation", "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" - } + }, + "value": { + "description": "Native ETH used in the tx", + "anyOf": [ + { + "$ref": "#/definitions/Uint128" + }, + { + "type": "null" + } + ] } }, "additionalProperties": false @@ -515,119 +360,96 @@ } ] }, - "BankQuery": { + "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": [ { - "description": "This calls into the native bank module for querying the total supply of one denomination. It does the same as the SupplyOf call in Cosmos SDK's RPC API. Return value is of type SupplyResponse.", "type": "object", "required": [ - "supply" + "execute" ], "properties": { - "supply": { - "type": "object", - "required": [ - "denom" - ], - "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false + "execute": { + "$ref": "#/definitions/IcaExecute" } }, "additionalProperties": false }, { - "description": "This calls into the native bank module for one denomination Return value is BalanceResponse", "type": "object", "required": [ - "balance" + "fund" ], "properties": { - "balance": { + "fund": { "type": "object", "required": [ - "address", - "denom" + "funds" ], "properties": { - "address": { - "type": "string" + "funds": { + "type": "array", + "items": { + "$ref": "#/definitions/Coin" + } }, - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "This calls into the native bank module for all denominations. Note that this may be much more expensive than Balance and should be avoided if possible. Return value is AllBalanceResponse.", - "type": "object", - "required": [ - "all_balances" - ], - "properties": { - "all_balances": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" + "memo": { + "type": [ + "string", + "null" + ] + }, + "receiver": { + "anyOf": [ + { + "$ref": "#/definitions/Binary" + }, + { + "type": "null" + } + ] } }, "additionalProperties": false } }, "additionalProperties": false - }, + } + ] + }, + "IcaExecute": { + "oneOf": [ { - "description": "This calls into the native bank module for querying metadata for a specific bank token. Return value is DenomMetadataResponse", "type": "object", "required": [ - "denom_metadata" + "evm" ], "properties": { - "denom_metadata": { + "evm": { "type": "object", "required": [ - "denom" + "msgs" ], "properties": { - "denom": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "This calls into the native bank module for querying metadata for all bank tokens that have a metadata entry. Return value is AllDenomMetadataResponse", - "type": "object", - "required": [ - "all_denom_metadata" - ], - "properties": { - "all_denom_metadata": { - "type": "object", - "properties": { - "pagination": { + "callback": { "anyOf": [ { - "$ref": "#/definitions/PageRequest" + "$ref": "#/definitions/CallbackRequest" }, { "type": "null" } ] + }, + "msgs": { + "type": "array", + "items": { + "$ref": "#/definitions/EvmMsg_for_String" + } } }, "additionalProperties": false @@ -637,3354 +459,1030 @@ } ] }, - "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 .", + "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" }, - "Callback": { - "description": "Callback from modules, that is turned into an IbcResponseMsg by the ibc client A callback can only be sent to itself", + "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": [ - "msg" + "instantiate" ], "properties": { - "msg": { - "description": "Used to add information to the callback. This is usually used to provide information to the ibc callback function for context", - "allOf": [ - { - "$ref": "#/definitions/Binary" - } - ] + "instantiate": { + "$ref": "#/definitions/InstantiateMsg" } }, "additionalProperties": false }, - "Callback2": { - "oneOf": [ - { - "description": "Result of executing the requested query, or an error.\n\nresult[i] corresponds to the i'th query and contains the base64 encoded query response.", - "type": "object", - "required": [ - "query" - ], - "properties": { - "query": { - "$ref": "#/definitions/Result_of_Array_of_Binary_or_ErrorResponse" - } - }, - "additionalProperties": false - }, - { - "description": "Result of executing the requested messages, or an error.\n\n14/04/23: if a submessage errors the reply handler can see `codespace: wasm, code: 5`, but not the actual error. as a result, we can't return good errors for Execution and this error string will only tell you the error's codespace. for example, an out-of-gas error is code 11 and looks like `codespace: sdk, code: 11`.", - "type": "object", - "required": [ - "execute" - ], - "properties": { - "execute": { - "$ref": "#/definitions/Result_of_ExecutionResponse_or_String" - } - }, - "additionalProperties": false - }, - { - "description": "An error occured that could not be recovered from. The only known way that this can occur is message handling running out of gas, in which case the error will be `codespace: sdk, code: 11`.\n\nThis error is not named becuase it could also occur due to a panic or unhandled error during message processing. We don't expect this to happen and have carefully written the code to avoid it.", - "type": "object", - "required": [ - "fatal_error" - ], - "properties": { - "fatal_error": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - }, - "CallbackMessage": { - "description": "Executed on the callback receiver upon message completion. When being executed, the message will be tagged with \"callback\":\n\n```json {\"callback\": { \"initiator\": ..., \"initiator_msg\": ..., \"result\": ..., }} ```", + { "type": "object", "required": [ - "initiator", - "initiator_msg", - "result" + "migrate" ], "properties": { - "initiator": { - "description": "Initaitor on the note chain.", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] - }, - "initiator_msg": { - "description": "Message sent by the initaitor. This _must_ be base64 encoded or execution will fail.", - "allOf": [ - { - "$ref": "#/definitions/Binary" - } - ] - }, - "result": { - "description": "Data from the host chain.", - "allOf": [ - { - "$ref": "#/definitions/Callback2" - } - ] + "migrate": { + "type": "object", + "additionalProperties": false } }, "additionalProperties": false - }, - "Coin": { + } + ], + "definitions": { + "InstantiateMsg": { + "description": "This needs no info. Owner of the contract is whoever signed the InstantiateMsg.", "type": "object", "required": [ - "amount", - "denom" + "ans_host_address", + "registry_address" ], "properties": { - "amount": { - "$ref": "#/definitions/Uint128" + "ans_host_address": { + "type": "string" }, - "denom": { + "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" + } }, - "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, + "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" }, - "additionalProperties": false + "value": { + "$ref": "#/definitions/Binary" + } }, - { - "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" + "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" + } }, - "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 + } + }, + "additionalProperties": false }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "ibc" - ], - "properties": { - "ibc": { - "$ref": "#/definitions/IbcMsg" - } + { + "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" }, - "additionalProperties": false + "denom": { + "type": "string" + } }, - { - "type": "object", - "required": [ - "wasm" - ], - "properties": { - "wasm": { - "$ref": "#/definitions/WasmMsg" - } + "additionalProperties": false + }, + "CosmosMsg_for_Empty": { + "oneOf": [ + { + "type": "object", + "required": [ + "bank" + ], + "properties": { + "bank": { + "$ref": "#/definitions/BankMsg" + } + }, + "additionalProperties": false }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "gov" - ], - "properties": { - "gov": { - "$ref": "#/definitions/GovMsg" - } + { + "type": "object", + "required": [ + "custom" + ], + "properties": { + "custom": { + "$ref": "#/definitions/Empty" + } + }, + "additionalProperties": false }, - "additionalProperties": false - } - ] - }, - "Decimal": { - "description": "A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0\n\nThe greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18)", - "type": "string" - }, - "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 - } + { + "type": "object", + "required": [ + "staking" + ], + "properties": { + "staking": { + "$ref": "#/definitions/StakingMsg" + } + }, + "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 - } + { + "type": "object", + "required": [ + "distribution" + ], + "properties": { + "distribution": { + "$ref": "#/definitions/DistributionMsg" + } + }, + "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" + { + "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 + } + }, + "additionalProperties": false }, - "additionalProperties": false - } - ] - }, - "DistributionQuery": { - "oneOf": [ - { - "description": "See ", - "type": "object", - "required": [ - "delegator_withdraw_address" - ], - "properties": { - "delegator_withdraw_address": { - "type": "object", - "required": [ - "delegator_address" - ], - "properties": { - "delegator_address": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "See ", - "type": "object", - "required": [ - "delegation_rewards" - ], - "properties": { - "delegation_rewards": { - "type": "object", - "required": [ - "delegator_address", - "validator_address" - ], - "properties": { - "delegator_address": { - "type": "string" - }, - "validator_address": { - "type": "string" - } - }, - "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 }, - "additionalProperties": false - }, - { - "description": "See ", - "type": "object", - "required": [ - "delegation_total_rewards" - ], - "properties": { - "delegation_total_rewards": { - "type": "object", - "required": [ - "delegator_address" - ], - "properties": { - "delegator_address": { - "type": "string" - } - }, - "additionalProperties": false - } + { + "type": "object", + "required": [ + "ibc" + ], + "properties": { + "ibc": { + "$ref": "#/definitions/IbcMsg" + } + }, + "additionalProperties": false }, - "additionalProperties": false - }, - { - "description": "See ", - "type": "object", - "required": [ - "delegator_validators" - ], - "properties": { - "delegator_validators": { - "type": "object", - "required": [ - "delegator_address" - ], - "properties": { - "delegator_address": { - "type": "string" - } - }, - "additionalProperties": false - } + { + "type": "object", + "required": [ + "wasm" + ], + "properties": { + "wasm": { + "$ref": "#/definitions/WasmMsg" + } + }, + "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 - }, - "ErrorResponse": { - "type": "object", - "required": [ - "error", - "message_index" - ], - "properties": { - "error": { - "description": "The error that occured executing the message.", - "type": "string" - }, - "message_index": { - "description": "The index of the first message who's execution failed.", - "allOf": [ - { - "$ref": "#/definitions/Uint64" - } - ] - } - }, - "additionalProperties": false - }, - "Event": { - "description": "A full [*Cosmos SDK* event].\n\nThis version uses string attributes (similar to [*Cosmos SDK* StringEvent]), which then get magically converted to bytes for Tendermint somewhere between the Rust-Go interface, JSON deserialization and the `NewEvent` call in Cosmos SDK.\n\n[*Cosmos SDK* event]: https://docs.cosmos.network/main/learn/advanced/events [*Cosmos SDK* StringEvent]: https://github.com/cosmos/cosmos-sdk/blob/v0.42.5/proto/cosmos/base/abci/v1beta1/abci.proto#L56-L70", - "type": "object", - "required": [ - "attributes", - "type" - ], - "properties": { - "attributes": { - "description": "The attributes to be included in the event.\n\nYou can learn more about these from [*Cosmos SDK* docs].\n\n[*Cosmos SDK* docs]: https://docs.cosmos.network/main/learn/advanced/events", - "type": "array", - "items": { - "$ref": "#/definitions/Attribute" + { + "type": "object", + "required": [ + "gov" + ], + "properties": { + "gov": { + "$ref": "#/definitions/GovMsg" + } + }, + "additionalProperties": false } - }, - "type": { - "description": "The event type. This is renamed to \"ty\" because \"type\" is reserved in Rust. This sucks, we know.", - "type": "string" - } + ] }, - "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" + "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 + } + }, + "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 - } + { + "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 }, - "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" + { + "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" + } + } }, - "funds": { - "description": "Funds attached from account to the module", - "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 } }, - "module_id": { - "type": "string" - } - }, - "additionalProperties": false - } + "additionalProperties": false + } + }, + "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" + { + "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" } - ] - } - }, - "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" + }, + "proposal_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 } - } - }, - "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 Version Control", - "type": "object", - "required": [ - "upgrade" - ], - "properties": { - "upgrade": { - "type": "object", - "required": [ - "modules" - ], - "properties": { - "modules": { - "type": "array", - "items": { - "type": "array", - "items": [ + }, + "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/ModuleInfo" - }, + "$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": [ { - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] + "$ref": "#/definitions/IbcTimeout" } - ], - "maxItems": 2, - "minItems": 2 + ] + }, + "to_address": { + "description": "address on the remote chain to receive these tokens", + "type": "string" } - } - }, - "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" + "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" + } + ] } }, - "link": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] + "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" + } }, - "namespace": { - "type": [ - "string", - "null" - ] - } + "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" }, - "additionalProperties": false - } + { + "type": "null" + } + ] }, - "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" - ] - } + "timestamp": { + "anyOf": [ + { + "$ref": "#/definitions/Timestamp" }, - "additionalProperties": false - } + { + "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 }, - "additionalProperties": false + "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 + } }, - { - "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 - } - ] - }, - "ExecutionResponse": { - "type": "object", - "required": [ - "executed_by", - "result" - ], - "properties": { - "executed_by": { - "description": "The address on the remote chain that executed the messages.", - "type": "string" - }, - "result": { - "description": "Index `i` corresponds to the result of executing the `i`th message.", - "type": "array", - "items": { - "$ref": "#/definitions/SubMsgResponse" - } - } - }, - "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", - "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 - }, - { - "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 - } - ] - }, - "GrpcQuery": { - "description": "Queries the chain using a grpc query. This allows to query information that is not exposed in our API. The chain needs to allowlist the supported queries. The drawback of this query is that you have to handle the protobuf encoding and decoding yourself.\n\nThe returned data is protobuf encoded. The protobuf type depends on the query. Because of this, using it with the [`query`](crate::QuerierWrapper::query) function will result in a deserialization error. Use [`raw_query`](crate::Querier::raw_query) or [`query_grpc`](crate::QuerierWrapper::query_grpc) instead.\n\nTo find the path, as well as the request and response types, you can query the chain's gRPC endpoint using a tool like [grpcurl](https://github.com/fullstorydev/grpcurl).", - "type": "object", - "required": [ - "data", - "path" - ], - "properties": { - "data": { - "description": "The expected protobuf message type (not [Any](https://protobuf.dev/programming-guides/proto3/#any)), binary encoded", - "allOf": [ - { - "$ref": "#/definitions/Binary" - } - ] - }, - "path": { - "description": "The fully qualified endpoint path used for routing. It follows the format `/service_path/method_name`, eg. \"/cosmos.authz.v1beta1.Query/Grants\"", - "type": "string" - } - }, - "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 - } - ] - }, - "IbcQuery": { - "description": "These are queries to the various IBC modules to see the state of the contract's IBC connection. These will return errors if the contract is not \"ibc enabled\"", - "oneOf": [ - { - "description": "Gets the Port ID the current contract is bound to.\n\nReturns a `PortIdResponse`.", - "type": "object", - "required": [ - "port_id" - ], - "properties": { - "port_id": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Lists all channels that are bound to a given port. If `port_id` is omitted, this list all channels bound to the contract's port.\n\nReturns a `ListChannelsResponse`.", - "type": "object", - "required": [ - "list_channels" - ], - "properties": { - "list_channels": { - "type": "object", - "properties": { - "port_id": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Lists all information for a (portID, channelID) pair. If port_id is omitted, it will default to the contract's own channel. (To save a PortId{} call)\n\nReturns a `ChannelResponse`.", - "type": "object", - "required": [ - "channel" - ], - "properties": { - "channel": { - "type": "object", - "required": [ - "channel_id" - ], - "properties": { - "channel_id": { - "type": "string" - }, - "port_id": { - "type": [ - "string", - "null" - ] - } - }, - "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 - }, - "ModuleQuery": { - "type": "object", - "required": [ - "msg", - "target_module" - ], - "properties": { - "msg": { - "description": "The WasmQuery::Smart request to the module", - "allOf": [ - { - "$ref": "#/definitions/Binary" - } - ] - }, - "target_module": { - "description": "Information about the module that gets queried through ibc", - "allOf": [ - { - "$ref": "#/definitions/InstalledModuleIdentification" - } - ] - } - }, - "additionalProperties": false - }, - "ModuleVersion": { - "oneOf": [ - { - "type": "string", - "enum": [ - "latest" - ] - }, - { - "type": "object", - "required": [ - "version" - ], - "properties": { - "version": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - }, - "MsgResponse": { - "type": "object", - "required": [ - "type_url", - "value" - ], - "properties": { - "type_url": { - "type": "string" - }, - "value": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - }, - "Namespace": { - "description": "Represents an Abstract namespace for modules", - "type": "string" - }, - "PageRequest": { - "description": "Simplified version of the PageRequest type for pagination from the cosmos-sdk", - "type": "object", - "required": [ - "limit", - "reverse" - ], - "properties": { - "key": { - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "limit": { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - }, - "reverse": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "QueryRequest_for_ModuleQuery": { - "oneOf": [ - { - "type": "object", - "required": [ - "bank" - ], - "properties": { - "bank": { - "$ref": "#/definitions/BankQuery" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "$ref": "#/definitions/ModuleQuery" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "staking" - ], - "properties": { - "staking": { - "$ref": "#/definitions/StakingQuery" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "distribution" - ], - "properties": { - "distribution": { - "$ref": "#/definitions/DistributionQuery" - } - }, - "additionalProperties": false - }, - { - "description": "A Stargate query is encoded the same way as abci_query, with path and protobuf encoded request data. The format is defined in [ADR-21](https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-021-protobuf-query-encoding.md). The response is protobuf encoded data directly without a JSON response wrapper. The caller is responsible for compiling the proper protobuf definitions for both requests and responses.", - "deprecated": true, - "type": "object", - "required": [ - "stargate" - ], - "properties": { - "stargate": { - "type": "object", - "required": [ - "data", - "path" - ], - "properties": { - "data": { - "description": "this is the expected protobuf message type (not any), binary encoded", - "allOf": [ - { - "$ref": "#/definitions/Binary" - } - ] - }, - "path": { - "description": "this is the fully qualified service path used for routing, eg. \"/cosmos_sdk.x.bank.v1.Query/QueryBalance\"", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "ibc" - ], - "properties": { - "ibc": { - "$ref": "#/definitions/IbcQuery" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "wasm" - ], - "properties": { - "wasm": { - "$ref": "#/definitions/WasmQuery" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "grpc" - ], - "properties": { - "grpc": { - "$ref": "#/definitions/GrpcQuery" - } - }, - "additionalProperties": false - } - ] - }, - "Result_of_Array_of_Binary_or_ErrorResponse": { - "oneOf": [ - { - "type": "object", - "required": [ - "Ok" - ], - "properties": { - "Ok": { - "type": "array", - "items": { - "$ref": "#/definitions/Binary" - } - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "Err" - ], - "properties": { - "Err": { - "$ref": "#/definitions/ErrorResponse" - } - }, - "additionalProperties": false - } - ] - }, - "Result_of_ExecutionResponse_or_String": { - "oneOf": [ - { - "type": "object", - "required": [ - "Ok" - ], - "properties": { - "Ok": { - "$ref": "#/definitions/ExecutionResponse" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "Err" - ], - "properties": { - "Err": { - "type": "string" - } - }, - "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 - } - ] - }, - "StakingQuery": { - "oneOf": [ - { - "description": "Returns the denomination that can be bonded (if there are multiple native tokens on the chain)", - "type": "object", - "required": [ - "bonded_denom" - ], - "properties": { - "bonded_denom": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "AllDelegations will return all delegations by the delegator", - "type": "object", - "required": [ - "all_delegations" - ], - "properties": { - "all_delegations": { - "type": "object", - "required": [ - "delegator" - ], - "properties": { - "delegator": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Delegation will return more detailed info on a particular delegation, defined by delegator/validator pair", - "type": "object", - "required": [ - "delegation" - ], - "properties": { - "delegation": { - "type": "object", - "required": [ - "delegator", - "validator" - ], - "properties": { - "delegator": { - "type": "string" - }, - "validator": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns all validators in the currently active validator set.\n\nThe query response type is `AllValidatorsResponse`.", - "type": "object", - "required": [ - "all_validators" - ], - "properties": { - "all_validators": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns the validator at the given address. Returns None if the validator is not part of the currently active validator set.\n\nThe query response type is `ValidatorResponse`.", - "type": "object", - "required": [ - "validator" - ], - "properties": { - "validator": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "description": "The validator's address (e.g. (e.g. cosmosvaloper1...))", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "SubMsgResponse": { - "description": "The information we get back from a successful sub message execution, with full Cosmos SDK events.", - "type": "object", - "required": [ - "events" - ], - "properties": { - "data": { - "deprecated": true, - "anyOf": [ - { - "$ref": "#/definitions/Binary" - }, - { - "type": "null" - } - ] - }, - "events": { - "type": "array", - "items": { - "$ref": "#/definitions/Event" - } - }, - "msg_responses": { - "description": "The responses from the messages emitted by the submessage. In most cases, this is equivalent to the Cosmos SDK's [MsgResponses], which usually contains a [single message]. However, wasmd allows chains to translate a single contract message into multiple SDK messages. In that case all the MsgResponses from each are concatenated into this flattened `Vec`.\n\n[MsgResponses]: https://github.com/cosmos/cosmos-sdk/blob/316750cc8cd8b3296fa233f4da2e39cbcdc34517/proto/cosmos/base/abci/v1beta1/abci.proto#L106-L109 [single message]: https://github.com/cosmos/cosmos-sdk/blob/v0.50.4/baseapp/baseapp.go#L1020-L1023", - "default": [], - "type": "array", - "items": { - "$ref": "#/definitions/MsgResponse" - } - } - }, - "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 - } - ] - }, - "WasmQuery": { - "oneOf": [ - { - "description": "this queries the public API of another contract at a known address (with known ABI) Return value is whatever the contract returns (caller should know), wrapped in a ContractResult that is JSON encoded.", - "type": "object", - "required": [ - "smart" - ], - "properties": { - "smart": { - "type": "object", - "required": [ - "contract_addr", - "msg" - ], - "properties": { - "contract_addr": { - "type": "string" - }, - "msg": { - "description": "msg is the json-encoded QueryMsg struct", - "allOf": [ - { - "$ref": "#/definitions/Binary" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "this queries the raw kv-store of the contract. returns the raw, unparsed data stored at that key, which may be an empty vector if not present", - "type": "object", - "required": [ - "raw" - ], - "properties": { - "raw": { - "type": "object", - "required": [ - "contract_addr", - "key" - ], - "properties": { - "contract_addr": { - "type": "string" - }, - "key": { - "description": "Key is the raw key used in the contracts Storage", - "allOf": [ - { - "$ref": "#/definitions/Binary" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns a [`ContractInfoResponse`] with metadata on the contract from the runtime", - "type": "object", - "required": [ - "contract_info" - ], - "properties": { - "contract_info": { - "type": "object", - "required": [ - "contract_addr" - ], - "properties": { - "contract_addr": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns a [`CodeInfoResponse`] with metadata of the code", - "type": "object", - "required": [ - "code_info" - ], - "properties": { - "code_info": { - "type": "object", - "required": [ - "code_id" - ], - "properties": { - "code_id": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "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": "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 config Returns [`ConfigResponse`]", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Returns the host information associated with a specific chain-name (e.g. osmosis, juno) Returns [`HostResponse`]", - "type": "object", - "required": [ - "host" - ], - "properties": { - "host": { - "type": "object", - "required": [ - "chain_name" - ], - "properties": { - "chain_name": { - "$ref": "#/definitions/TruncatedChainId" - } - }, - "additionalProperties": false - } + "additionalProperties": false }, - "additionalProperties": false - }, - { - "description": "Get list of remote accounts Returns [`ListAccountsResponse`]", - "type": "object", - "required": [ - "list_accounts" - ], - "properties": { - "list_accounts": { - "type": "object", - "properties": { - "limit": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "start": { - "type": [ - "array", - "null" - ], - "items": [ - { - "$ref": "#/definitions/AccountId" + "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" + } }, - { - "type": "string" - } - ], - "maxItems": 2, - "minItems": 2 - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Get remote account address for one chain Returns [`AccountResponse`]", - "type": "object", - "required": [ - "account" - ], - "properties": { - "account": { - "type": "object", - "required": [ - "account_id", - "chain_name" - ], - "properties": { - "account_id": { - "$ref": "#/definitions/AccountId" + "additionalProperties": false + } }, - "chain_name": { - "$ref": "#/definitions/TruncatedChainId" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Get the hosts Returns [`ListRemoteHostsResponse`]", - "type": "object", - "required": [ - "list_remote_hosts" - ], - "properties": { - "list_remote_hosts": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Get the Polytone execution proxies Returns [`ListRemoteProxiesResponse`]", - "type": "object", - "required": [ - "list_remote_proxies" - ], - "properties": { - "list_remote_proxies": { - "type": "object", - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Get the IBC execution proxies based on the account id passed Returns [`ListRemoteAccountsResponse`]", - "type": "object", - "required": [ - "list_remote_accounts_by_account_id" - ], - "properties": { - "list_remote_accounts_by_account_id": { - "type": "object", - "required": [ - "account_id" - ], - "properties": { - "account_id": { - "$ref": "#/definitions/AccountId" - } + "additionalProperties": false }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Get the IBC counterparts connected to this abstract ibc client Returns [`ListIbcInfrastructureResponse`]", - "type": "object", - "required": [ - "list_ibc_infrastructures" - ], - "properties": { - "list_ibc_infrastructures": { - "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", - "oneOf": [ - { - "type": "string", - "enum": [ - "local" - ] - }, - { - "type": "object", - "required": [ - "remote" - ], - "properties": { - "remote": { - "type": "array", - "items": { - "$ref": "#/definitions/TruncatedChainId" + { + "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 }, - "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" - } - } - }, - "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": "This needs no info. Owner of the contract is whoever signed the InstantiateMsg.", - "type": "object", - "additionalProperties": false - } - } - }, - "sudo": null, - "responses": { - "account": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "AccountResponse", - "type": "object", - "properties": { - "remote_account_addr": { - "type": [ - "string", - "null" + { + "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 + } ] - } - }, - "additionalProperties": false - }, - "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.", + "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" - } - } - }, - "host": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "HostResponse", - "type": "object", - "required": [ - "remote_host" - ], - "properties": { - "remote_host": { + }, + "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" }, - "remote_polytone_proxy": { - "type": [ - "string", - "null" + "VoteOption": { + "type": "string", + "enum": [ + "yes", + "no", + "abstain", + "no_with_veto" ] - } - }, - "additionalProperties": false - }, - "list_accounts": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ListAccountsResponse", - "type": "object", - "required": [ - "accounts" - ], - "properties": { - "accounts": { - "type": "array", - "items": { - "type": "array", - "items": [ - { - "$ref": "#/definitions/AccountId" + }, + "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 + } }, - { - "$ref": "#/definitions/TruncatedChainId" + "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 + } }, - { - "type": "string" - } - ], - "maxItems": 3, - "minItems": 3 - } - } - }, - "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 + "additionalProperties": false }, - "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" + { + "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 - }, - "AccountTrace": { - "description": "The identifier of chain that triggered the account creation", - "oneOf": [ + }, + "additionalProperties": false + }, { - "type": "string", - "enum": [ - "local" - ] + "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": [ - "remote" + "update_admin" ], "properties": { - "remote": { - "type": "array", - "items": { - "$ref": "#/definitions/TruncatedChainId" - } + "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 } ] }, - "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" - } - } - }, - "list_ibc_infrastructures": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ListIbcInfrastructureResponse", - "type": "object", - "required": [ - "counterparts" - ], - "properties": { - "counterparts": { - "type": "array", - "items": { - "type": "array", - "items": [ - { - "$ref": "#/definitions/TruncatedChainId" - }, - { - "$ref": "#/definitions/IbcInfrastructure" - } - ], - "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" - }, - "IbcInfrastructure": { - "description": "Information about the deployed infrastructure we're connected to.", + "WeightedVoteOption": { "type": "object", "required": [ - "polytone_note", - "remote_abstract_host" + "option", + "weight" ], "properties": { - "polytone_note": { - "description": "Address of the polytone note deployed on the local chain. This contract will forward the messages for us.", - "allOf": [ - { - "$ref": "#/definitions/Addr" - } - ] + "option": { + "$ref": "#/definitions/VoteOption" }, - "remote_abstract_host": { - "description": "The address of the abstract host deployed on the remote chain. This address will be called with our packet.", - "type": "string" - }, - "remote_proxy": { - "type": [ - "string", - "null" - ] + "weight": { + "$ref": "#/definitions/Decimal" } }, "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" - } - } - }, - "list_remote_accounts_by_account_id": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ListRemoteAccountsResponse", - "type": "object", - "required": [ - "accounts" - ], - "properties": { - "accounts": { - "type": "array", - "items": { - "type": "array", - "items": [ - { - "$ref": "#/definitions/TruncatedChainId" - }, - { - "type": [ - "string", - "null" - ] - } - ], - "maxItems": 2, - "minItems": 2 - } - } - }, - "additionalProperties": false, - "definitions": { - "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" - } - } - }, - "list_remote_hosts": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ListRemoteHostsResponse", - "type": "object", - "required": [ - "hosts" - ], - "properties": { - "hosts": { - "type": "array", - "items": { - "type": "array", - "items": [ - { - "$ref": "#/definitions/TruncatedChainId" - }, - { - "type": "string" - } - ], - "maxItems": 2, - "minItems": 2 - } - } - }, - "additionalProperties": false, - "definitions": { - "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" - } - } - }, - "list_remote_proxies": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ListRemoteAccountsResponse", - "type": "object", - "required": [ - "accounts" - ], - "properties": { - "accounts": { - "type": "array", - "items": { - "type": "array", - "items": [ - { - "$ref": "#/definitions/TruncatedChainId" - }, - { - "type": [ - "string", - "null" - ] - } - ], - "maxItems": 2, - "minItems": 2 - } - } - }, - "additionalProperties": false, - "definitions": { - "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_Addr", + "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.", - "anyOf": [ - { - "$ref": "#/definitions/Addr" - }, - { - "type": "null" - } + "type": [ + "string", + "null" ] }, "pending_expiry": { @@ -4000,22 +1498,14 @@ }, "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" - } + "type": [ + "string", + "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": [ diff --git a/schema/registry/0.24.2/abstract-registry.json b/schema/registry/0.24.3/abstract-registry.json similarity index 99% rename from schema/registry/0.24.2/abstract-registry.json rename to schema/registry/0.24.3/abstract-registry.json index 36a85d4b4..362106079 100644 --- a/schema/registry/0.24.2/abstract-registry.json +++ b/schema/registry/0.24.3/abstract-registry.json @@ -1,11 +1,11 @@ { "contract_name": "abstract-registry", - "contract_version": "0.24.2", + "contract_version": "0.24.3", "idl_version": "1.0.0", "instantiate": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "InstantiateMsg", - "description": "Version Control Instantiate Msg", + "description": "Registry Instantiate Msg", "type": "object", "required": [ "admin" @@ -59,7 +59,7 @@ "execute": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ExecuteMsg", - "description": "Version Control Execute Msg", + "description": "Registry Execute Msg", "oneOf": [ { "description": "Remove some version of a module", @@ -813,7 +813,7 @@ "query": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "QueryMsg", - "description": "Version Control Query Msg", + "description": "Registry Query Msg", "oneOf": [ { "description": "Query Core of Accounts Returns [`AccountsResponse`]", @@ -1276,7 +1276,7 @@ "additionalProperties": false }, "InstantiateMsg": { - "description": "Version Control Instantiate Msg", + "description": "Registry Instantiate Msg", "type": "object", "required": [ "admin"