From 9861bf93d2cfea733c0ddfa3d12563443fc3aa55 Mon Sep 17 00:00:00 2001
From: Tony Arcieri <tony@iqlusion.io>
Date: Thu, 8 Aug 2024 13:28:29 -0600
Subject: [PATCH] Bump tendermint-rs dependencies to v0.39

Also regenerates protos.

This notably switches from sourcing the `google.protobuf` well-known
types from the `prost-types` crate and using `tendermint-proto`'s
definitions instead.
---
 Cargo.lock                                    |  76 ++---
 Cargo.toml                                    |   3 +
 cosmos-sdk-proto/Cargo.toml                   |   7 +-
 cosmos-sdk-proto/src/lib.rs                   |   2 +-
 .../cosmos-sdk/cosmos.app.module.v1alpha1.rs  |   1 +
 .../prost/cosmos-sdk/cosmos.app.v1alpha1.rs   |   9 +-
 .../prost/cosmos-sdk/cosmos.auth.v1beta1.rs   |  34 +-
 .../prost/cosmos-sdk/cosmos.authz.v1beta1.rs  |  29 +-
 .../prost/cosmos-sdk/cosmos.bank.v1beta1.rs   |  33 ++
 .../cosmos-sdk/cosmos.base.abci.v1beta1.rs    |  16 +-
 .../cosmos-sdk/cosmos.base.kv.v1beta1.rs      |   2 +
 .../cosmos-sdk/cosmos.base.node.v1beta1.rs    |   2 +
 .../cosmos-sdk/cosmos.base.query.v1beta1.rs   |   2 +
 .../cosmos.base.reflection.v1beta1.rs         |   4 +
 .../cosmos.base.reflection.v2alpha1.rs        |  26 ++
 .../cosmos.base.snapshots.v1beta1.rs          |  10 +
 .../cosmos-sdk/cosmos.base.store.v1beta1.rs   |   6 +
 .../cosmos.base.tendermint.v1beta1.rs         |  25 +-
 .../prost/cosmos-sdk/cosmos.base.v1beta1.rs   |   4 +
 .../cosmos-sdk/cosmos.capability.v1beta1.rs   |   5 +
 .../prost/cosmos-sdk/cosmos.crisis.v1beta1.rs |   3 +
 .../prost/cosmos-sdk/cosmos.crypto.ed25519.rs |   2 +
 .../prost/cosmos-sdk/cosmos.crypto.hd.v1.rs   |   1 +
 .../cosmos-sdk/cosmos.crypto.keyring.v1.rs    |  10 +-
 .../cosmos-sdk/cosmos.crypto.multisig.rs      |   3 +-
 .../cosmos.crypto.multisig.v1beta1.rs         |   2 +
 .../cosmos-sdk/cosmos.crypto.secp256k1.rs     |   2 +
 .../cosmos-sdk/cosmos.crypto.secp256r1.rs     |   2 +
 .../cosmos-sdk/cosmos.distribution.v1beta1.rs |  46 +++
 .../cosmos-sdk/cosmos.evidence.v1beta1.rs     |  18 +-
 .../cosmos-sdk/cosmos.feegrant.v1beta1.rs     |  27 +-
 .../cosmos-sdk/cosmos.genutil.v1beta1.rs      |   1 +
 .../src/prost/cosmos-sdk/cosmos.gov.v1.rs     |  76 ++++-
 .../prost/cosmos-sdk/cosmos.gov.v1beta1.rs    |  73 ++++-
 .../src/prost/cosmos-sdk/cosmos.group.v1.rs   | 150 ++++++++-
 .../prost/cosmos-sdk/cosmos.mint.v1beta1.rs   |   9 +
 .../prost/cosmos-sdk/cosmos.nft.v1beta1.rs    |  27 +-
 .../cosmos-sdk/cosmos.orm.module.v1alpha1.rs  |   1 +
 .../src/prost/cosmos-sdk/cosmos.orm.v1.rs     |   4 +
 .../prost/cosmos-sdk/cosmos.orm.v1alpha1.rs   |  13 +
 .../prost/cosmos-sdk/cosmos.params.v1beta1.rs |   7 +
 .../cosmos-sdk/cosmos.slashing.v1beta1.rs     |  19 +-
 .../cosmos-sdk/cosmos.staking.v1beta1.rs      | 103 ++++++-
 .../cosmos-sdk/cosmos.tx.signing.v1beta1.rs   |  20 +-
 .../src/prost/cosmos-sdk/cosmos.tx.v1beta1.rs |  54 +++-
 .../cosmos-sdk/cosmos.upgrade.v1beta1.rs      |  22 +-
 .../cosmos-sdk/cosmos.vesting.v1beta1.rs      |  12 +
 .../src/prost/cosmos-sdk/cosmos_proto.rs      |  11 +
 .../src/prost/ibc-go/cosmos.auth.v1beta1.rs   |  20 +-
 .../prost/ibc-go/cosmos.base.query.v1beta1.rs |  11 +-
 .../src/prost/ibc-go/cosmos.base.v1beta1.rs   |  21 +-
 .../prost/ibc-go/cosmos.upgrade.v1beta1.rs    |  18 +-
 ...tions.interchain_accounts.controller.v1.rs |  31 +-
 ...pplications.interchain_accounts.host.v1.rs |  27 +-
 ...ibc.applications.interchain_accounts.v1.rs |  48 ++-
 .../ibc-go/ibc.applications.transfer.v1.rs    |  74 ++++-
 .../ibc-go/ibc.applications.transfer.v2.rs    |   6 +-
 .../src/prost/ibc-go/ibc.core.channel.v1.rs   | 291 ++++++++++++++----
 .../src/prost/ibc-go/ibc.core.client.v1.rs    | 213 +++++++++----
 .../prost/ibc-go/ibc.core.commitment.v1.rs    |  21 +-
 .../prost/ibc-go/ibc.core.connection.v1.rs    | 147 +++++++--
 .../src/prost/ibc-go/ibc.core.types.v1.rs     |   6 +-
 .../ibc-go/ibc.lightclients.localhost.v1.rs   |   6 +-
 .../ibc-go/ibc.lightclients.solomachine.v1.rs |  91 ++++--
 .../ibc-go/ibc.lightclients.solomachine.v2.rs |  91 ++++--
 .../ibc-go/ibc.lightclients.tendermint.v1.rs  |  36 ++-
 cosmos-sdk-proto/src/prost/ibc-go/ics23.rs    |  66 +++-
 .../prost/wasmd/cosmos.base.query.v1beta1.rs  |   2 +
 .../src/prost/wasmd/cosmos.base.v1beta1.rs    |   4 +
 .../src/prost/wasmd/cosmos_proto.rs           |  11 +
 .../src/prost/wasmd/cosmwasm.wasm.v1.rs       |  85 ++++-
 cosmrs/Cargo.toml                             |   8 +-
 proto-build/buf.sdk.gen.yaml                  |   4 +-
 proto-build/buf.wasmd.gen.yaml                |   4 +-
 proto-build/src/main.rs                       |   4 +
 75 files changed, 1914 insertions(+), 446 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index fb506614..20f8cf17 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -278,17 +278,16 @@ checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
 
 [[package]]
 name = "cosmos-sdk-proto"
-version = "0.23.0"
+version = "0.24.0-pre"
 dependencies = [
- "prost 0.13.1",
- "prost-types 0.13.1",
+ "prost",
  "tendermint-proto",
  "tonic",
 ]
 
 [[package]]
 name = "cosmrs"
-version = "0.18.0"
+version = "0.19.0-pre"
 dependencies = [
  "bip32",
  "cosmos-sdk-proto",
@@ -1203,16 +1202,6 @@ dependencies = [
  "unicode-ident",
 ]
 
-[[package]]
-name = "prost"
-version = "0.12.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "146c289cda302b98a28d40c8b3b90498d6e526dd24ac2ecea73e4e491685b94a"
-dependencies = [
- "bytes",
- "prost-derive 0.12.3",
-]
-
 [[package]]
 name = "prost"
 version = "0.13.1"
@@ -1220,7 +1209,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e13db3d3fde688c61e2446b4d843bc27a7e8af269a69440c0308021dc92333cc"
 dependencies = [
  "bytes",
- "prost-derive 0.13.1",
+ "prost-derive",
 ]
 
 [[package]]
@@ -1237,26 +1226,13 @@ dependencies = [
  "once_cell",
  "petgraph",
  "prettyplease",
- "prost 0.13.1",
- "prost-types 0.13.1",
+ "prost",
+ "prost-types",
  "regex",
  "syn",
  "tempfile",
 ]
 
-[[package]]
-name = "prost-derive"
-version = "0.12.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e"
-dependencies = [
- "anyhow",
- "itertools",
- "proc-macro2",
- "quote",
- "syn",
-]
-
 [[package]]
 name = "prost-derive"
 version = "0.13.1"
@@ -1270,29 +1246,20 @@ dependencies = [
  "syn",
 ]
 
-[[package]]
-name = "prost-types"
-version = "0.12.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "193898f59edcf43c26227dcd4c8427f00d99d61e95dcde58dabd49fa291d470e"
-dependencies = [
- "prost 0.12.3",
-]
-
 [[package]]
 name = "prost-types"
 version = "0.13.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "cee5168b05f49d4b0ca581206eb14a7b22fafd963efe729ac48eb03266e25cc2"
 dependencies = [
- "prost 0.13.1",
+ "prost",
 ]
 
 [[package]]
 name = "proto-build"
 version = "0.1.0"
 dependencies = [
- "prost 0.13.1",
+ "prost",
  "prost-build",
  "regex",
  "tonic",
@@ -1833,9 +1800,9 @@ dependencies = [
 
 [[package]]
 name = "tendermint"
-version = "0.38.0"
+version = "0.39.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e662ae0a3a5fa3c8f4347e5635b63066bdd9db591e9e17169d99e8ae77eb80cf"
+checksum = "5a80791cbd52540b05798837bf2d07cb53bd7b59eaffc2e5181196361926daec"
 dependencies = [
  "bytes",
  "digest 0.10.7",
@@ -1846,8 +1813,8 @@ dependencies = [
  "k256",
  "num-traits",
  "once_cell",
- "prost 0.12.3",
- "prost-types 0.12.3",
+ "prost",
+ "prost-types",
  "ripemd",
  "serde",
  "serde_bytes",
@@ -1864,9 +1831,9 @@ dependencies = [
 
 [[package]]
 name = "tendermint-config"
-version = "0.38.0"
+version = "0.39.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6830b90f6eca3eca86a3dc40da863b3855b417d1a92d54befe6f2ff4e4572b41"
+checksum = "7a61aff4a3fc93807f5a38d10c3abbf26f3260eda376360307ccad30c34ce4d7"
 dependencies = [
  "flex-error",
  "serde",
@@ -1878,14 +1845,13 @@ dependencies = [
 
 [[package]]
 name = "tendermint-proto"
-version = "0.38.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d4fb3c04c9ceff97b4f4a96351bf6ec20a3656eff9df2ad908f63da6c67e7da"
+version = "0.39.0"
+source = "git+https://github.com/informalsystems/tendermint-rs#f1ebab84321de74d7770672d54f4bdf28a9ac65c"
 dependencies = [
  "bytes",
  "flex-error",
- "prost 0.13.1",
- "prost-types 0.13.1",
+ "prost",
+ "prost-types",
  "serde",
  "serde_bytes",
  "subtle-encoding",
@@ -1894,9 +1860,9 @@ dependencies = [
 
 [[package]]
 name = "tendermint-rpc"
-version = "0.38.0"
+version = "0.39.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b9900ff9d51d7d6cd0855bf92944e4e8980eb6da028efd4d46259b928acd7f8"
+checksum = "fc330a25442d7f6b64e94029de18f4cf4f1e408aa129ef07eca9a5afd33cbb2f"
 dependencies = [
  "async-trait",
  "bytes",
@@ -2104,7 +2070,7 @@ dependencies = [
  "hyper-util",
  "percent-encoding",
  "pin-project",
- "prost 0.13.1",
+ "prost",
  "socket2 0.5.7",
  "tokio",
  "tokio-stream",
diff --git a/Cargo.toml b/Cargo.toml
index 8f6cd616..7a19b098 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -5,3 +5,6 @@ members = [
     "cosmos-sdk-proto",
     "cosmrs"
 ]
+
+[patch.crates-io]
+tendermint-proto = { git = "https://github.com/informalsystems/tendermint-rs" }
diff --git a/cosmos-sdk-proto/Cargo.toml b/cosmos-sdk-proto/Cargo.toml
index ff22a7e9..40a51377 100644
--- a/cosmos-sdk-proto/Cargo.toml
+++ b/cosmos-sdk-proto/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "cosmos-sdk-proto"
-version = "0.23.0"
+version = "0.24.0-pre"
 authors = [
     "Justin Kilpatrick <justin@althea.net>",
     "Greg Szabo <greg@informal.systems>",
@@ -17,15 +17,14 @@ rust-version = "1.72"
 
 [dependencies]
 prost = { version = "0.13", default-features = false }
-prost-types = { version = "0.13", default-features = false }
-tendermint-proto = "0.38"
+tendermint-proto = "0.39"
 
 # Optional dependencies
 tonic = { version = "0.12", optional = true, default-features = false, features = ["codegen", "prost"] }
 
 [features]
 default = ["grpc-transport"]
-std = ["prost/std", "prost-types/std"]
+std = ["prost/std", "tendermint-proto/std"]
 grpc = ["std", "tonic"]
 grpc-transport = ["grpc", "tonic/transport"]
 cosmwasm = []
diff --git a/cosmos-sdk-proto/src/lib.rs b/cosmos-sdk-proto/src/lib.rs
index f866a5ff..8b7ad2e7 100644
--- a/cosmos-sdk-proto/src/lib.rs
+++ b/cosmos-sdk-proto/src/lib.rs
@@ -18,8 +18,8 @@ pub mod traits;
 mod type_names;
 
 pub use prost;
-pub use prost_types::{Any, Timestamp};
 pub use tendermint_proto as tendermint;
+pub use tendermint_proto::google::protobuf::{Any, Timestamp};
 
 /// The version (commit hash) of the Cosmos SDK used when generating this library.
 pub const COSMOS_SDK_VERSION: &str = include_str!("prost/cosmos-sdk/COSMOS_SDK_COMMIT");
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.app.module.v1alpha1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.app.module.v1alpha1.rs
index c37f344f..a8ae8fd3 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.app.module.v1alpha1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.app.module.v1alpha1.rs
@@ -1,5 +1,6 @@
 // @generated
 /// Module is the module config object for the cosmos.app v1 app module.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Module {}
 // @@protoc_insertion_point(module)
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.app.v1alpha1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.app.v1alpha1.rs
index e857bec1..b23fe176 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.app.v1alpha1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.app.v1alpha1.rs
@@ -1,5 +1,6 @@
 // @generated
 /// ModuleDescriptor describes an app module.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ModuleDescriptor {
     /// go_import names the package that should be imported by an app to load the
@@ -24,6 +25,7 @@ pub struct ModuleDescriptor {
     pub can_migrate_from: ::prost::alloc::vec::Vec<MigrateFromInfo>,
 }
 /// PackageReference is a reference to a protobuf package used by a module.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct PackageReference {
     /// name is the fully-qualified name of the package.
@@ -69,6 +71,7 @@ pub struct PackageReference {
 }
 /// MigrateFromInfo is information on a module version that a newer module
 /// can migrate from.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MigrateFromInfo {
     /// module is the fully-qualified protobuf name of the module config object
@@ -83,6 +86,7 @@ pub struct MigrateFromInfo {
 /// allow a mixture of declarative and imperative app wiring, however, apps
 /// that strive for the maximum ease of maintainability should be able to describe
 /// their state machine with a config object alone.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Config {
     /// modules are the module configurations for the app.
@@ -90,6 +94,7 @@ pub struct Config {
     pub modules: ::prost::alloc::vec::Vec<ModuleConfig>,
 }
 /// ModuleConfig is a module configuration for an app.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ModuleConfig {
     /// name is the unique name of the module within the app. It should be a name
@@ -107,12 +112,14 @@ pub struct ModuleConfig {
     /// config is the config object for the module. Module config messages should
     /// define a ModuleDescriptor using the cosmos.app.v1alpha1.is_module extension.
     #[prost(message, optional, tag = "2")]
-    pub config: ::core::option::Option<::prost_types::Any>,
+    pub config: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
 }
 /// QueryConfigRequest is the Query/Config request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryConfigRequest {}
 /// QueryConfigRequest is the Query/Config response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryConfigResponse {
     /// config is the current app config.
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.auth.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.auth.v1beta1.rs
index e14153ef..47429f32 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.auth.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.auth.v1beta1.rs
@@ -2,18 +2,20 @@
 /// BaseAccount defines a base account type. It contains all the necessary fields
 /// for basic account functionality. Any custom account type should extend this
 /// type for additional functionality (e.g. vesting).
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct BaseAccount {
     #[prost(string, tag = "1")]
     pub address: ::prost::alloc::string::String,
     #[prost(message, optional, tag = "2")]
-    pub pub_key: ::core::option::Option<::prost_types::Any>,
+    pub pub_key: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     #[prost(uint64, tag = "3")]
     pub account_number: u64,
     #[prost(uint64, tag = "4")]
     pub sequence: u64,
 }
 /// ModuleAccount defines an account for modules that holds coins on a pool.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ModuleAccount {
     #[prost(message, optional, tag = "1")]
@@ -24,6 +26,7 @@ pub struct ModuleAccount {
     pub permissions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
 }
 /// Params defines the parameters for the auth module.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Params {
     #[prost(uint64, tag = "1")]
@@ -38,6 +41,7 @@ pub struct Params {
     pub sig_verify_cost_secp256k1: u64,
 }
 /// GenesisState defines the auth module's genesis state.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GenesisState {
     /// params defines all the paramaters of the module.
@@ -45,11 +49,12 @@ pub struct GenesisState {
     pub params: ::core::option::Option<Params>,
     /// accounts are the accounts present at genesis.
     #[prost(message, repeated, tag = "2")]
-    pub accounts: ::prost::alloc::vec::Vec<::prost_types::Any>,
+    pub accounts: ::prost::alloc::vec::Vec<::tendermint_proto::google::protobuf::Any>,
 }
 /// QueryAccountsRequest is the request type for the Query/Accounts RPC method.
 ///
 /// Since: cosmos-sdk 0.43
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryAccountsRequest {
     /// pagination defines an optional pagination for the request.
@@ -59,16 +64,18 @@ pub struct QueryAccountsRequest {
 /// QueryAccountsResponse is the response type for the Query/Accounts RPC method.
 ///
 /// Since: cosmos-sdk 0.43
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryAccountsResponse {
     /// accounts are the existing accounts
     #[prost(message, repeated, tag = "1")]
-    pub accounts: ::prost::alloc::vec::Vec<::prost_types::Any>,
+    pub accounts: ::prost::alloc::vec::Vec<::tendermint_proto::google::protobuf::Any>,
     /// pagination defines the pagination in the response.
     #[prost(message, optional, tag = "2")]
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// QueryAccountRequest is the request type for the Query/Account RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryAccountRequest {
     /// address defines the address to query for.
@@ -76,16 +83,19 @@ pub struct QueryAccountRequest {
     pub address: ::prost::alloc::string::String,
 }
 /// QueryAccountResponse is the response type for the Query/Account RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryAccountResponse {
     /// account defines the account of the corresponding address.
     #[prost(message, optional, tag = "1")]
-    pub account: ::core::option::Option<::prost_types::Any>,
+    pub account: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
 }
 /// QueryParamsRequest is the request type for the Query/Params RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryParamsRequest {}
 /// QueryParamsResponse is the response type for the Query/Params RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryParamsResponse {
     /// params defines the parameters of the module.
@@ -95,36 +105,42 @@ pub struct QueryParamsResponse {
 /// QueryModuleAccountsRequest is the request type for the Query/ModuleAccounts RPC method.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryModuleAccountsRequest {}
 /// QueryModuleAccountsResponse is the response type for the Query/ModuleAccounts RPC method.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryModuleAccountsResponse {
     #[prost(message, repeated, tag = "1")]
-    pub accounts: ::prost::alloc::vec::Vec<::prost_types::Any>,
+    pub accounts: ::prost::alloc::vec::Vec<::tendermint_proto::google::protobuf::Any>,
 }
 /// QueryModuleAccountByNameRequest is the request type for the Query/ModuleAccountByName RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryModuleAccountByNameRequest {
     #[prost(string, tag = "1")]
     pub name: ::prost::alloc::string::String,
 }
 /// QueryModuleAccountByNameResponse is the response type for the Query/ModuleAccountByName RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryModuleAccountByNameResponse {
     #[prost(message, optional, tag = "1")]
-    pub account: ::core::option::Option<::prost_types::Any>,
+    pub account: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
 }
 /// Bech32PrefixRequest is the request type for Bech32Prefix rpc method.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Bech32PrefixRequest {}
 /// Bech32PrefixResponse is the response type for Bech32Prefix rpc method.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Bech32PrefixResponse {
     #[prost(string, tag = "1")]
@@ -133,6 +149,7 @@ pub struct Bech32PrefixResponse {
 /// AddressBytesToStringRequest is the request type for AddressString rpc method.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AddressBytesToStringRequest {
     #[prost(bytes = "vec", tag = "1")]
@@ -141,6 +158,7 @@ pub struct AddressBytesToStringRequest {
 /// AddressBytesToStringResponse is the response type for AddressString rpc method.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AddressBytesToStringResponse {
     #[prost(string, tag = "1")]
@@ -149,6 +167,7 @@ pub struct AddressBytesToStringResponse {
 /// AddressStringToBytesRequest is the request type for AccountBytes rpc method.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AddressStringToBytesRequest {
     #[prost(string, tag = "1")]
@@ -157,6 +176,7 @@ pub struct AddressStringToBytesRequest {
 /// AddressStringToBytesResponse is the response type for AddressBytes rpc method.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AddressStringToBytesResponse {
     #[prost(bytes = "vec", tag = "1")]
@@ -165,6 +185,7 @@ pub struct AddressStringToBytesResponse {
 /// QueryAccountAddressByIDRequest is the request type for AccountAddressByID rpc method
 ///
 /// Since: cosmos-sdk 0.46.2
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryAccountAddressByIdRequest {
     /// id is the account number of the address to be queried. This field
@@ -176,6 +197,7 @@ pub struct QueryAccountAddressByIdRequest {
 /// QueryAccountAddressByIDResponse is the response type for AccountAddressByID rpc method
 ///
 /// Since: cosmos-sdk 0.46.2
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryAccountAddressByIdResponse {
     #[prost(string, tag = "1")]
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.authz.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.authz.v1beta1.rs
index 8d38d9f9..2dc300b6 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.authz.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.authz.v1beta1.rs
@@ -1,6 +1,7 @@
 // @generated
 /// GenericAuthorization gives the grantee unrestricted permissions to execute
 /// the provided method on behalf of the granter's account.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GenericAuthorization {
     /// Msg, identified by it's type URL, to grant unrestricted permissions to execute
@@ -9,18 +10,20 @@ pub struct GenericAuthorization {
 }
 /// Grant gives permissions to execute
 /// the provide method with expiration time.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Grant {
     #[prost(message, optional, tag = "1")]
-    pub authorization: ::core::option::Option<::prost_types::Any>,
+    pub authorization: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     /// time when the grant will expire and will be pruned. If null, then the grant
     /// doesn't have a time expiration (other conditions  in `authorization`
     /// may apply to invalidate the grant)
     #[prost(message, optional, tag = "2")]
-    pub expiration: ::core::option::Option<::prost_types::Timestamp>,
+    pub expiration: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
 }
 /// GrantAuthorization extends a grant with both the addresses of the grantee and granter.
 /// It is used in genesis.proto and query.proto
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GrantAuthorization {
     #[prost(string, tag = "1")]
@@ -28,11 +31,12 @@ pub struct GrantAuthorization {
     #[prost(string, tag = "2")]
     pub grantee: ::prost::alloc::string::String,
     #[prost(message, optional, tag = "3")]
-    pub authorization: ::core::option::Option<::prost_types::Any>,
+    pub authorization: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     #[prost(message, optional, tag = "4")]
-    pub expiration: ::core::option::Option<::prost_types::Timestamp>,
+    pub expiration: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
 }
 /// GrantQueueItem contains the list of TypeURL of a sdk.Msg.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GrantQueueItem {
     /// msg_type_urls contains the list of TypeURL of a sdk.Msg.
@@ -40,6 +44,7 @@ pub struct GrantQueueItem {
     pub msg_type_urls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
 }
 /// EventGrant is emitted on Msg/Grant
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct EventGrant {
     /// Msg type URL for which an autorization is granted
@@ -53,6 +58,7 @@ pub struct EventGrant {
     pub grantee: ::prost::alloc::string::String,
 }
 /// EventRevoke is emitted on Msg/Revoke
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct EventRevoke {
     /// Msg type URL for which an autorization is revoked
@@ -66,12 +72,14 @@ pub struct EventRevoke {
     pub grantee: ::prost::alloc::string::String,
 }
 /// GenesisState defines the authz module's genesis state.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GenesisState {
     #[prost(message, repeated, tag = "1")]
     pub authorization: ::prost::alloc::vec::Vec<GrantAuthorization>,
 }
 /// QueryGrantsRequest is the request type for the Query/Grants RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryGrantsRequest {
     #[prost(string, tag = "1")]
@@ -86,6 +94,7 @@ pub struct QueryGrantsRequest {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
 }
 /// QueryGrantsResponse is the response type for the Query/Authorizations RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryGrantsResponse {
     /// authorizations is a list of grants granted for grantee by granter.
@@ -96,6 +105,7 @@ pub struct QueryGrantsResponse {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// QueryGranterGrantsRequest is the request type for the Query/GranterGrants RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryGranterGrantsRequest {
     #[prost(string, tag = "1")]
@@ -105,6 +115,7 @@ pub struct QueryGranterGrantsRequest {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
 }
 /// QueryGranterGrantsResponse is the response type for the Query/GranterGrants RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryGranterGrantsResponse {
     /// grants is a list of grants granted by the granter.
@@ -115,6 +126,7 @@ pub struct QueryGranterGrantsResponse {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// QueryGranteeGrantsRequest is the request type for the Query/IssuedGrants RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryGranteeGrantsRequest {
     #[prost(string, tag = "1")]
@@ -124,6 +136,7 @@ pub struct QueryGranteeGrantsRequest {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
 }
 /// QueryGranteeGrantsResponse is the response type for the Query/GranteeGrants RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryGranteeGrantsResponse {
     /// grants is a list of grants granted to the grantee.
@@ -135,6 +148,7 @@ pub struct QueryGranteeGrantsResponse {
 }
 /// MsgGrant is a request type for Grant method. It declares authorization to the grantee
 /// on behalf of the granter with the provided expiration time.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgGrant {
     #[prost(string, tag = "1")]
@@ -145,6 +159,7 @@ pub struct MsgGrant {
     pub grant: ::core::option::Option<Grant>,
 }
 /// MsgExecResponse defines the Msg/MsgExecResponse response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgExecResponse {
     #[prost(bytes = "vec", repeated, tag = "1")]
@@ -153,6 +168,7 @@ pub struct MsgExecResponse {
 /// MsgExec attempts to execute the provided messages using
 /// authorizations granted to the grantee. Each message should have only
 /// one signer corresponding to the granter of the authorization.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgExec {
     #[prost(string, tag = "1")]
@@ -161,13 +177,15 @@ pub struct MsgExec {
     /// The x/authz will try to find a grant matching (msg.signers\[0\], grantee, MsgTypeURL(msg))
     /// triple and validate it.
     #[prost(message, repeated, tag = "2")]
-    pub msgs: ::prost::alloc::vec::Vec<::prost_types::Any>,
+    pub msgs: ::prost::alloc::vec::Vec<::tendermint_proto::google::protobuf::Any>,
 }
 /// MsgGrantResponse defines the Msg/MsgGrant response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgGrantResponse {}
 /// MsgRevoke revokes any authorization with the provided sdk.Msg type on the
 /// granter's account with that has been granted to the grantee.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgRevoke {
     #[prost(string, tag = "1")]
@@ -178,6 +196,7 @@ pub struct MsgRevoke {
     pub msg_type_url: ::prost::alloc::string::String,
 }
 /// MsgRevokeResponse defines the Msg/MsgRevokeResponse response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgRevokeResponse {}
 include!("cosmos.authz.v1beta1.tonic.rs");
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.bank.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.bank.v1beta1.rs
index 4574722a..f9872902 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.bank.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.bank.v1beta1.rs
@@ -3,12 +3,14 @@
 /// the granter's account.
 ///
 /// Since: cosmos-sdk 0.43
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SendAuthorization {
     #[prost(message, repeated, tag = "1")]
     pub spend_limit: ::prost::alloc::vec::Vec<super::super::base::v1beta1::Coin>,
 }
 /// Params defines the parameters for the bank module.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Params {
     #[prost(message, repeated, tag = "1")]
@@ -18,6 +20,7 @@ pub struct Params {
 }
 /// SendEnabled maps coin denom to a send_enabled status (whether a denom is
 /// sendable).
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SendEnabled {
     #[prost(string, tag = "1")]
@@ -26,6 +29,7 @@ pub struct SendEnabled {
     pub enabled: bool,
 }
 /// Input models transaction input.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Input {
     #[prost(string, tag = "1")]
@@ -34,6 +38,7 @@ pub struct Input {
     pub coins: ::prost::alloc::vec::Vec<super::super::base::v1beta1::Coin>,
 }
 /// Output models transaction outputs.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Output {
     #[prost(string, tag = "1")]
@@ -44,6 +49,7 @@ pub struct Output {
 /// Supply represents a struct that passively keeps track of the total supply
 /// amounts in the network.
 /// This message is deprecated now that supply is indexed by denom.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Supply {
     #[prost(message, repeated, tag = "1")]
@@ -51,6 +57,7 @@ pub struct Supply {
 }
 /// DenomUnit represents a struct that describes a given
 /// denomination unit of the basic token.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DenomUnit {
     /// denom represents the string name of the given denom unit (e.g uatom).
@@ -69,6 +76,7 @@ pub struct DenomUnit {
 }
 /// Metadata represents a struct that describes
 /// a basic token.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Metadata {
     #[prost(string, tag = "1")]
@@ -107,6 +115,7 @@ pub struct Metadata {
     pub uri_hash: ::prost::alloc::string::String,
 }
 /// GenesisState defines the bank module's genesis state.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GenesisState {
     /// params defines all the paramaters of the module.
@@ -125,6 +134,7 @@ pub struct GenesisState {
 }
 /// Balance defines an account address and balance pair used in the bank module's
 /// genesis state.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Balance {
     /// address is the address of the balance holder.
@@ -135,6 +145,7 @@ pub struct Balance {
     pub coins: ::prost::alloc::vec::Vec<super::super::base::v1beta1::Coin>,
 }
 /// QueryBalanceRequest is the request type for the Query/Balance RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryBalanceRequest {
     /// address is the address to query balances for.
@@ -145,6 +156,7 @@ pub struct QueryBalanceRequest {
     pub denom: ::prost::alloc::string::String,
 }
 /// QueryBalanceResponse is the response type for the Query/Balance RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryBalanceResponse {
     /// balance is the balance of the coin.
@@ -152,6 +164,7 @@ pub struct QueryBalanceResponse {
     pub balance: ::core::option::Option<super::super::base::v1beta1::Coin>,
 }
 /// QueryBalanceRequest is the request type for the Query/AllBalances RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryAllBalancesRequest {
     /// address is the address to query balances for.
@@ -163,6 +176,7 @@ pub struct QueryAllBalancesRequest {
 }
 /// QueryAllBalancesResponse is the response type for the Query/AllBalances RPC
 /// method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryAllBalancesResponse {
     /// balances is the balances of all the coins.
@@ -176,6 +190,7 @@ pub struct QueryAllBalancesResponse {
 /// an account's spendable balances.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QuerySpendableBalancesRequest {
     /// address is the address to query spendable balances for.
@@ -189,6 +204,7 @@ pub struct QuerySpendableBalancesRequest {
 /// an account's spendable balances.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QuerySpendableBalancesResponse {
     /// balances is the spendable balances of all the coins.
@@ -200,6 +216,7 @@ pub struct QuerySpendableBalancesResponse {
 }
 /// QueryTotalSupplyRequest is the request type for the Query/TotalSupply RPC
 /// method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryTotalSupplyRequest {
     /// pagination defines an optional pagination for the request.
@@ -210,6 +227,7 @@ pub struct QueryTotalSupplyRequest {
 }
 /// QueryTotalSupplyResponse is the response type for the Query/TotalSupply RPC
 /// method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryTotalSupplyResponse {
     /// supply is the supply of the coins
@@ -222,6 +240,7 @@ pub struct QueryTotalSupplyResponse {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// QuerySupplyOfRequest is the request type for the Query/SupplyOf RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QuerySupplyOfRequest {
     /// denom is the coin denom to query balances for.
@@ -229,6 +248,7 @@ pub struct QuerySupplyOfRequest {
     pub denom: ::prost::alloc::string::String,
 }
 /// QuerySupplyOfResponse is the response type for the Query/SupplyOf RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QuerySupplyOfResponse {
     /// amount is the supply of the coin.
@@ -236,15 +256,18 @@ pub struct QuerySupplyOfResponse {
     pub amount: ::core::option::Option<super::super::base::v1beta1::Coin>,
 }
 /// QueryParamsRequest defines the request type for querying x/bank parameters.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryParamsRequest {}
 /// QueryParamsResponse defines the response type for querying x/bank parameters.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryParamsResponse {
     #[prost(message, optional, tag = "1")]
     pub params: ::core::option::Option<Params>,
 }
 /// QueryDenomsMetadataRequest is the request type for the Query/DenomsMetadata RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDenomsMetadataRequest {
     /// pagination defines an optional pagination for the request.
@@ -253,6 +276,7 @@ pub struct QueryDenomsMetadataRequest {
 }
 /// QueryDenomsMetadataResponse is the response type for the Query/DenomsMetadata RPC
 /// method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDenomsMetadataResponse {
     /// metadata provides the client information for all the registered tokens.
@@ -263,6 +287,7 @@ pub struct QueryDenomsMetadataResponse {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// QueryDenomMetadataRequest is the request type for the Query/DenomMetadata RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDenomMetadataRequest {
     /// denom is the coin denom to query the metadata for.
@@ -271,6 +296,7 @@ pub struct QueryDenomMetadataRequest {
 }
 /// QueryDenomMetadataResponse is the response type for the Query/DenomMetadata RPC
 /// method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDenomMetadataResponse {
     /// metadata describes and provides all the client information for the requested token.
@@ -280,6 +306,7 @@ pub struct QueryDenomMetadataResponse {
 /// QueryDenomOwnersRequest defines the request type for the DenomOwners RPC query,
 /// which queries for a paginated set of all account holders of a particular
 /// denomination.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDenomOwnersRequest {
     /// denom defines the coin denomination to query all account holders for.
@@ -294,6 +321,7 @@ pub struct QueryDenomOwnersRequest {
 /// balance of the denominated token.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DenomOwner {
     /// address defines the address that owns a particular denomination.
@@ -306,6 +334,7 @@ pub struct DenomOwner {
 /// QueryDenomOwnersResponse defines the RPC response of a DenomOwners RPC query.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDenomOwnersResponse {
     #[prost(message, repeated, tag = "1")]
@@ -315,6 +344,7 @@ pub struct QueryDenomOwnersResponse {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// MsgSend represents a message to send coins from one account to another.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgSend {
     #[prost(string, tag = "1")]
@@ -325,9 +355,11 @@ pub struct MsgSend {
     pub amount: ::prost::alloc::vec::Vec<super::super::base::v1beta1::Coin>,
 }
 /// MsgSendResponse defines the Msg/Send response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgSendResponse {}
 /// MsgMultiSend represents an arbitrary multi-in, multi-out send message.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgMultiSend {
     #[prost(message, repeated, tag = "1")]
@@ -336,6 +368,7 @@ pub struct MsgMultiSend {
     pub outputs: ::prost::alloc::vec::Vec<Output>,
 }
 /// MsgMultiSendResponse defines the Msg/MultiSend response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgMultiSendResponse {}
 include!("cosmos.bank.v1beta1.tonic.rs");
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.abci.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.abci.v1beta1.rs
index 6f3ec0c9..61d10824 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.abci.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.abci.v1beta1.rs
@@ -1,6 +1,7 @@
 // @generated
 /// TxResponse defines a structure containing relevant tx data and metadata. The
 /// tags are stringified and the log is JSON decoded.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct TxResponse {
     /// The block height
@@ -36,7 +37,7 @@ pub struct TxResponse {
     pub gas_used: i64,
     /// The request transaction bytes.
     #[prost(message, optional, tag = "11")]
-    pub tx: ::core::option::Option<::prost_types::Any>,
+    pub tx: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     /// Time of the previous block. For heights > 1, it's the weighted median of
     /// the timestamps of the valid votes in the block.LastCommit. For height == 1,
     /// it's genesis time.
@@ -52,6 +53,7 @@ pub struct TxResponse {
     pub events: ::prost::alloc::vec::Vec<::tendermint_proto::v0_34::abci::Event>,
 }
 /// ABCIMessageLog defines a structure containing an indexed tx ABCI message log.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AbciMessageLog {
     #[prost(uint32, tag = "1")]
@@ -65,6 +67,7 @@ pub struct AbciMessageLog {
 }
 /// StringEvent defines en Event object wrapper where all the attributes
 /// contain key/value pairs that are strings instead of raw bytes.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct StringEvent {
     #[prost(string, tag = "1")]
@@ -74,6 +77,7 @@ pub struct StringEvent {
 }
 /// Attribute defines an attribute wrapper where the key and value are
 /// strings instead of raw bytes.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Attribute {
     #[prost(string, tag = "1")]
@@ -82,6 +86,7 @@ pub struct Attribute {
     pub value: ::prost::alloc::string::String,
 }
 /// GasInfo defines tx execution gas context.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GasInfo {
     /// GasWanted is the maximum units of work we allow this tx to perform.
@@ -92,6 +97,7 @@ pub struct GasInfo {
     pub gas_used: u64,
 }
 /// Result is the union of ResponseFormat and ResponseCheckTx.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Result {
     /// Data is any data returned from message or handler execution. It MUST be
@@ -112,10 +118,11 @@ pub struct Result {
     ///
     /// Since: cosmos-sdk 0.46
     #[prost(message, repeated, tag = "4")]
-    pub msg_responses: ::prost::alloc::vec::Vec<::prost_types::Any>,
+    pub msg_responses: ::prost::alloc::vec::Vec<::tendermint_proto::google::protobuf::Any>,
 }
 /// SimulationResponse defines the response generated when a transaction is
 /// successfully simulated.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SimulationResponse {
     #[prost(message, optional, tag = "1")]
@@ -125,6 +132,7 @@ pub struct SimulationResponse {
 }
 /// MsgData defines the data returned in a Result object during message
 /// execution.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgData {
     #[prost(string, tag = "1")]
@@ -134,6 +142,7 @@ pub struct MsgData {
 }
 /// TxMsgData defines a list of MsgData. A transaction will have a MsgData object
 /// for each message.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct TxMsgData {
     /// data field is deprecated and not populated.
@@ -144,9 +153,10 @@ pub struct TxMsgData {
     ///
     /// Since: cosmos-sdk 0.46
     #[prost(message, repeated, tag = "2")]
-    pub msg_responses: ::prost::alloc::vec::Vec<::prost_types::Any>,
+    pub msg_responses: ::prost::alloc::vec::Vec<::tendermint_proto::google::protobuf::Any>,
 }
 /// SearchTxsResult defines a structure for querying txs pageable
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SearchTxsResult {
     /// Count of all txs
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.kv.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.kv.v1beta1.rs
index ac1906db..f4667040 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.kv.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.kv.v1beta1.rs
@@ -1,11 +1,13 @@
 // @generated
 /// Pairs defines a repeated slice of Pair objects.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Pairs {
     #[prost(message, repeated, tag = "1")]
     pub pairs: ::prost::alloc::vec::Vec<Pair>,
 }
 /// Pair defines a key/value bytes tuple.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Pair {
     #[prost(bytes = "vec", tag = "1")]
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.node.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.node.v1beta1.rs
index 20a2cbf8..c0b5c72c 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.node.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.node.v1beta1.rs
@@ -1,8 +1,10 @@
 // @generated
 /// ConfigRequest defines the request structure for the Config gRPC query.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ConfigRequest {}
 /// ConfigResponse defines the response structure for the Config gRPC query.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ConfigResponse {
     #[prost(string, tag = "1")]
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.query.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.query.v1beta1.rs
index f37d3872..86f391b5 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.query.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.query.v1beta1.rs
@@ -6,6 +6,7 @@
 ///           Foo some_parameter = 1;
 ///           PageRequest pagination = 2;
 ///   }
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct PageRequest {
     /// key is a value returned in PageResponse.next_key to begin
@@ -41,6 +42,7 @@ pub struct PageRequest {
 ///           repeated Bar results = 1;
 ///           PageResponse page = 2;
 ///   }
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct PageResponse {
     /// next_key is the key to be passed to PageRequest.key to
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.reflection.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.reflection.v1beta1.rs
index d640d9f6..e238c3a9 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.reflection.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.reflection.v1beta1.rs
@@ -1,8 +1,10 @@
 // @generated
 /// ListAllInterfacesRequest is the request type of the ListAllInterfaces RPC.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ListAllInterfacesRequest {}
 /// ListAllInterfacesResponse is the response type of the ListAllInterfaces RPC.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ListAllInterfacesResponse {
     /// interface_names is an array of all the registered interfaces.
@@ -11,6 +13,7 @@ pub struct ListAllInterfacesResponse {
 }
 /// ListImplementationsRequest is the request type of the ListImplementations
 /// RPC.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ListImplementationsRequest {
     /// interface_name defines the interface to query the implementations for.
@@ -19,6 +22,7 @@ pub struct ListImplementationsRequest {
 }
 /// ListImplementationsResponse is the response type of the ListImplementations
 /// RPC.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ListImplementationsResponse {
     #[prost(string, repeated, tag = "1")]
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.reflection.v2alpha1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.reflection.v2alpha1.rs
index e50492c5..583c0f0d 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.reflection.v2alpha1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.reflection.v2alpha1.rs
@@ -1,5 +1,6 @@
 // @generated
 /// AppDescriptor describes a cosmos-sdk based application
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AppDescriptor {
     /// AuthnDescriptor provides information on how to authenticate transactions on the application
@@ -23,6 +24,7 @@ pub struct AppDescriptor {
     pub tx: ::core::option::Option<TxDescriptor>,
 }
 /// TxDescriptor describes the accepted transaction type
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct TxDescriptor {
     /// fullname is the protobuf fullname of the raw transaction type (for instance the tx.Tx type)
@@ -36,6 +38,7 @@ pub struct TxDescriptor {
 }
 /// AuthnDescriptor provides information on how to sign transactions without relying
 /// on the online RPCs GetTxMetadata and CombineUnsignedTxAndSignatures
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AuthnDescriptor {
     /// sign_modes defines the supported signature algorithm
@@ -46,6 +49,7 @@ pub struct AuthnDescriptor {
 /// NOTE(fdymylja): here we could go as far as providing an entire flow on how
 /// to sign a message given a SigningModeDescriptor, but it's better to think about
 /// this another time
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SigningModeDescriptor {
     /// name defines the unique name of the signing mode
@@ -60,6 +64,7 @@ pub struct SigningModeDescriptor {
     pub authn_info_provider_method_fullname: ::prost::alloc::string::String,
 }
 /// ChainDescriptor describes chain information of the application
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ChainDescriptor {
     /// id is the chain id
@@ -67,6 +72,7 @@ pub struct ChainDescriptor {
     pub id: ::prost::alloc::string::String,
 }
 /// CodecDescriptor describes the registered interfaces and provides metadata information on the types
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CodecDescriptor {
     /// interfaces is a list of the registerted interfaces descriptors
@@ -74,6 +80,7 @@ pub struct CodecDescriptor {
     pub interfaces: ::prost::alloc::vec::Vec<InterfaceDescriptor>,
 }
 /// InterfaceDescriptor describes the implementation of an interface
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct InterfaceDescriptor {
     /// fullname is the name of the interface
@@ -88,6 +95,7 @@ pub struct InterfaceDescriptor {
     pub interface_implementers: ::prost::alloc::vec::Vec<InterfaceImplementerDescriptor>,
 }
 /// InterfaceImplementerDescriptor describes an interface implementer
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct InterfaceImplementerDescriptor {
     /// fullname is the protobuf queryable name of the interface implementer
@@ -102,6 +110,7 @@ pub struct InterfaceImplementerDescriptor {
 }
 /// InterfaceAcceptingMessageDescriptor describes a protobuf message which contains
 /// an interface represented as a google.protobuf.Any
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct InterfaceAcceptingMessageDescriptor {
     /// fullname is the protobuf fullname of the type containing the interface
@@ -114,6 +123,7 @@ pub struct InterfaceAcceptingMessageDescriptor {
     pub field_descriptor_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
 }
 /// ConfigurationDescriptor contains metadata information on the sdk.Config
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ConfigurationDescriptor {
     /// bech32_account_address_prefix is the account address prefix
@@ -121,6 +131,7 @@ pub struct ConfigurationDescriptor {
     pub bech32_account_address_prefix: ::prost::alloc::string::String,
 }
 /// MsgDescriptor describes a cosmos-sdk message that can be delivered with a transaction
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgDescriptor {
     /// msg_type_url contains the TypeURL of a sdk.Msg.
@@ -128,9 +139,11 @@ pub struct MsgDescriptor {
     pub msg_type_url: ::prost::alloc::string::String,
 }
 /// GetAuthnDescriptorRequest is the request used for the GetAuthnDescriptor RPC
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetAuthnDescriptorRequest {}
 /// GetAuthnDescriptorResponse is the response returned by the GetAuthnDescriptor RPC
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetAuthnDescriptorResponse {
     /// authn describes how to authenticate to the application when sending transactions
@@ -138,9 +151,11 @@ pub struct GetAuthnDescriptorResponse {
     pub authn: ::core::option::Option<AuthnDescriptor>,
 }
 /// GetChainDescriptorRequest is the request used for the GetChainDescriptor RPC
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetChainDescriptorRequest {}
 /// GetChainDescriptorResponse is the response returned by the GetChainDescriptor RPC
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetChainDescriptorResponse {
     /// chain describes application chain information
@@ -148,9 +163,11 @@ pub struct GetChainDescriptorResponse {
     pub chain: ::core::option::Option<ChainDescriptor>,
 }
 /// GetCodecDescriptorRequest is the request used for the GetCodecDescriptor RPC
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetCodecDescriptorRequest {}
 /// GetCodecDescriptorResponse is the response returned by the GetCodecDescriptor RPC
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetCodecDescriptorResponse {
     /// codec describes the application codec such as registered interfaces and implementations
@@ -158,9 +175,11 @@ pub struct GetCodecDescriptorResponse {
     pub codec: ::core::option::Option<CodecDescriptor>,
 }
 /// GetConfigurationDescriptorRequest is the request used for the GetConfigurationDescriptor RPC
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetConfigurationDescriptorRequest {}
 /// GetConfigurationDescriptorResponse is the response returned by the GetConfigurationDescriptor RPC
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetConfigurationDescriptorResponse {
     /// config describes the application's sdk.Config
@@ -168,9 +187,11 @@ pub struct GetConfigurationDescriptorResponse {
     pub config: ::core::option::Option<ConfigurationDescriptor>,
 }
 /// GetQueryServicesDescriptorRequest is the request used for the GetQueryServicesDescriptor RPC
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetQueryServicesDescriptorRequest {}
 /// GetQueryServicesDescriptorResponse is the response returned by the GetQueryServicesDescriptor RPC
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetQueryServicesDescriptorResponse {
     /// queries provides information on the available queryable services
@@ -178,9 +199,11 @@ pub struct GetQueryServicesDescriptorResponse {
     pub queries: ::core::option::Option<QueryServicesDescriptor>,
 }
 /// GetTxDescriptorRequest is the request used for the GetTxDescriptor RPC
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetTxDescriptorRequest {}
 /// GetTxDescriptorResponse is the response returned by the GetTxDescriptor RPC
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetTxDescriptorResponse {
     /// tx provides information on msgs that can be forwarded to the application
@@ -189,6 +212,7 @@ pub struct GetTxDescriptorResponse {
     pub tx: ::core::option::Option<TxDescriptor>,
 }
 /// QueryServicesDescriptor contains the list of cosmos-sdk queriable services
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryServicesDescriptor {
     /// query_services is a list of cosmos-sdk QueryServiceDescriptor
@@ -196,6 +220,7 @@ pub struct QueryServicesDescriptor {
     pub query_services: ::prost::alloc::vec::Vec<QueryServiceDescriptor>,
 }
 /// QueryServiceDescriptor describes a cosmos-sdk queryable service
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryServiceDescriptor {
     /// fullname is the protobuf fullname of the service descriptor
@@ -211,6 +236,7 @@ pub struct QueryServiceDescriptor {
 /// QueryMethodDescriptor describes a queryable method of a query service
 /// no other info is provided beside method name and tendermint queryable path
 /// because it would be redundant with the grpc reflection service
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryMethodDescriptor {
     /// name is the protobuf name (not fullname) of the method
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.snapshots.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.snapshots.v1beta1.rs
index 8d80a25d..50faee3c 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.snapshots.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.snapshots.v1beta1.rs
@@ -1,5 +1,6 @@
 // @generated
 /// Snapshot contains Tendermint state sync snapshot info.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Snapshot {
     #[prost(uint64, tag = "1")]
@@ -14,6 +15,7 @@ pub struct Snapshot {
     pub metadata: ::core::option::Option<Metadata>,
 }
 /// Metadata contains SDK-specific snapshot metadata.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Metadata {
     /// SHA-256 chunk hashes
@@ -23,6 +25,7 @@ pub struct Metadata {
 /// SnapshotItem is an item contained in a rootmulti.Store snapshot.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SnapshotItem {
     /// item is the specific type of snapshot item.
@@ -32,6 +35,7 @@ pub struct SnapshotItem {
 /// Nested message and enum types in `SnapshotItem`.
 pub mod snapshot_item {
     /// item is the specific type of snapshot item.
+    #[allow(clippy::derive_partial_eq_without_eq)]
     #[derive(Clone, PartialEq, ::prost::Oneof)]
     pub enum Item {
         #[prost(message, tag = "1")]
@@ -51,6 +55,7 @@ pub mod snapshot_item {
 /// SnapshotStoreItem contains metadata about a snapshotted store.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SnapshotStoreItem {
     #[prost(string, tag = "1")]
@@ -59,6 +64,7 @@ pub struct SnapshotStoreItem {
 /// SnapshotIAVLItem is an exported IAVL node.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SnapshotIavlItem {
     #[prost(bytes = "vec", tag = "1")]
@@ -75,6 +81,7 @@ pub struct SnapshotIavlItem {
 /// SnapshotExtensionMeta contains metadata about an external snapshotter.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SnapshotExtensionMeta {
     #[prost(string, tag = "1")]
@@ -85,6 +92,7 @@ pub struct SnapshotExtensionMeta {
 /// SnapshotExtensionPayload contains payloads of an external snapshotter.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SnapshotExtensionPayload {
     #[prost(bytes = "vec", tag = "1")]
@@ -93,6 +101,7 @@ pub struct SnapshotExtensionPayload {
 /// SnapshotKVItem is an exported Key/Value Pair
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SnapshotKvItem {
     #[prost(bytes = "vec", tag = "1")]
@@ -103,6 +112,7 @@ pub struct SnapshotKvItem {
 /// SnapshotSchema is an exported schema of smt store
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SnapshotSchema {
     #[prost(bytes = "vec", repeated, tag = "1")]
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.store.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.store.v1beta1.rs
index 63f94a6d..d2983ea0 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.store.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.store.v1beta1.rs
@@ -1,6 +1,7 @@
 // @generated
 /// CommitInfo defines commit information used by the multi-store when committing
 /// a version/height.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CommitInfo {
     #[prost(int64, tag = "1")]
@@ -10,6 +11,7 @@ pub struct CommitInfo {
 }
 /// StoreInfo defines store-specific commit information. It contains a reference
 /// between a store name and the commit ID.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct StoreInfo {
     #[prost(string, tag = "1")]
@@ -19,6 +21,7 @@ pub struct StoreInfo {
 }
 /// CommitID defines the committment information when a specific store is
 /// committed.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CommitId {
     #[prost(int64, tag = "1")]
@@ -31,6 +34,7 @@ pub struct CommitId {
 /// Deletes
 ///
 /// Since: cosmos-sdk 0.43
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct StoreKvPair {
     /// the store key for the KVStore this pair originates from
@@ -46,6 +50,7 @@ pub struct StoreKvPair {
 }
 /// BlockMetadata contains all the abci event data of a block
 /// the file streamer dump them into files together with the state changes.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct BlockMetadata {
     #[prost(message, optional, tag = "1")]
@@ -67,6 +72,7 @@ pub struct BlockMetadata {
 /// Nested message and enum types in `BlockMetadata`.
 pub mod block_metadata {
     /// DeliverTx encapulate deliver tx request and response.
+    #[allow(clippy::derive_partial_eq_without_eq)]
     #[derive(Clone, PartialEq, ::prost::Message)]
     pub struct DeliverTx {
         #[prost(message, optional, tag = "1")]
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.tendermint.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.tendermint.v1beta1.rs
index e6de1499..0f547622 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.tendermint.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.tendermint.v1beta1.rs
@@ -1,6 +1,7 @@
 // @generated
 /// Block is tendermint type Block, with the Header proposer address
 /// field converted to bech32 string.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Block {
     #[prost(message, optional, tag = "1")]
@@ -13,6 +14,7 @@ pub struct Block {
     pub last_commit: ::core::option::Option<::tendermint_proto::v0_34::types::Commit>,
 }
 /// Header defines the structure of a Tendermint block header.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Header {
     /// basic block info
@@ -23,7 +25,7 @@ pub struct Header {
     #[prost(int64, tag = "3")]
     pub height: i64,
     #[prost(message, optional, tag = "4")]
-    pub time: ::core::option::Option<::prost_types::Timestamp>,
+    pub time: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
     /// prev block info
     #[prost(message, optional, tag = "5")]
     pub last_block_id: ::core::option::Option<::tendermint_proto::v0_34::types::BlockId>,
@@ -67,6 +69,7 @@ pub struct Header {
 }
 /// GetValidatorSetByHeightRequest is the request type for the
 /// Query/GetValidatorSetByHeight RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetValidatorSetByHeightRequest {
     #[prost(int64, tag = "1")]
@@ -77,6 +80,7 @@ pub struct GetValidatorSetByHeightRequest {
 }
 /// GetValidatorSetByHeightResponse is the response type for the
 /// Query/GetValidatorSetByHeight RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetValidatorSetByHeightResponse {
     #[prost(int64, tag = "1")]
@@ -89,6 +93,7 @@ pub struct GetValidatorSetByHeightResponse {
 }
 /// GetLatestValidatorSetRequest is the request type for the
 /// Query/GetValidatorSetByHeight RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetLatestValidatorSetRequest {
     /// pagination defines an pagination for the request.
@@ -97,6 +102,7 @@ pub struct GetLatestValidatorSetRequest {
 }
 /// GetLatestValidatorSetResponse is the response type for the
 /// Query/GetValidatorSetByHeight RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetLatestValidatorSetResponse {
     #[prost(int64, tag = "1")]
@@ -108,12 +114,13 @@ pub struct GetLatestValidatorSetResponse {
     pub pagination: ::core::option::Option<super::super::query::v1beta1::PageResponse>,
 }
 /// Validator is the type for the validator-set.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Validator {
     #[prost(string, tag = "1")]
     pub address: ::prost::alloc::string::String,
     #[prost(message, optional, tag = "2")]
-    pub pub_key: ::core::option::Option<::prost_types::Any>,
+    pub pub_key: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     #[prost(int64, tag = "3")]
     pub voting_power: i64,
     #[prost(int64, tag = "4")]
@@ -121,6 +128,7 @@ pub struct Validator {
 }
 /// GetBlockByHeightRequest is the request type for the Query/GetBlockByHeight
 /// RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetBlockByHeightRequest {
     #[prost(int64, tag = "1")]
@@ -128,6 +136,7 @@ pub struct GetBlockByHeightRequest {
 }
 /// GetBlockByHeightResponse is the response type for the Query/GetBlockByHeight
 /// RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetBlockByHeightResponse {
     #[prost(message, optional, tag = "1")]
@@ -141,10 +150,12 @@ pub struct GetBlockByHeightResponse {
 }
 /// GetLatestBlockRequest is the request type for the Query/GetLatestBlock RPC
 /// method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetLatestBlockRequest {}
 /// GetLatestBlockResponse is the response type for the Query/GetLatestBlock RPC
 /// method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetLatestBlockResponse {
     #[prost(message, optional, tag = "1")]
@@ -157,19 +168,23 @@ pub struct GetLatestBlockResponse {
     pub sdk_block: ::core::option::Option<Block>,
 }
 /// GetSyncingRequest is the request type for the Query/GetSyncing RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetSyncingRequest {}
 /// GetSyncingResponse is the response type for the Query/GetSyncing RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetSyncingResponse {
     #[prost(bool, tag = "1")]
     pub syncing: bool,
 }
 /// GetNodeInfoRequest is the request type for the Query/GetNodeInfo RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetNodeInfoRequest {}
 /// GetNodeInfoResponse is the response type for the Query/GetNodeInfo RPC
 /// method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetNodeInfoResponse {
     #[prost(message, optional, tag = "1")]
@@ -178,6 +193,7 @@ pub struct GetNodeInfoResponse {
     pub application_version: ::core::option::Option<VersionInfo>,
 }
 /// VersionInfo is the type for the GetNodeInfoResponse message.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct VersionInfo {
     #[prost(string, tag = "1")]
@@ -199,6 +215,7 @@ pub struct VersionInfo {
     pub cosmos_sdk_version: ::prost::alloc::string::String,
 }
 /// Module is the type for VersionInfo
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Module {
     /// module path
@@ -212,6 +229,7 @@ pub struct Module {
     pub sum: ::prost::alloc::string::String,
 }
 /// ABCIQueryRequest defines the request structure for the ABCIQuery gRPC query.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AbciQueryRequest {
     #[prost(bytes = "vec", tag = "1")]
@@ -228,6 +246,7 @@ pub struct AbciQueryRequest {
 ///
 /// Note: This type is a duplicate of the ResponseQuery proto type defined in
 /// Tendermint.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AbciQueryResponse {
     #[prost(uint32, tag = "1")]
@@ -257,6 +276,7 @@ pub struct AbciQueryResponse {
 ///
 /// Note: This type is a duplicate of the ProofOp proto type defined in
 /// Tendermint.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ProofOp {
     #[prost(string, tag = "1")]
@@ -270,6 +290,7 @@ pub struct ProofOp {
 ///
 /// Note: This type is a duplicate of the ProofOps proto type defined in
 /// Tendermint.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ProofOps {
     #[prost(message, repeated, tag = "1")]
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.v1beta1.rs
index cc4421b2..3701a1a8 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.base.v1beta1.rs
@@ -3,6 +3,7 @@
 ///
 /// NOTE: The amount field is an Int which implements the custom method
 /// signatures required by gogoproto.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Coin {
     #[prost(string, tag = "1")]
@@ -14,6 +15,7 @@ pub struct Coin {
 ///
 /// NOTE: The amount field is an Dec which implements the custom method
 /// signatures required by gogoproto.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DecCoin {
     #[prost(string, tag = "1")]
@@ -22,12 +24,14 @@ pub struct DecCoin {
     pub amount: ::prost::alloc::string::String,
 }
 /// IntProto defines a Protobuf wrapper around an Int object.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct IntProto {
     #[prost(string, tag = "1")]
     pub int: ::prost::alloc::string::String,
 }
 /// DecProto defines a Protobuf wrapper around a Dec object.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DecProto {
     #[prost(string, tag = "1")]
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.capability.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.capability.v1beta1.rs
index b1c83050..3b08dbef 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.capability.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.capability.v1beta1.rs
@@ -1,6 +1,7 @@
 // @generated
 /// Capability defines an implementation of an object capability. The index
 /// provided to a Capability must be globally unique.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Capability {
     #[prost(uint64, tag = "1")]
@@ -8,6 +9,7 @@ pub struct Capability {
 }
 /// Owner defines a single capability owner. An owner is defined by the name of
 /// capability and the module name.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Owner {
     #[prost(string, tag = "1")]
@@ -17,12 +19,14 @@ pub struct Owner {
 }
 /// CapabilityOwners defines a set of owners of a single Capability. The set of
 /// owners must be unique.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CapabilityOwners {
     #[prost(message, repeated, tag = "1")]
     pub owners: ::prost::alloc::vec::Vec<Owner>,
 }
 /// GenesisOwners defines the capability owners with their corresponding index.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GenesisOwners {
     /// index is the index of the capability owner.
@@ -33,6 +37,7 @@ pub struct GenesisOwners {
     pub index_owners: ::core::option::Option<CapabilityOwners>,
 }
 /// GenesisState defines the capability module's genesis state.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GenesisState {
     /// index is the capability global index.
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crisis.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crisis.v1beta1.rs
index b26eda40..02c77950 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crisis.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crisis.v1beta1.rs
@@ -1,5 +1,6 @@
 // @generated
 /// GenesisState defines the crisis module's genesis state.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GenesisState {
     /// constant_fee is the fee used to verify the invariant in the crisis
@@ -8,6 +9,7 @@ pub struct GenesisState {
     pub constant_fee: ::core::option::Option<super::super::base::v1beta1::Coin>,
 }
 /// MsgVerifyInvariant represents a message to verify a particular invariance.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgVerifyInvariant {
     #[prost(string, tag = "1")]
@@ -18,6 +20,7 @@ pub struct MsgVerifyInvariant {
     pub invariant_route: ::prost::alloc::string::String,
 }
 /// MsgVerifyInvariantResponse defines the Msg/VerifyInvariant response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgVerifyInvariantResponse {}
 include!("cosmos.crisis.v1beta1.tonic.rs");
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.ed25519.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.ed25519.rs
index 238b361a..ffe81581 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.ed25519.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.ed25519.rs
@@ -4,6 +4,7 @@
 /// It must not be used in a non Tendermint key context because it doesn't implement
 /// ADR-28. Nevertheless, you will like to use ed25519 in app user level
 /// then you must create a new proto message and follow ADR-28 for Address construction.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct PubKey {
     #[prost(bytes = "vec", tag = "1")]
@@ -11,6 +12,7 @@ pub struct PubKey {
 }
 /// Deprecated: PrivKey defines a ed25519 private key.
 /// NOTE: ed25519 keys must not be used in SDK apps except in a tendermint validator context.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct PrivKey {
     #[prost(bytes = "vec", tag = "1")]
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.hd.v1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.hd.v1.rs
index 1ff415b4..012f1ec2 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.hd.v1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.hd.v1.rs
@@ -1,5 +1,6 @@
 // @generated
 /// BIP44Params is used as path field in ledger item in Record.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Bip44Params {
     /// purpose is a constant set to 44' (or 0x8000002C) following the BIP43 recommendation
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.keyring.v1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.keyring.v1.rs
index 6f72e275..6c9bcfe2 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.keyring.v1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.keyring.v1.rs
@@ -1,5 +1,6 @@
 // @generated
 /// Record is used for representing a key in the keyring.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Record {
     /// name represents a name of Record
@@ -7,7 +8,7 @@ pub struct Record {
     pub name: ::prost::alloc::string::String,
     /// pub_key represents a public key in any format
     #[prost(message, optional, tag = "2")]
-    pub pub_key: ::core::option::Option<::prost_types::Any>,
+    pub pub_key: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     /// Record contains one of the following items
     #[prost(oneof = "record::Item", tags = "3, 4, 5, 6")]
     pub item: ::core::option::Option<record::Item>,
@@ -16,24 +17,29 @@ pub struct Record {
 pub mod record {
     /// Item is a keyring item stored in a keyring backend.
     /// Local item
+    #[allow(clippy::derive_partial_eq_without_eq)]
     #[derive(Clone, PartialEq, ::prost::Message)]
     pub struct Local {
         #[prost(message, optional, tag = "1")]
-        pub priv_key: ::core::option::Option<::prost_types::Any>,
+        pub priv_key: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     }
     /// Ledger item
+    #[allow(clippy::derive_partial_eq_without_eq)]
     #[derive(Clone, PartialEq, ::prost::Message)]
     pub struct Ledger {
         #[prost(message, optional, tag = "1")]
         pub path: ::core::option::Option<super::super::super::hd::v1::Bip44Params>,
     }
     /// Multi item
+    #[allow(clippy::derive_partial_eq_without_eq)]
     #[derive(Clone, PartialEq, ::prost::Message)]
     pub struct Multi {}
     /// Offline item
+    #[allow(clippy::derive_partial_eq_without_eq)]
     #[derive(Clone, PartialEq, ::prost::Message)]
     pub struct Offline {}
     /// Record contains one of the following items
+    #[allow(clippy::derive_partial_eq_without_eq)]
     #[derive(Clone, PartialEq, ::prost::Oneof)]
     pub enum Item {
         /// local stores the private key locally.
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.multisig.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.multisig.rs
index 974b4bc0..5bb6c242 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.multisig.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.multisig.rs
@@ -2,11 +2,12 @@
 /// LegacyAminoPubKey specifies a public key type
 /// which nests multiple public keys and a threshold,
 /// it uses legacy amino address rules.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct LegacyAminoPubKey {
     #[prost(uint32, tag = "1")]
     pub threshold: u32,
     #[prost(message, repeated, tag = "2")]
-    pub public_keys: ::prost::alloc::vec::Vec<::prost_types::Any>,
+    pub public_keys: ::prost::alloc::vec::Vec<::tendermint_proto::google::protobuf::Any>,
 }
 // @@protoc_insertion_point(module)
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.multisig.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.multisig.v1beta1.rs
index 9898f38e..b02457f2 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.multisig.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.multisig.v1beta1.rs
@@ -2,6 +2,7 @@
 /// MultiSignature wraps the signatures from a multisig.LegacyAminoPubKey.
 /// See cosmos.tx.v1betata1.ModeInfo.Multi for how to specify which signers
 /// signed and with which modes.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MultiSignature {
     #[prost(bytes = "vec", repeated, tag = "1")]
@@ -11,6 +12,7 @@ pub struct MultiSignature {
 /// This is used to ensure that the encoded data takes up a minimal amount of
 /// space after proto encoding.
 /// This is not thread safe, and is not intended for concurrent usage.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CompactBitArray {
     #[prost(uint32, tag = "1")]
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.secp256k1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.secp256k1.rs
index 1f145b3c..fcc15624 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.secp256k1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.secp256k1.rs
@@ -4,12 +4,14 @@
 /// if the y-coordinate is the lexicographically largest of the two associated with
 /// the x-coordinate. Otherwise the first byte is a 0x03.
 /// This prefix is followed with the x-coordinate.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct PubKey {
     #[prost(bytes = "vec", tag = "1")]
     pub key: ::prost::alloc::vec::Vec<u8>,
 }
 /// PrivKey defines a secp256k1 private key.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct PrivKey {
     #[prost(bytes = "vec", tag = "1")]
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.secp256r1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.secp256r1.rs
index ec7fc762..b5078d8c 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.secp256r1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.crypto.secp256r1.rs
@@ -1,5 +1,6 @@
 // @generated
 /// PubKey defines a secp256r1 ECDSA public key.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct PubKey {
     /// Point on secp256r1 curve in a compressed representation as specified in section
@@ -8,6 +9,7 @@ pub struct PubKey {
     pub key: ::prost::alloc::vec::Vec<u8>,
 }
 /// PrivKey defines a secp256r1 ECDSA private key.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct PrivKey {
     /// secret number serialized using big-endian encoding
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.distribution.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.distribution.v1beta1.rs
index 85d64736..7364d071 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.distribution.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.distribution.v1beta1.rs
@@ -1,5 +1,6 @@
 // @generated
 /// Params defines the set of params for the distribution module.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Params {
     #[prost(string, tag = "1")]
@@ -23,6 +24,7 @@ pub struct Params {
 ///   + number of slashes which ended the associated period (and might need to
 ///   read that record)
 ///   + one per validator for the zeroeth period, set on initialization
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ValidatorHistoricalRewards {
     #[prost(message, repeated, tag = "1")]
@@ -33,6 +35,7 @@ pub struct ValidatorHistoricalRewards {
 /// ValidatorCurrentRewards represents current rewards and current
 /// period for a validator kept as a running counter and incremented
 /// each block as long as the validator's tokens remain constant.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ValidatorCurrentRewards {
     #[prost(message, repeated, tag = "1")]
@@ -42,6 +45,7 @@ pub struct ValidatorCurrentRewards {
 }
 /// ValidatorAccumulatedCommission represents accumulated commission
 /// for a validator kept as a running counter, can be withdrawn at any time.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ValidatorAccumulatedCommission {
     #[prost(message, repeated, tag = "1")]
@@ -49,6 +53,7 @@ pub struct ValidatorAccumulatedCommission {
 }
 /// ValidatorOutstandingRewards represents outstanding (un-withdrawn) rewards
 /// for a validator inexpensive to track, allows simple sanity checks.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ValidatorOutstandingRewards {
     #[prost(message, repeated, tag = "1")]
@@ -58,6 +63,7 @@ pub struct ValidatorOutstandingRewards {
 /// Height is implicit within the store key.
 /// This is needed to calculate appropriate amount of staking tokens
 /// for delegations which are withdrawn after a slash has occurred.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ValidatorSlashEvent {
     #[prost(uint64, tag = "1")]
@@ -66,12 +72,14 @@ pub struct ValidatorSlashEvent {
     pub fraction: ::prost::alloc::string::String,
 }
 /// ValidatorSlashEvents is a collection of ValidatorSlashEvent messages.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ValidatorSlashEvents {
     #[prost(message, repeated, tag = "1")]
     pub validator_slash_events: ::prost::alloc::vec::Vec<ValidatorSlashEvent>,
 }
 /// FeePool is the global fee pool for distribution.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct FeePool {
     #[prost(message, repeated, tag = "1")]
@@ -80,6 +88,7 @@ pub struct FeePool {
 /// CommunityPoolSpendProposal details a proposal for use of community funds,
 /// together with how many coins are proposed to be spent, and to which
 /// recipient account.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CommunityPoolSpendProposal {
     #[prost(string, tag = "1")]
@@ -97,6 +106,7 @@ pub struct CommunityPoolSpendProposal {
 /// occurred). NOTE: Even though validators are slashed to whole staking tokens,
 /// the delegators within the validator may be left with less than a full token,
 /// thus sdk.Dec is used.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DelegatorStartingInfo {
     #[prost(uint64, tag = "1")]
@@ -108,6 +118,7 @@ pub struct DelegatorStartingInfo {
 }
 /// DelegationDelegatorReward represents the properties
 /// of a delegator's delegation reward.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DelegationDelegatorReward {
     #[prost(string, tag = "1")]
@@ -117,6 +128,7 @@ pub struct DelegationDelegatorReward {
 }
 /// CommunityPoolSpendProposalWithDeposit defines a CommunityPoolSpendProposal
 /// with a deposit
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CommunityPoolSpendProposalWithDeposit {
     #[prost(string, tag = "1")]
@@ -133,6 +145,7 @@ pub struct CommunityPoolSpendProposalWithDeposit {
 /// DelegatorWithdrawInfo is the address for where distributions rewards are
 /// withdrawn to by default this struct is only used at genesis to feed in
 /// default withdraw addresses.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DelegatorWithdrawInfo {
     /// delegator_address is the address of the delegator.
@@ -143,6 +156,7 @@ pub struct DelegatorWithdrawInfo {
     pub withdraw_address: ::prost::alloc::string::String,
 }
 /// ValidatorOutstandingRewardsRecord is used for import/export via genesis json.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ValidatorOutstandingRewardsRecord {
     /// validator_address is the address of the validator.
@@ -154,6 +168,7 @@ pub struct ValidatorOutstandingRewardsRecord {
 }
 /// ValidatorAccumulatedCommissionRecord is used for import / export via genesis
 /// json.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ValidatorAccumulatedCommissionRecord {
     /// validator_address is the address of the validator.
@@ -165,6 +180,7 @@ pub struct ValidatorAccumulatedCommissionRecord {
 }
 /// ValidatorHistoricalRewardsRecord is used for import / export via genesis
 /// json.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ValidatorHistoricalRewardsRecord {
     /// validator_address is the address of the validator.
@@ -178,6 +194,7 @@ pub struct ValidatorHistoricalRewardsRecord {
     pub rewards: ::core::option::Option<ValidatorHistoricalRewards>,
 }
 /// ValidatorCurrentRewardsRecord is used for import / export via genesis json.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ValidatorCurrentRewardsRecord {
     /// validator_address is the address of the validator.
@@ -188,6 +205,7 @@ pub struct ValidatorCurrentRewardsRecord {
     pub rewards: ::core::option::Option<ValidatorCurrentRewards>,
 }
 /// DelegatorStartingInfoRecord used for import / export via genesis json.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DelegatorStartingInfoRecord {
     /// delegator_address is the address of the delegator.
@@ -201,6 +219,7 @@ pub struct DelegatorStartingInfoRecord {
     pub starting_info: ::core::option::Option<DelegatorStartingInfo>,
 }
 /// ValidatorSlashEventRecord is used for import / export via genesis json.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ValidatorSlashEventRecord {
     /// validator_address is the address of the validator.
@@ -217,6 +236,7 @@ pub struct ValidatorSlashEventRecord {
     pub validator_slash_event: ::core::option::Option<ValidatorSlashEvent>,
 }
 /// GenesisState defines the distribution module's genesis state.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GenesisState {
     /// params defines all the paramaters of the module.
@@ -252,9 +272,11 @@ pub struct GenesisState {
     pub validator_slash_events: ::prost::alloc::vec::Vec<ValidatorSlashEventRecord>,
 }
 /// QueryParamsRequest is the request type for the Query/Params RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryParamsRequest {}
 /// QueryParamsResponse is the response type for the Query/Params RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryParamsResponse {
     /// params defines the parameters of the module.
@@ -263,6 +285,7 @@ pub struct QueryParamsResponse {
 }
 /// QueryValidatorOutstandingRewardsRequest is the request type for the
 /// Query/ValidatorOutstandingRewards RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryValidatorOutstandingRewardsRequest {
     /// validator_address defines the validator address to query for.
@@ -271,6 +294,7 @@ pub struct QueryValidatorOutstandingRewardsRequest {
 }
 /// QueryValidatorOutstandingRewardsResponse is the response type for the
 /// Query/ValidatorOutstandingRewards RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryValidatorOutstandingRewardsResponse {
     #[prost(message, optional, tag = "1")]
@@ -278,6 +302,7 @@ pub struct QueryValidatorOutstandingRewardsResponse {
 }
 /// QueryValidatorCommissionRequest is the request type for the
 /// Query/ValidatorCommission RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryValidatorCommissionRequest {
     /// validator_address defines the validator address to query for.
@@ -286,6 +311,7 @@ pub struct QueryValidatorCommissionRequest {
 }
 /// QueryValidatorCommissionResponse is the response type for the
 /// Query/ValidatorCommission RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryValidatorCommissionResponse {
     /// commission defines the commision the validator received.
@@ -294,6 +320,7 @@ pub struct QueryValidatorCommissionResponse {
 }
 /// QueryValidatorSlashesRequest is the request type for the
 /// Query/ValidatorSlashes RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryValidatorSlashesRequest {
     /// validator_address defines the validator address to query for.
@@ -311,6 +338,7 @@ pub struct QueryValidatorSlashesRequest {
 }
 /// QueryValidatorSlashesResponse is the response type for the
 /// Query/ValidatorSlashes RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryValidatorSlashesResponse {
     /// slashes defines the slashes the validator received.
@@ -322,6 +350,7 @@ pub struct QueryValidatorSlashesResponse {
 }
 /// QueryDelegationRewardsRequest is the request type for the
 /// Query/DelegationRewards RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDelegationRewardsRequest {
     /// delegator_address defines the delegator address to query for.
@@ -333,6 +362,7 @@ pub struct QueryDelegationRewardsRequest {
 }
 /// QueryDelegationRewardsResponse is the response type for the
 /// Query/DelegationRewards RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDelegationRewardsResponse {
     /// rewards defines the rewards accrued by a delegation.
@@ -341,6 +371,7 @@ pub struct QueryDelegationRewardsResponse {
 }
 /// QueryDelegationTotalRewardsRequest is the request type for the
 /// Query/DelegationTotalRewards RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDelegationTotalRewardsRequest {
     /// delegator_address defines the delegator address to query for.
@@ -349,6 +380,7 @@ pub struct QueryDelegationTotalRewardsRequest {
 }
 /// QueryDelegationTotalRewardsResponse is the response type for the
 /// Query/DelegationTotalRewards RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDelegationTotalRewardsResponse {
     /// rewards defines all the rewards accrued by a delegator.
@@ -360,6 +392,7 @@ pub struct QueryDelegationTotalRewardsResponse {
 }
 /// QueryDelegatorValidatorsRequest is the request type for the
 /// Query/DelegatorValidators RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDelegatorValidatorsRequest {
     /// delegator_address defines the delegator address to query for.
@@ -368,6 +401,7 @@ pub struct QueryDelegatorValidatorsRequest {
 }
 /// QueryDelegatorValidatorsResponse is the response type for the
 /// Query/DelegatorValidators RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDelegatorValidatorsResponse {
     /// validators defines the validators a delegator is delegating for.
@@ -376,6 +410,7 @@ pub struct QueryDelegatorValidatorsResponse {
 }
 /// QueryDelegatorWithdrawAddressRequest is the request type for the
 /// Query/DelegatorWithdrawAddress RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDelegatorWithdrawAddressRequest {
     /// delegator_address defines the delegator address to query for.
@@ -384,6 +419,7 @@ pub struct QueryDelegatorWithdrawAddressRequest {
 }
 /// QueryDelegatorWithdrawAddressResponse is the response type for the
 /// Query/DelegatorWithdrawAddress RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDelegatorWithdrawAddressResponse {
     /// withdraw_address defines the delegator address to query for.
@@ -392,10 +428,12 @@ pub struct QueryDelegatorWithdrawAddressResponse {
 }
 /// QueryCommunityPoolRequest is the request type for the Query/CommunityPool RPC
 /// method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryCommunityPoolRequest {}
 /// QueryCommunityPoolResponse is the response type for the Query/CommunityPool
 /// RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryCommunityPoolResponse {
     /// pool defines community pool's coins.
@@ -404,6 +442,7 @@ pub struct QueryCommunityPoolResponse {
 }
 /// MsgSetWithdrawAddress sets the withdraw address for
 /// a delegator (or validator self-delegation).
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgSetWithdrawAddress {
     #[prost(string, tag = "1")]
@@ -412,10 +451,12 @@ pub struct MsgSetWithdrawAddress {
     pub withdraw_address: ::prost::alloc::string::String,
 }
 /// MsgSetWithdrawAddressResponse defines the Msg/SetWithdrawAddress response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgSetWithdrawAddressResponse {}
 /// MsgWithdrawDelegatorReward represents delegation withdrawal to a delegator
 /// from a single validator.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgWithdrawDelegatorReward {
     #[prost(string, tag = "1")]
@@ -424,6 +465,7 @@ pub struct MsgWithdrawDelegatorReward {
     pub validator_address: ::prost::alloc::string::String,
 }
 /// MsgWithdrawDelegatorRewardResponse defines the Msg/WithdrawDelegatorReward response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgWithdrawDelegatorRewardResponse {
     /// Since: cosmos-sdk 0.46
@@ -432,12 +474,14 @@ pub struct MsgWithdrawDelegatorRewardResponse {
 }
 /// MsgWithdrawValidatorCommission withdraws the full commission to the validator
 /// address.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgWithdrawValidatorCommission {
     #[prost(string, tag = "1")]
     pub validator_address: ::prost::alloc::string::String,
 }
 /// MsgWithdrawValidatorCommissionResponse defines the Msg/WithdrawValidatorCommission response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgWithdrawValidatorCommissionResponse {
     /// Since: cosmos-sdk 0.46
@@ -446,6 +490,7 @@ pub struct MsgWithdrawValidatorCommissionResponse {
 }
 /// MsgFundCommunityPool allows an account to directly
 /// fund the community pool.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgFundCommunityPool {
     #[prost(message, repeated, tag = "1")]
@@ -454,6 +499,7 @@ pub struct MsgFundCommunityPool {
     pub depositor: ::prost::alloc::string::String,
 }
 /// MsgFundCommunityPoolResponse defines the Msg/FundCommunityPool response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgFundCommunityPoolResponse {}
 include!("cosmos.distribution.v1beta1.tonic.rs");
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.evidence.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.evidence.v1beta1.rs
index 6ef949d0..5ef5851a 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.evidence.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.evidence.v1beta1.rs
@@ -1,25 +1,28 @@
 // @generated
 /// Equivocation implements the Evidence interface and defines evidence of double
 /// signing misbehavior.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Equivocation {
     #[prost(int64, tag = "1")]
     pub height: i64,
     #[prost(message, optional, tag = "2")]
-    pub time: ::core::option::Option<::prost_types::Timestamp>,
+    pub time: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
     #[prost(int64, tag = "3")]
     pub power: i64,
     #[prost(string, tag = "4")]
     pub consensus_address: ::prost::alloc::string::String,
 }
 /// GenesisState defines the evidence module's genesis state.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GenesisState {
     /// evidence defines all the evidence at genesis.
     #[prost(message, repeated, tag = "1")]
-    pub evidence: ::prost::alloc::vec::Vec<::prost_types::Any>,
+    pub evidence: ::prost::alloc::vec::Vec<::tendermint_proto::google::protobuf::Any>,
 }
 /// QueryEvidenceRequest is the request type for the Query/Evidence RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryEvidenceRequest {
     /// evidence_hash defines the hash of the requested evidence.
@@ -27,14 +30,16 @@ pub struct QueryEvidenceRequest {
     pub evidence_hash: ::prost::alloc::vec::Vec<u8>,
 }
 /// QueryEvidenceResponse is the response type for the Query/Evidence RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryEvidenceResponse {
     /// evidence returns the requested evidence.
     #[prost(message, optional, tag = "1")]
-    pub evidence: ::core::option::Option<::prost_types::Any>,
+    pub evidence: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
 }
 /// QueryEvidenceRequest is the request type for the Query/AllEvidence RPC
 /// method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryAllEvidenceRequest {
     /// pagination defines an optional pagination for the request.
@@ -43,25 +48,28 @@ pub struct QueryAllEvidenceRequest {
 }
 /// QueryAllEvidenceResponse is the response type for the Query/AllEvidence RPC
 /// method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryAllEvidenceResponse {
     /// evidence returns all evidences.
     #[prost(message, repeated, tag = "1")]
-    pub evidence: ::prost::alloc::vec::Vec<::prost_types::Any>,
+    pub evidence: ::prost::alloc::vec::Vec<::tendermint_proto::google::protobuf::Any>,
     /// pagination defines the pagination in the response.
     #[prost(message, optional, tag = "2")]
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// MsgSubmitEvidence represents a message that supports submitting arbitrary
 /// Evidence of misbehavior such as equivocation or counterfactual signing.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgSubmitEvidence {
     #[prost(string, tag = "1")]
     pub submitter: ::prost::alloc::string::String,
     #[prost(message, optional, tag = "2")]
-    pub evidence: ::core::option::Option<::prost_types::Any>,
+    pub evidence: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
 }
 /// MsgSubmitEvidenceResponse defines the Msg/SubmitEvidence response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgSubmitEvidenceResponse {
     /// hash defines the hash of the evidence.
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.feegrant.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.feegrant.v1beta1.rs
index 6715da41..03a750c9 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.feegrant.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.feegrant.v1beta1.rs
@@ -1,6 +1,7 @@
 // @generated
 /// BasicAllowance implements Allowance with a one-time grant of coins
 /// that optionally expires. The grantee can use up to SpendLimit to cover fees.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct BasicAllowance {
     /// spend_limit specifies the maximum amount of coins that can be spent
@@ -10,10 +11,11 @@ pub struct BasicAllowance {
     pub spend_limit: ::prost::alloc::vec::Vec<super::super::base::v1beta1::Coin>,
     /// expiration specifies an optional time when this allowance expires
     #[prost(message, optional, tag = "2")]
-    pub expiration: ::core::option::Option<::prost_types::Timestamp>,
+    pub expiration: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
 }
 /// PeriodicAllowance extends Allowance to allow for both a maximum cap,
 /// as well as a limit per time period.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct PeriodicAllowance {
     /// basic specifies a struct of `BasicAllowance`
@@ -22,7 +24,7 @@ pub struct PeriodicAllowance {
     /// period specifies the time duration in which period_spend_limit coins can
     /// be spent before that allowance is reset
     #[prost(message, optional, tag = "2")]
-    pub period: ::core::option::Option<::prost_types::Duration>,
+    pub period: ::core::option::Option<::tendermint_proto::google::protobuf::Duration>,
     /// period_spend_limit specifies the maximum number of coins that can be spent
     /// in the period
     #[prost(message, repeated, tag = "3")]
@@ -34,19 +36,21 @@ pub struct PeriodicAllowance {
     /// it is calculated from the start time of the first transaction after the
     /// last period ended
     #[prost(message, optional, tag = "5")]
-    pub period_reset: ::core::option::Option<::prost_types::Timestamp>,
+    pub period_reset: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
 }
 /// AllowedMsgAllowance creates allowance only for specified message types.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AllowedMsgAllowance {
     /// allowance can be any of basic and periodic fee allowance.
     #[prost(message, optional, tag = "1")]
-    pub allowance: ::core::option::Option<::prost_types::Any>,
+    pub allowance: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     /// allowed_messages are the messages for which the grantee has the access.
     #[prost(string, repeated, tag = "2")]
     pub allowed_messages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
 }
 /// Grant is stored in the KVStore to record a grant with full context
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Grant {
     /// granter is the address of the user granting an allowance of their funds.
@@ -57,15 +61,17 @@ pub struct Grant {
     pub grantee: ::prost::alloc::string::String,
     /// allowance can be any of basic, periodic, allowed fee allowance.
     #[prost(message, optional, tag = "3")]
-    pub allowance: ::core::option::Option<::prost_types::Any>,
+    pub allowance: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
 }
 /// GenesisState contains a set of fee allowances, persisted from the store
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GenesisState {
     #[prost(message, repeated, tag = "1")]
     pub allowances: ::prost::alloc::vec::Vec<Grant>,
 }
 /// QueryAllowanceRequest is the request type for the Query/Allowance RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryAllowanceRequest {
     /// granter is the address of the user granting an allowance of their funds.
@@ -76,6 +82,7 @@ pub struct QueryAllowanceRequest {
     pub grantee: ::prost::alloc::string::String,
 }
 /// QueryAllowanceResponse is the response type for the Query/Allowance RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryAllowanceResponse {
     /// allowance is a allowance granted for grantee by granter.
@@ -83,6 +90,7 @@ pub struct QueryAllowanceResponse {
     pub allowance: ::core::option::Option<Grant>,
 }
 /// QueryAllowancesRequest is the request type for the Query/Allowances RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryAllowancesRequest {
     #[prost(string, tag = "1")]
@@ -92,6 +100,7 @@ pub struct QueryAllowancesRequest {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
 }
 /// QueryAllowancesResponse is the response type for the Query/Allowances RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryAllowancesResponse {
     /// allowances are allowance's granted for grantee by granter.
@@ -104,6 +113,7 @@ pub struct QueryAllowancesResponse {
 /// QueryAllowancesByGranterRequest is the request type for the Query/AllowancesByGranter RPC method.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryAllowancesByGranterRequest {
     #[prost(string, tag = "1")]
@@ -115,6 +125,7 @@ pub struct QueryAllowancesByGranterRequest {
 /// QueryAllowancesByGranterResponse is the response type for the Query/AllowancesByGranter RPC method.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryAllowancesByGranterResponse {
     /// allowances that have been issued by the granter.
@@ -126,6 +137,7 @@ pub struct QueryAllowancesByGranterResponse {
 }
 /// MsgGrantAllowance adds permission for Grantee to spend up to Allowance
 /// of fees from the account of Granter.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgGrantAllowance {
     /// granter is the address of the user granting an allowance of their funds.
@@ -136,12 +148,14 @@ pub struct MsgGrantAllowance {
     pub grantee: ::prost::alloc::string::String,
     /// allowance can be any of basic, periodic, allowed fee allowance.
     #[prost(message, optional, tag = "3")]
-    pub allowance: ::core::option::Option<::prost_types::Any>,
+    pub allowance: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
 }
 /// MsgGrantAllowanceResponse defines the Msg/GrantAllowanceResponse response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgGrantAllowanceResponse {}
 /// MsgRevokeAllowance removes any existing Allowance from Granter to Grantee.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgRevokeAllowance {
     /// granter is the address of the user granting an allowance of their funds.
@@ -152,6 +166,7 @@ pub struct MsgRevokeAllowance {
     pub grantee: ::prost::alloc::string::String,
 }
 /// MsgRevokeAllowanceResponse defines the Msg/RevokeAllowanceResponse response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgRevokeAllowanceResponse {}
 include!("cosmos.feegrant.v1beta1.tonic.rs");
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.genutil.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.genutil.v1beta1.rs
index 2527f9e4..254fdd91 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.genutil.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.genutil.v1beta1.rs
@@ -1,5 +1,6 @@
 // @generated
 /// GenesisState defines the raw genesis transaction in JSON.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GenesisState {
     /// gen_txs defines the genesis transactions.
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.gov.v1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.gov.v1.rs
index 97baf541..7ff33edd 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.gov.v1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.gov.v1.rs
@@ -1,5 +1,6 @@
 // @generated
 /// WeightedVoteOption defines a unit of vote for vote split.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct WeightedVoteOption {
     #[prost(enumeration = "VoteOption", tag = "1")]
@@ -9,6 +10,7 @@ pub struct WeightedVoteOption {
 }
 /// Deposit defines an amount deposited by an account address to an active
 /// proposal.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Deposit {
     #[prost(uint64, tag = "1")]
@@ -19,12 +21,13 @@ pub struct Deposit {
     pub amount: ::prost::alloc::vec::Vec<super::super::base::v1beta1::Coin>,
 }
 /// Proposal defines the core field members of a governance proposal.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Proposal {
     #[prost(uint64, tag = "1")]
     pub id: u64,
     #[prost(message, repeated, tag = "2")]
-    pub messages: ::prost::alloc::vec::Vec<::prost_types::Any>,
+    pub messages: ::prost::alloc::vec::Vec<::tendermint_proto::google::protobuf::Any>,
     #[prost(enumeration = "ProposalStatus", tag = "3")]
     pub status: i32,
     /// final_tally_result is the final tally result of the proposal. When
@@ -33,20 +36,21 @@ pub struct Proposal {
     #[prost(message, optional, tag = "4")]
     pub final_tally_result: ::core::option::Option<TallyResult>,
     #[prost(message, optional, tag = "5")]
-    pub submit_time: ::core::option::Option<::prost_types::Timestamp>,
+    pub submit_time: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
     #[prost(message, optional, tag = "6")]
-    pub deposit_end_time: ::core::option::Option<::prost_types::Timestamp>,
+    pub deposit_end_time: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
     #[prost(message, repeated, tag = "7")]
     pub total_deposit: ::prost::alloc::vec::Vec<super::super::base::v1beta1::Coin>,
     #[prost(message, optional, tag = "8")]
-    pub voting_start_time: ::core::option::Option<::prost_types::Timestamp>,
+    pub voting_start_time: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
     #[prost(message, optional, tag = "9")]
-    pub voting_end_time: ::core::option::Option<::prost_types::Timestamp>,
+    pub voting_end_time: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
     /// metadata is any arbitrary metadata attached to the proposal.
     #[prost(string, tag = "10")]
     pub metadata: ::prost::alloc::string::String,
 }
 /// TallyResult defines a standard tally for a governance proposal.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct TallyResult {
     #[prost(string, tag = "1")]
@@ -60,6 +64,7 @@ pub struct TallyResult {
 }
 /// Vote defines a vote on a governance proposal.
 /// A Vote consists of a proposal ID, the voter, and the vote option.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Vote {
     #[prost(uint64, tag = "1")]
@@ -73,6 +78,7 @@ pub struct Vote {
     pub metadata: ::prost::alloc::string::String,
 }
 /// DepositParams defines the params for deposits on governance proposals.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DepositParams {
     ///   Minimum deposit for a proposal to enter voting period.
@@ -81,16 +87,18 @@ pub struct DepositParams {
     ///   Maximum period for Atom holders to deposit on a proposal. Initial value: 2
     ///   months.
     #[prost(message, optional, tag = "2")]
-    pub max_deposit_period: ::core::option::Option<::prost_types::Duration>,
+    pub max_deposit_period: ::core::option::Option<::tendermint_proto::google::protobuf::Duration>,
 }
 /// VotingParams defines the params for voting on governance proposals.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct VotingParams {
     ///   Length of the voting period.
     #[prost(message, optional, tag = "1")]
-    pub voting_period: ::core::option::Option<::prost_types::Duration>,
+    pub voting_period: ::core::option::Option<::tendermint_proto::google::protobuf::Duration>,
 }
 /// TallyParams defines the params for tallying votes on governance proposals.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct TallyParams {
     ///   Minimum percentage of total stake needed to vote for a result to be
@@ -134,6 +142,17 @@ impl VoteOption {
             VoteOption::NoWithVeto => "VOTE_OPTION_NO_WITH_VETO",
         }
     }
+    /// Creates an enum from field names used in the ProtoBuf definition.
+    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+        match value {
+            "VOTE_OPTION_UNSPECIFIED" => Some(Self::Unspecified),
+            "VOTE_OPTION_YES" => Some(Self::Yes),
+            "VOTE_OPTION_ABSTAIN" => Some(Self::Abstain),
+            "VOTE_OPTION_NO" => Some(Self::No),
+            "VOTE_OPTION_NO_WITH_VETO" => Some(Self::NoWithVeto),
+            _ => None,
+        }
+    }
 }
 /// ProposalStatus enumerates the valid statuses of a proposal.
 #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
@@ -172,8 +191,21 @@ impl ProposalStatus {
             ProposalStatus::Failed => "PROPOSAL_STATUS_FAILED",
         }
     }
+    /// Creates an enum from field names used in the ProtoBuf definition.
+    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+        match value {
+            "PROPOSAL_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
+            "PROPOSAL_STATUS_DEPOSIT_PERIOD" => Some(Self::DepositPeriod),
+            "PROPOSAL_STATUS_VOTING_PERIOD" => Some(Self::VotingPeriod),
+            "PROPOSAL_STATUS_PASSED" => Some(Self::Passed),
+            "PROPOSAL_STATUS_REJECTED" => Some(Self::Rejected),
+            "PROPOSAL_STATUS_FAILED" => Some(Self::Failed),
+            _ => None,
+        }
+    }
 }
 /// GenesisState defines the gov module's genesis state.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GenesisState {
     /// starting_proposal_id is the ID of the starting proposal.
@@ -199,6 +231,7 @@ pub struct GenesisState {
     pub tally_params: ::core::option::Option<TallyParams>,
 }
 /// QueryProposalRequest is the request type for the Query/Proposal RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryProposalRequest {
     /// proposal_id defines the unique id of the proposal.
@@ -206,12 +239,14 @@ pub struct QueryProposalRequest {
     pub proposal_id: u64,
 }
 /// QueryProposalResponse is the response type for the Query/Proposal RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryProposalResponse {
     #[prost(message, optional, tag = "1")]
     pub proposal: ::core::option::Option<Proposal>,
 }
 /// QueryProposalsRequest is the request type for the Query/Proposals RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryProposalsRequest {
     /// proposal_status defines the status of the proposals.
@@ -229,6 +264,7 @@ pub struct QueryProposalsRequest {
 }
 /// QueryProposalsResponse is the response type for the Query/Proposals RPC
 /// method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryProposalsResponse {
     #[prost(message, repeated, tag = "1")]
@@ -238,6 +274,7 @@ pub struct QueryProposalsResponse {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// QueryVoteRequest is the request type for the Query/Vote RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryVoteRequest {
     /// proposal_id defines the unique id of the proposal.
@@ -248,6 +285,7 @@ pub struct QueryVoteRequest {
     pub voter: ::prost::alloc::string::String,
 }
 /// QueryVoteResponse is the response type for the Query/Vote RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryVoteResponse {
     /// vote defined the queried vote.
@@ -255,6 +293,7 @@ pub struct QueryVoteResponse {
     pub vote: ::core::option::Option<Vote>,
 }
 /// QueryVotesRequest is the request type for the Query/Votes RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryVotesRequest {
     /// proposal_id defines the unique id of the proposal.
@@ -265,6 +304,7 @@ pub struct QueryVotesRequest {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
 }
 /// QueryVotesResponse is the response type for the Query/Votes RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryVotesResponse {
     /// votes defined the queried votes.
@@ -275,6 +315,7 @@ pub struct QueryVotesResponse {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// QueryParamsRequest is the request type for the Query/Params RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryParamsRequest {
     /// params_type defines which parameters to query for, can be one of "voting",
@@ -283,6 +324,7 @@ pub struct QueryParamsRequest {
     pub params_type: ::prost::alloc::string::String,
 }
 /// QueryParamsResponse is the response type for the Query/Params RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryParamsResponse {
     /// voting_params defines the parameters related to voting.
@@ -296,6 +338,7 @@ pub struct QueryParamsResponse {
     pub tally_params: ::core::option::Option<TallyParams>,
 }
 /// QueryDepositRequest is the request type for the Query/Deposit RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDepositRequest {
     /// proposal_id defines the unique id of the proposal.
@@ -306,6 +349,7 @@ pub struct QueryDepositRequest {
     pub depositor: ::prost::alloc::string::String,
 }
 /// QueryDepositResponse is the response type for the Query/Deposit RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDepositResponse {
     /// deposit defines the requested deposit.
@@ -313,6 +357,7 @@ pub struct QueryDepositResponse {
     pub deposit: ::core::option::Option<Deposit>,
 }
 /// QueryDepositsRequest is the request type for the Query/Deposits RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDepositsRequest {
     /// proposal_id defines the unique id of the proposal.
@@ -323,6 +368,7 @@ pub struct QueryDepositsRequest {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
 }
 /// QueryDepositsResponse is the response type for the Query/Deposits RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDepositsResponse {
     #[prost(message, repeated, tag = "1")]
@@ -332,6 +378,7 @@ pub struct QueryDepositsResponse {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// QueryTallyResultRequest is the request type for the Query/Tally RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryTallyResultRequest {
     /// proposal_id defines the unique id of the proposal.
@@ -339,6 +386,7 @@ pub struct QueryTallyResultRequest {
     pub proposal_id: u64,
 }
 /// QueryTallyResultResponse is the response type for the Query/Tally RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryTallyResultResponse {
     /// tally defines the requested tally.
@@ -347,10 +395,11 @@ pub struct QueryTallyResultResponse {
 }
 /// MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary
 /// proposal Content.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgSubmitProposal {
     #[prost(message, repeated, tag = "1")]
-    pub messages: ::prost::alloc::vec::Vec<::prost_types::Any>,
+    pub messages: ::prost::alloc::vec::Vec<::tendermint_proto::google::protobuf::Any>,
     #[prost(message, repeated, tag = "2")]
     pub initial_deposit: ::prost::alloc::vec::Vec<super::super::base::v1beta1::Coin>,
     #[prost(string, tag = "3")]
@@ -360,6 +409,7 @@ pub struct MsgSubmitProposal {
     pub metadata: ::prost::alloc::string::String,
 }
 /// MsgSubmitProposalResponse defines the Msg/SubmitProposal response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgSubmitProposalResponse {
     #[prost(uint64, tag = "1")]
@@ -367,19 +417,22 @@ pub struct MsgSubmitProposalResponse {
 }
 /// MsgExecLegacyContent is used to wrap the legacy content field into a message.
 /// This ensures backwards compatibility with v1beta1.MsgSubmitProposal.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgExecLegacyContent {
     /// content is the proposal's content.
     #[prost(message, optional, tag = "1")]
-    pub content: ::core::option::Option<::prost_types::Any>,
+    pub content: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     /// authority must be the gov module address.
     #[prost(string, tag = "2")]
     pub authority: ::prost::alloc::string::String,
 }
 /// MsgExecLegacyContentResponse defines the Msg/ExecLegacyContent response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgExecLegacyContentResponse {}
 /// MsgVote defines a message to cast a vote.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgVote {
     #[prost(uint64, tag = "1")]
@@ -392,9 +445,11 @@ pub struct MsgVote {
     pub metadata: ::prost::alloc::string::String,
 }
 /// MsgVoteResponse defines the Msg/Vote response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgVoteResponse {}
 /// MsgVoteWeighted defines a message to cast a vote.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgVoteWeighted {
     #[prost(uint64, tag = "1")]
@@ -407,9 +462,11 @@ pub struct MsgVoteWeighted {
     pub metadata: ::prost::alloc::string::String,
 }
 /// MsgVoteWeightedResponse defines the Msg/VoteWeighted response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgVoteWeightedResponse {}
 /// MsgDeposit defines a message to submit a deposit to an existing proposal.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgDeposit {
     #[prost(uint64, tag = "1")]
@@ -420,6 +477,7 @@ pub struct MsgDeposit {
     pub amount: ::prost::alloc::vec::Vec<super::super::base::v1beta1::Coin>,
 }
 /// MsgDepositResponse defines the Msg/Deposit response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgDepositResponse {}
 include!("cosmos.gov.v1.tonic.rs");
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.gov.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.gov.v1beta1.rs
index ede6c2bc..ed1897f5 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.gov.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.gov.v1beta1.rs
@@ -2,6 +2,7 @@
 /// WeightedVoteOption defines a unit of vote for vote split.
 ///
 /// Since: cosmos-sdk 0.43
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct WeightedVoteOption {
     #[prost(enumeration = "VoteOption", tag = "1")]
@@ -11,6 +12,7 @@ pub struct WeightedVoteOption {
 }
 /// TextProposal defines a standard text proposal whose changes need to be
 /// manually updated in case of approval.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct TextProposal {
     #[prost(string, tag = "1")]
@@ -20,6 +22,7 @@ pub struct TextProposal {
 }
 /// Deposit defines an amount deposited by an account address to an active
 /// proposal.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Deposit {
     #[prost(uint64, tag = "1")]
@@ -30,12 +33,13 @@ pub struct Deposit {
     pub amount: ::prost::alloc::vec::Vec<super::super::base::v1beta1::Coin>,
 }
 /// Proposal defines the core field members of a governance proposal.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Proposal {
     #[prost(uint64, tag = "1")]
     pub proposal_id: u64,
     #[prost(message, optional, tag = "2")]
-    pub content: ::core::option::Option<::prost_types::Any>,
+    pub content: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     #[prost(enumeration = "ProposalStatus", tag = "3")]
     pub status: i32,
     /// final_tally_result is the final tally result of the proposal. When
@@ -44,17 +48,18 @@ pub struct Proposal {
     #[prost(message, optional, tag = "4")]
     pub final_tally_result: ::core::option::Option<TallyResult>,
     #[prost(message, optional, tag = "5")]
-    pub submit_time: ::core::option::Option<::prost_types::Timestamp>,
+    pub submit_time: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
     #[prost(message, optional, tag = "6")]
-    pub deposit_end_time: ::core::option::Option<::prost_types::Timestamp>,
+    pub deposit_end_time: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
     #[prost(message, repeated, tag = "7")]
     pub total_deposit: ::prost::alloc::vec::Vec<super::super::base::v1beta1::Coin>,
     #[prost(message, optional, tag = "8")]
-    pub voting_start_time: ::core::option::Option<::prost_types::Timestamp>,
+    pub voting_start_time: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
     #[prost(message, optional, tag = "9")]
-    pub voting_end_time: ::core::option::Option<::prost_types::Timestamp>,
+    pub voting_end_time: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
 }
 /// TallyResult defines a standard tally for a governance proposal.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct TallyResult {
     #[prost(string, tag = "1")]
@@ -68,6 +73,7 @@ pub struct TallyResult {
 }
 /// Vote defines a vote on a governance proposal.
 /// A Vote consists of a proposal ID, the voter, and the vote option.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Vote {
     #[prost(uint64, tag = "1")]
@@ -85,6 +91,7 @@ pub struct Vote {
     pub options: ::prost::alloc::vec::Vec<WeightedVoteOption>,
 }
 /// DepositParams defines the params for deposits on governance proposals.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DepositParams {
     ///   Minimum deposit for a proposal to enter voting period.
@@ -93,16 +100,18 @@ pub struct DepositParams {
     ///   Maximum period for Atom holders to deposit on a proposal. Initial value: 2
     ///   months.
     #[prost(message, optional, tag = "2")]
-    pub max_deposit_period: ::core::option::Option<::prost_types::Duration>,
+    pub max_deposit_period: ::core::option::Option<::tendermint_proto::google::protobuf::Duration>,
 }
 /// VotingParams defines the params for voting on governance proposals.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct VotingParams {
     ///   Length of the voting period.
     #[prost(message, optional, tag = "1")]
-    pub voting_period: ::core::option::Option<::prost_types::Duration>,
+    pub voting_period: ::core::option::Option<::tendermint_proto::google::protobuf::Duration>,
 }
 /// TallyParams defines the params for tallying votes on governance proposals.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct TallyParams {
     ///   Minimum percentage of total stake needed to vote for a result to be
@@ -146,6 +155,17 @@ impl VoteOption {
             VoteOption::NoWithVeto => "VOTE_OPTION_NO_WITH_VETO",
         }
     }
+    /// Creates an enum from field names used in the ProtoBuf definition.
+    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+        match value {
+            "VOTE_OPTION_UNSPECIFIED" => Some(Self::Unspecified),
+            "VOTE_OPTION_YES" => Some(Self::Yes),
+            "VOTE_OPTION_ABSTAIN" => Some(Self::Abstain),
+            "VOTE_OPTION_NO" => Some(Self::No),
+            "VOTE_OPTION_NO_WITH_VETO" => Some(Self::NoWithVeto),
+            _ => None,
+        }
+    }
 }
 /// ProposalStatus enumerates the valid statuses of a proposal.
 #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
@@ -184,8 +204,21 @@ impl ProposalStatus {
             ProposalStatus::Failed => "PROPOSAL_STATUS_FAILED",
         }
     }
+    /// Creates an enum from field names used in the ProtoBuf definition.
+    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+        match value {
+            "PROPOSAL_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
+            "PROPOSAL_STATUS_DEPOSIT_PERIOD" => Some(Self::DepositPeriod),
+            "PROPOSAL_STATUS_VOTING_PERIOD" => Some(Self::VotingPeriod),
+            "PROPOSAL_STATUS_PASSED" => Some(Self::Passed),
+            "PROPOSAL_STATUS_REJECTED" => Some(Self::Rejected),
+            "PROPOSAL_STATUS_FAILED" => Some(Self::Failed),
+            _ => None,
+        }
+    }
 }
 /// GenesisState defines the gov module's genesis state.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GenesisState {
     /// starting_proposal_id is the ID of the starting proposal.
@@ -211,6 +244,7 @@ pub struct GenesisState {
     pub tally_params: ::core::option::Option<TallyParams>,
 }
 /// QueryProposalRequest is the request type for the Query/Proposal RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryProposalRequest {
     /// proposal_id defines the unique id of the proposal.
@@ -218,12 +252,14 @@ pub struct QueryProposalRequest {
     pub proposal_id: u64,
 }
 /// QueryProposalResponse is the response type for the Query/Proposal RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryProposalResponse {
     #[prost(message, optional, tag = "1")]
     pub proposal: ::core::option::Option<Proposal>,
 }
 /// QueryProposalsRequest is the request type for the Query/Proposals RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryProposalsRequest {
     /// proposal_status defines the status of the proposals.
@@ -241,6 +277,7 @@ pub struct QueryProposalsRequest {
 }
 /// QueryProposalsResponse is the response type for the Query/Proposals RPC
 /// method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryProposalsResponse {
     #[prost(message, repeated, tag = "1")]
@@ -250,6 +287,7 @@ pub struct QueryProposalsResponse {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// QueryVoteRequest is the request type for the Query/Vote RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryVoteRequest {
     /// proposal_id defines the unique id of the proposal.
@@ -260,6 +298,7 @@ pub struct QueryVoteRequest {
     pub voter: ::prost::alloc::string::String,
 }
 /// QueryVoteResponse is the response type for the Query/Vote RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryVoteResponse {
     /// vote defined the queried vote.
@@ -267,6 +306,7 @@ pub struct QueryVoteResponse {
     pub vote: ::core::option::Option<Vote>,
 }
 /// QueryVotesRequest is the request type for the Query/Votes RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryVotesRequest {
     /// proposal_id defines the unique id of the proposal.
@@ -277,6 +317,7 @@ pub struct QueryVotesRequest {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
 }
 /// QueryVotesResponse is the response type for the Query/Votes RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryVotesResponse {
     /// votes defined the queried votes.
@@ -287,6 +328,7 @@ pub struct QueryVotesResponse {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// QueryParamsRequest is the request type for the Query/Params RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryParamsRequest {
     /// params_type defines which parameters to query for, can be one of "voting",
@@ -295,6 +337,7 @@ pub struct QueryParamsRequest {
     pub params_type: ::prost::alloc::string::String,
 }
 /// QueryParamsResponse is the response type for the Query/Params RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryParamsResponse {
     /// voting_params defines the parameters related to voting.
@@ -308,6 +351,7 @@ pub struct QueryParamsResponse {
     pub tally_params: ::core::option::Option<TallyParams>,
 }
 /// QueryDepositRequest is the request type for the Query/Deposit RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDepositRequest {
     /// proposal_id defines the unique id of the proposal.
@@ -318,6 +362,7 @@ pub struct QueryDepositRequest {
     pub depositor: ::prost::alloc::string::String,
 }
 /// QueryDepositResponse is the response type for the Query/Deposit RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDepositResponse {
     /// deposit defines the requested deposit.
@@ -325,6 +370,7 @@ pub struct QueryDepositResponse {
     pub deposit: ::core::option::Option<Deposit>,
 }
 /// QueryDepositsRequest is the request type for the Query/Deposits RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDepositsRequest {
     /// proposal_id defines the unique id of the proposal.
@@ -335,6 +381,7 @@ pub struct QueryDepositsRequest {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
 }
 /// QueryDepositsResponse is the response type for the Query/Deposits RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDepositsResponse {
     #[prost(message, repeated, tag = "1")]
@@ -344,6 +391,7 @@ pub struct QueryDepositsResponse {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// QueryTallyResultRequest is the request type for the Query/Tally RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryTallyResultRequest {
     /// proposal_id defines the unique id of the proposal.
@@ -351,6 +399,7 @@ pub struct QueryTallyResultRequest {
     pub proposal_id: u64,
 }
 /// QueryTallyResultResponse is the response type for the Query/Tally RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryTallyResultResponse {
     /// tally defines the requested tally.
@@ -359,22 +408,25 @@ pub struct QueryTallyResultResponse {
 }
 /// MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary
 /// proposal Content.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgSubmitProposal {
     #[prost(message, optional, tag = "1")]
-    pub content: ::core::option::Option<::prost_types::Any>,
+    pub content: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     #[prost(message, repeated, tag = "2")]
     pub initial_deposit: ::prost::alloc::vec::Vec<super::super::base::v1beta1::Coin>,
     #[prost(string, tag = "3")]
     pub proposer: ::prost::alloc::string::String,
 }
 /// MsgSubmitProposalResponse defines the Msg/SubmitProposal response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgSubmitProposalResponse {
     #[prost(uint64, tag = "1")]
     pub proposal_id: u64,
 }
 /// MsgVote defines a message to cast a vote.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgVote {
     #[prost(uint64, tag = "1")]
@@ -385,11 +437,13 @@ pub struct MsgVote {
     pub option: i32,
 }
 /// MsgVoteResponse defines the Msg/Vote response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgVoteResponse {}
 /// MsgVoteWeighted defines a message to cast a vote.
 ///
 /// Since: cosmos-sdk 0.43
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgVoteWeighted {
     #[prost(uint64, tag = "1")]
@@ -402,9 +456,11 @@ pub struct MsgVoteWeighted {
 /// MsgVoteWeightedResponse defines the Msg/VoteWeighted response type.
 ///
 /// Since: cosmos-sdk 0.43
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgVoteWeightedResponse {}
 /// MsgDeposit defines a message to submit a deposit to an existing proposal.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgDeposit {
     #[prost(uint64, tag = "1")]
@@ -415,6 +471,7 @@ pub struct MsgDeposit {
     pub amount: ::prost::alloc::vec::Vec<super::super::base::v1beta1::Coin>,
 }
 /// MsgDepositResponse defines the Msg/Deposit response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgDepositResponse {}
 include!("cosmos.gov.v1beta1.tonic.rs");
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.group.v1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.group.v1.rs
index 4184a346..d824204b 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.group.v1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.group.v1.rs
@@ -1,6 +1,7 @@
 // @generated
 /// Member represents a group member with an account address,
 /// non-zero weight, metadata and added_at timestamp.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Member {
     /// address is the member's account address.
@@ -14,11 +15,12 @@ pub struct Member {
     pub metadata: ::prost::alloc::string::String,
     /// added_at is a timestamp specifying when a member was added.
     #[prost(message, optional, tag = "4")]
-    pub added_at: ::core::option::Option<::prost_types::Timestamp>,
+    pub added_at: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
 }
 /// MemberRequest represents a group member to be used in Msg server requests.
 /// Contrary to `Member`, it doesn't have any `added_at` field
 /// since this field cannot be set as part of requests.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MemberRequest {
     /// address is the member's account address.
@@ -37,6 +39,7 @@ pub struct MemberRequest {
 ///     `threshold`.
 /// 2. The voting and execution periods of the proposal respect the parameters
 ///     given by `windows`.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ThresholdDecisionPolicy {
     /// threshold is the minimum weighted sum of `YES` votes that must be met or
@@ -53,6 +56,7 @@ pub struct ThresholdDecisionPolicy {
 ///     is greater or equal than the given `percentage`.
 /// 2. The voting and execution periods of the proposal respect the parameters
 ///     given by `windows`.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct PercentageDecisionPolicy {
     /// percentage is the minimum percentage the weighted sum of `YES` votes must
@@ -64,16 +68,17 @@ pub struct PercentageDecisionPolicy {
     pub windows: ::core::option::Option<DecisionPolicyWindows>,
 }
 /// DecisionPolicyWindows defines the different windows for voting and execution.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DecisionPolicyWindows {
     /// voting_period is the duration from submission of a proposal to the end of voting period
     /// Within this times votes can be submitted with MsgVote.
     #[prost(message, optional, tag = "1")]
-    pub voting_period: ::core::option::Option<::prost_types::Duration>,
+    pub voting_period: ::core::option::Option<::tendermint_proto::google::protobuf::Duration>,
     /// min_execution_period is the minimum duration after the proposal submission
     /// where members can start sending MsgExec. This means that the window for
     /// sending a MsgExec transaction is:
-    /// `[ submission + min_execution_period ; submission + voting_period + max_execution_period]`
+    /// `\[ submission + min_execution_period ; submission + voting_period + max_execution_period\]`
     /// where max_execution_period is a app-specific config, defined in the keeper.
     /// If not set, min_execution_period will default to 0.
     ///
@@ -82,13 +87,15 @@ pub struct DecisionPolicyWindows {
     /// is empty, meaning that all proposals created with this decision policy
     /// won't be able to be executed.
     #[prost(message, optional, tag = "2")]
-    pub min_execution_period: ::core::option::Option<::prost_types::Duration>,
+    pub min_execution_period:
+        ::core::option::Option<::tendermint_proto::google::protobuf::Duration>,
 }
 //
 // State
 //
 
 /// GroupInfo represents the high-level on-chain information for a group.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GroupInfo {
     /// id is the unique ID of the group.
@@ -111,9 +118,10 @@ pub struct GroupInfo {
     pub total_weight: ::prost::alloc::string::String,
     /// created_at is a timestamp specifying when a group was created.
     #[prost(message, optional, tag = "6")]
-    pub created_at: ::core::option::Option<::prost_types::Timestamp>,
+    pub created_at: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
 }
 /// GroupMember represents the relationship between a group and a member.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GroupMember {
     /// group_id is the unique ID of the group.
@@ -124,6 +132,7 @@ pub struct GroupMember {
     pub member: ::core::option::Option<Member>,
 }
 /// GroupPolicyInfo represents the high-level on-chain information for a group policy.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GroupPolicyInfo {
     /// address is the account address of group policy.
@@ -144,15 +153,16 @@ pub struct GroupPolicyInfo {
     pub version: u64,
     /// decision_policy specifies the group policy's decision policy.
     #[prost(message, optional, tag = "6")]
-    pub decision_policy: ::core::option::Option<::prost_types::Any>,
+    pub decision_policy: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     /// created_at is a timestamp specifying when a group policy was created.
     #[prost(message, optional, tag = "7")]
-    pub created_at: ::core::option::Option<::prost_types::Timestamp>,
+    pub created_at: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
 }
 /// Proposal defines a group proposal. Any member of a group can submit a proposal
 /// for a group policy to decide upon.
 /// A proposal consists of a set of `sdk.Msg`s that will be executed if the proposal
 /// passes as well as some optional metadata associated with the proposal.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Proposal {
     /// id is the unique id of the proposal.
@@ -169,7 +179,7 @@ pub struct Proposal {
     pub proposers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
     /// submit_time is a timestamp specifying when a proposal was submitted.
     #[prost(message, optional, tag = "5")]
-    pub submit_time: ::core::option::Option<::prost_types::Timestamp>,
+    pub submit_time: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
     /// group_version tracks the version of the group at proposal submission.
     /// This field is here for informational purposes only.
     #[prost(uint64, tag = "6")]
@@ -195,15 +205,16 @@ pub struct Proposal {
     /// at this point, and the `final_tally_result`and `status` fields will be
     /// accordingly updated.
     #[prost(message, optional, tag = "10")]
-    pub voting_period_end: ::core::option::Option<::prost_types::Timestamp>,
+    pub voting_period_end: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
     /// executor_result is the final result of the proposal execution. Initial value is NotRun.
     #[prost(enumeration = "ProposalExecutorResult", tag = "11")]
     pub executor_result: i32,
     /// messages is a list of `sdk.Msg`s that will be executed if the proposal passes.
     #[prost(message, repeated, tag = "12")]
-    pub messages: ::prost::alloc::vec::Vec<::prost_types::Any>,
+    pub messages: ::prost::alloc::vec::Vec<::tendermint_proto::google::protobuf::Any>,
 }
 /// TallyResult represents the sum of weighted votes for each vote option.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct TallyResult {
     /// yes_count is the weighted sum of yes votes.
@@ -220,6 +231,7 @@ pub struct TallyResult {
     pub no_with_veto_count: ::prost::alloc::string::String,
 }
 /// Vote represents a vote for a proposal.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Vote {
     /// proposal is the unique ID of the proposal.
@@ -236,7 +248,7 @@ pub struct Vote {
     pub metadata: ::prost::alloc::string::String,
     /// submit_time is the timestamp when the vote was submitted.
     #[prost(message, optional, tag = "5")]
-    pub submit_time: ::core::option::Option<::prost_types::Timestamp>,
+    pub submit_time: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
 }
 /// VoteOption enumerates the valid vote options for a given proposal.
 #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
@@ -268,6 +280,17 @@ impl VoteOption {
             VoteOption::NoWithVeto => "VOTE_OPTION_NO_WITH_VETO",
         }
     }
+    /// Creates an enum from field names used in the ProtoBuf definition.
+    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+        match value {
+            "VOTE_OPTION_UNSPECIFIED" => Some(Self::Unspecified),
+            "VOTE_OPTION_YES" => Some(Self::Yes),
+            "VOTE_OPTION_ABSTAIN" => Some(Self::Abstain),
+            "VOTE_OPTION_NO" => Some(Self::No),
+            "VOTE_OPTION_NO_WITH_VETO" => Some(Self::NoWithVeto),
+            _ => None,
+        }
+    }
 }
 /// ProposalStatus defines proposal statuses.
 #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
@@ -305,6 +328,18 @@ impl ProposalStatus {
             ProposalStatus::Withdrawn => "PROPOSAL_STATUS_WITHDRAWN",
         }
     }
+    /// Creates an enum from field names used in the ProtoBuf definition.
+    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+        match value {
+            "PROPOSAL_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
+            "PROPOSAL_STATUS_SUBMITTED" => Some(Self::Submitted),
+            "PROPOSAL_STATUS_ACCEPTED" => Some(Self::Accepted),
+            "PROPOSAL_STATUS_REJECTED" => Some(Self::Rejected),
+            "PROPOSAL_STATUS_ABORTED" => Some(Self::Aborted),
+            "PROPOSAL_STATUS_WITHDRAWN" => Some(Self::Withdrawn),
+            _ => None,
+        }
+    }
 }
 /// ProposalExecutorResult defines types of proposal executor results.
 #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
@@ -332,8 +367,19 @@ impl ProposalExecutorResult {
             ProposalExecutorResult::Failure => "PROPOSAL_EXECUTOR_RESULT_FAILURE",
         }
     }
+    /// Creates an enum from field names used in the ProtoBuf definition.
+    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+        match value {
+            "PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED" => Some(Self::Unspecified),
+            "PROPOSAL_EXECUTOR_RESULT_NOT_RUN" => Some(Self::NotRun),
+            "PROPOSAL_EXECUTOR_RESULT_SUCCESS" => Some(Self::Success),
+            "PROPOSAL_EXECUTOR_RESULT_FAILURE" => Some(Self::Failure),
+            _ => None,
+        }
+    }
 }
 /// EventCreateGroup is an event emitted when a group is created.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct EventCreateGroup {
     /// group_id is the unique ID of the group.
@@ -341,6 +387,7 @@ pub struct EventCreateGroup {
     pub group_id: u64,
 }
 /// EventUpdateGroup is an event emitted when a group is updated.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct EventUpdateGroup {
     /// group_id is the unique ID of the group.
@@ -348,6 +395,7 @@ pub struct EventUpdateGroup {
     pub group_id: u64,
 }
 /// EventCreateGroupPolicy is an event emitted when a group policy is created.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct EventCreateGroupPolicy {
     /// address is the account address of the group policy.
@@ -355,6 +403,7 @@ pub struct EventCreateGroupPolicy {
     pub address: ::prost::alloc::string::String,
 }
 /// EventUpdateGroupPolicy is an event emitted when a group policy is updated.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct EventUpdateGroupPolicy {
     /// address is the account address of the group policy.
@@ -362,6 +411,7 @@ pub struct EventUpdateGroupPolicy {
     pub address: ::prost::alloc::string::String,
 }
 /// EventSubmitProposal is an event emitted when a proposal is created.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct EventSubmitProposal {
     /// proposal_id is the unique ID of the proposal.
@@ -369,6 +419,7 @@ pub struct EventSubmitProposal {
     pub proposal_id: u64,
 }
 /// EventWithdrawProposal is an event emitted when a proposal is withdrawn.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct EventWithdrawProposal {
     /// proposal_id is the unique ID of the proposal.
@@ -376,6 +427,7 @@ pub struct EventWithdrawProposal {
     pub proposal_id: u64,
 }
 /// EventVote is an event emitted when a voter votes on a proposal.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct EventVote {
     /// proposal_id is the unique ID of the proposal.
@@ -383,6 +435,7 @@ pub struct EventVote {
     pub proposal_id: u64,
 }
 /// EventExec is an event emitted when a proposal is executed.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct EventExec {
     /// proposal_id is the unique ID of the proposal.
@@ -396,6 +449,7 @@ pub struct EventExec {
     pub logs: ::prost::alloc::string::String,
 }
 /// EventLeaveGroup is an event emitted when group member leaves the group.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct EventLeaveGroup {
     /// group_id is the unique ID of the group.
@@ -406,6 +460,7 @@ pub struct EventLeaveGroup {
     pub address: ::prost::alloc::string::String,
 }
 /// EventProposalPruned is an event emitted when a proposal is pruned.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct EventProposalPruned {
     /// proposal_id is the unique ID of the proposal.
@@ -419,6 +474,7 @@ pub struct EventProposalPruned {
     pub tally_result: ::core::option::Option<TallyResult>,
 }
 /// GenesisState defines the group module's genesis state.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GenesisState {
     /// group_seq is the group table orm.Sequence,
@@ -450,6 +506,7 @@ pub struct GenesisState {
     pub votes: ::prost::alloc::vec::Vec<Vote>,
 }
 /// QueryGroupInfoRequest is the Query/GroupInfo request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryGroupInfoRequest {
     /// group_id is the unique ID of the group.
@@ -457,6 +514,7 @@ pub struct QueryGroupInfoRequest {
     pub group_id: u64,
 }
 /// QueryGroupInfoResponse is the Query/GroupInfo response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryGroupInfoResponse {
     /// info is the GroupInfo for the group.
@@ -464,6 +522,7 @@ pub struct QueryGroupInfoResponse {
     pub info: ::core::option::Option<GroupInfo>,
 }
 /// QueryGroupPolicyInfoRequest is the Query/GroupPolicyInfo request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryGroupPolicyInfoRequest {
     /// address is the account address of the group policy.
@@ -471,6 +530,7 @@ pub struct QueryGroupPolicyInfoRequest {
     pub address: ::prost::alloc::string::String,
 }
 /// QueryGroupPolicyInfoResponse is the Query/GroupPolicyInfo response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryGroupPolicyInfoResponse {
     /// info is the GroupPolicyInfo for the group policy.
@@ -478,6 +538,7 @@ pub struct QueryGroupPolicyInfoResponse {
     pub info: ::core::option::Option<GroupPolicyInfo>,
 }
 /// QueryGroupMembersRequest is the Query/GroupMembers request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryGroupMembersRequest {
     /// group_id is the unique ID of the group.
@@ -488,6 +549,7 @@ pub struct QueryGroupMembersRequest {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
 }
 /// QueryGroupMembersResponse is the Query/GroupMembersResponse response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryGroupMembersResponse {
     /// members are the members of the group with given group_id.
@@ -498,6 +560,7 @@ pub struct QueryGroupMembersResponse {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// QueryGroupsByAdminRequest is the Query/GroupsByAdmin request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryGroupsByAdminRequest {
     /// admin is the account address of a group's admin.
@@ -508,6 +571,7 @@ pub struct QueryGroupsByAdminRequest {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
 }
 /// QueryGroupsByAdminResponse is the Query/GroupsByAdminResponse response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryGroupsByAdminResponse {
     /// groups are the groups info with the provided admin.
@@ -518,6 +582,7 @@ pub struct QueryGroupsByAdminResponse {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// QueryGroupPoliciesByGroupRequest is the Query/GroupPoliciesByGroup request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryGroupPoliciesByGroupRequest {
     /// group_id is the unique ID of the group policy's group.
@@ -528,6 +593,7 @@ pub struct QueryGroupPoliciesByGroupRequest {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
 }
 /// QueryGroupPoliciesByGroupResponse is the Query/GroupPoliciesByGroup response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryGroupPoliciesByGroupResponse {
     /// group_policies are the group policies info associated with the provided group.
@@ -538,6 +604,7 @@ pub struct QueryGroupPoliciesByGroupResponse {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// QueryGroupPoliciesByAdminRequest is the Query/GroupPoliciesByAdmin request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryGroupPoliciesByAdminRequest {
     /// admin is the admin address of the group policy.
@@ -548,6 +615,7 @@ pub struct QueryGroupPoliciesByAdminRequest {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
 }
 /// QueryGroupPoliciesByAdminResponse is the Query/GroupPoliciesByAdmin response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryGroupPoliciesByAdminResponse {
     /// group_policies are the group policies info with provided admin.
@@ -558,6 +626,7 @@ pub struct QueryGroupPoliciesByAdminResponse {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// QueryProposalRequest is the Query/Proposal request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryProposalRequest {
     /// proposal_id is the unique ID of a proposal.
@@ -565,6 +634,7 @@ pub struct QueryProposalRequest {
     pub proposal_id: u64,
 }
 /// QueryProposalResponse is the Query/Proposal response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryProposalResponse {
     /// proposal is the proposal info.
@@ -572,6 +642,7 @@ pub struct QueryProposalResponse {
     pub proposal: ::core::option::Option<Proposal>,
 }
 /// QueryProposalsByGroupPolicyRequest is the Query/ProposalByGroupPolicy request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryProposalsByGroupPolicyRequest {
     /// address is the account address of the group policy related to proposals.
@@ -582,6 +653,7 @@ pub struct QueryProposalsByGroupPolicyRequest {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
 }
 /// QueryProposalsByGroupPolicyResponse is the Query/ProposalByGroupPolicy response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryProposalsByGroupPolicyResponse {
     /// proposals are the proposals with given group policy.
@@ -592,6 +664,7 @@ pub struct QueryProposalsByGroupPolicyResponse {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// QueryVoteByProposalVoterRequest is the Query/VoteByProposalVoter request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryVoteByProposalVoterRequest {
     /// proposal_id is the unique ID of a proposal.
@@ -602,6 +675,7 @@ pub struct QueryVoteByProposalVoterRequest {
     pub voter: ::prost::alloc::string::String,
 }
 /// QueryVoteByProposalVoterResponse is the Query/VoteByProposalVoter response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryVoteByProposalVoterResponse {
     /// vote is the vote with given proposal_id and voter.
@@ -609,6 +683,7 @@ pub struct QueryVoteByProposalVoterResponse {
     pub vote: ::core::option::Option<Vote>,
 }
 /// QueryVotesByProposalRequest is the Query/VotesByProposal request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryVotesByProposalRequest {
     /// proposal_id is the unique ID of a proposal.
@@ -619,6 +694,7 @@ pub struct QueryVotesByProposalRequest {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
 }
 /// QueryVotesByProposalResponse is the Query/VotesByProposal response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryVotesByProposalResponse {
     /// votes are the list of votes for given proposal_id.
@@ -629,6 +705,7 @@ pub struct QueryVotesByProposalResponse {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// QueryVotesByVoterRequest is the Query/VotesByVoter request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryVotesByVoterRequest {
     /// voter is a proposal voter account address.
@@ -639,6 +716,7 @@ pub struct QueryVotesByVoterRequest {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
 }
 /// QueryVotesByVoterResponse is the Query/VotesByVoter response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryVotesByVoterResponse {
     /// votes are the list of votes by given voter.
@@ -649,6 +727,7 @@ pub struct QueryVotesByVoterResponse {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// QueryGroupsByMemberRequest is the Query/GroupsByMember request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryGroupsByMemberRequest {
     /// address is the group member address.
@@ -659,6 +738,7 @@ pub struct QueryGroupsByMemberRequest {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
 }
 /// QueryGroupsByMemberResponse is the Query/GroupsByMember response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryGroupsByMemberResponse {
     /// groups are the groups info with the provided group member.
@@ -669,6 +749,7 @@ pub struct QueryGroupsByMemberResponse {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// QueryTallyResultRequest is the Query/TallyResult request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryTallyResultRequest {
     /// proposal_id is the unique id of a proposal.
@@ -676,6 +757,7 @@ pub struct QueryTallyResultRequest {
     pub proposal_id: u64,
 }
 /// QueryTallyResultResponse is the Query/TallyResult response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryTallyResultResponse {
     /// tally defines the requested tally.
@@ -685,6 +767,7 @@ pub struct QueryTallyResultResponse {
 /// QueryGroupsRequest is the Query/Groups request type.
 ///
 /// Since: cosmos-sdk 0.47.1
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryGroupsRequest {
     /// pagination defines an optional pagination for the request.
@@ -694,6 +777,7 @@ pub struct QueryGroupsRequest {
 /// QueryGroupsResponse is the Query/Groups response type.
 ///
 /// Since: cosmos-sdk 0.47.1
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryGroupsResponse {
     /// `groups` is all the groups present in state.
@@ -708,6 +792,7 @@ pub struct QueryGroupsResponse {
 //
 
 /// MsgCreateGroup is the Msg/CreateGroup request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgCreateGroup {
     /// admin is the account address of the group admin.
@@ -721,6 +806,7 @@ pub struct MsgCreateGroup {
     pub metadata: ::prost::alloc::string::String,
 }
 /// MsgCreateGroupResponse is the Msg/CreateGroup response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgCreateGroupResponse {
     /// group_id is the unique ID of the newly created group.
@@ -728,6 +814,7 @@ pub struct MsgCreateGroupResponse {
     pub group_id: u64,
 }
 /// MsgUpdateGroupMembers is the Msg/UpdateGroupMembers request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgUpdateGroupMembers {
     /// admin is the account address of the group admin.
@@ -742,9 +829,11 @@ pub struct MsgUpdateGroupMembers {
     pub member_updates: ::prost::alloc::vec::Vec<MemberRequest>,
 }
 /// MsgUpdateGroupMembersResponse is the Msg/UpdateGroupMembers response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgUpdateGroupMembersResponse {}
 /// MsgUpdateGroupAdmin is the Msg/UpdateGroupAdmin request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgUpdateGroupAdmin {
     /// admin is the current account address of the group admin.
@@ -758,9 +847,11 @@ pub struct MsgUpdateGroupAdmin {
     pub new_admin: ::prost::alloc::string::String,
 }
 /// MsgUpdateGroupAdminResponse is the Msg/UpdateGroupAdmin response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgUpdateGroupAdminResponse {}
 /// MsgUpdateGroupMetadata is the Msg/UpdateGroupMetadata request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgUpdateGroupMetadata {
     /// admin is the account address of the group admin.
@@ -774,6 +865,7 @@ pub struct MsgUpdateGroupMetadata {
     pub metadata: ::prost::alloc::string::String,
 }
 /// MsgUpdateGroupMetadataResponse is the Msg/UpdateGroupMetadata response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgUpdateGroupMetadataResponse {}
 //
@@ -781,6 +873,7 @@ pub struct MsgUpdateGroupMetadataResponse {}
 //
 
 /// MsgCreateGroupPolicy is the Msg/CreateGroupPolicy request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgCreateGroupPolicy {
     /// admin is the account address of the group admin.
@@ -794,9 +887,10 @@ pub struct MsgCreateGroupPolicy {
     pub metadata: ::prost::alloc::string::String,
     /// decision_policy specifies the group policy's decision policy.
     #[prost(message, optional, tag = "4")]
-    pub decision_policy: ::core::option::Option<::prost_types::Any>,
+    pub decision_policy: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
 }
 /// MsgCreateGroupPolicyResponse is the Msg/CreateGroupPolicy response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgCreateGroupPolicyResponse {
     /// address is the account address of the newly created group policy.
@@ -804,6 +898,7 @@ pub struct MsgCreateGroupPolicyResponse {
     pub address: ::prost::alloc::string::String,
 }
 /// MsgUpdateGroupPolicyAdmin is the Msg/UpdateGroupPolicyAdmin request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgUpdateGroupPolicyAdmin {
     /// admin is the account address of the group admin.
@@ -817,6 +912,7 @@ pub struct MsgUpdateGroupPolicyAdmin {
     pub new_admin: ::prost::alloc::string::String,
 }
 /// MsgCreateGroupWithPolicy is the Msg/CreateGroupWithPolicy request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgCreateGroupWithPolicy {
     /// admin is the account address of the group and group policy admin.
@@ -837,9 +933,10 @@ pub struct MsgCreateGroupWithPolicy {
     pub group_policy_as_admin: bool,
     /// decision_policy specifies the group policy's decision policy.
     #[prost(message, optional, tag = "6")]
-    pub decision_policy: ::core::option::Option<::prost_types::Any>,
+    pub decision_policy: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
 }
 /// MsgCreateGroupWithPolicyResponse is the Msg/CreateGroupWithPolicy response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgCreateGroupWithPolicyResponse {
     /// group_id is the unique ID of the newly created group with policy.
@@ -850,9 +947,11 @@ pub struct MsgCreateGroupWithPolicyResponse {
     pub group_policy_address: ::prost::alloc::string::String,
 }
 /// MsgUpdateGroupPolicyAdminResponse is the Msg/UpdateGroupPolicyAdmin response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgUpdateGroupPolicyAdminResponse {}
 /// MsgUpdateGroupPolicyDecisionPolicy is the Msg/UpdateGroupPolicyDecisionPolicy request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgUpdateGroupPolicyDecisionPolicy {
     /// admin is the account address of the group admin.
@@ -863,12 +962,14 @@ pub struct MsgUpdateGroupPolicyDecisionPolicy {
     pub group_policy_address: ::prost::alloc::string::String,
     /// decision_policy is the updated group policy's decision policy.
     #[prost(message, optional, tag = "3")]
-    pub decision_policy: ::core::option::Option<::prost_types::Any>,
+    pub decision_policy: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
 }
 /// MsgUpdateGroupPolicyDecisionPolicyResponse is the Msg/UpdateGroupPolicyDecisionPolicy response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgUpdateGroupPolicyDecisionPolicyResponse {}
 /// MsgUpdateGroupPolicyMetadata is the Msg/UpdateGroupPolicyMetadata request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgUpdateGroupPolicyMetadata {
     /// admin is the account address of the group admin.
@@ -882,9 +983,11 @@ pub struct MsgUpdateGroupPolicyMetadata {
     pub metadata: ::prost::alloc::string::String,
 }
 /// MsgUpdateGroupPolicyMetadataResponse is the Msg/UpdateGroupPolicyMetadata response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgUpdateGroupPolicyMetadataResponse {}
 /// MsgSubmitProposal is the Msg/SubmitProposal request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgSubmitProposal {
     /// group_policy_address is the account address of group policy.
@@ -899,7 +1002,7 @@ pub struct MsgSubmitProposal {
     pub metadata: ::prost::alloc::string::String,
     /// messages is a list of `sdk.Msg`s that will be executed if the proposal passes.
     #[prost(message, repeated, tag = "4")]
-    pub messages: ::prost::alloc::vec::Vec<::prost_types::Any>,
+    pub messages: ::prost::alloc::vec::Vec<::tendermint_proto::google::protobuf::Any>,
     /// exec defines the mode of execution of the proposal,
     /// whether it should be executed immediately on creation or not.
     /// If so, proposers signatures are considered as Yes votes.
@@ -907,6 +1010,7 @@ pub struct MsgSubmitProposal {
     pub exec: i32,
 }
 /// MsgSubmitProposalResponse is the Msg/SubmitProposal response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgSubmitProposalResponse {
     /// proposal is the unique ID of the proposal.
@@ -914,6 +1018,7 @@ pub struct MsgSubmitProposalResponse {
     pub proposal_id: u64,
 }
 /// MsgWithdrawProposal is the Msg/WithdrawProposal request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgWithdrawProposal {
     /// proposal is the unique ID of the proposal.
@@ -924,9 +1029,11 @@ pub struct MsgWithdrawProposal {
     pub address: ::prost::alloc::string::String,
 }
 /// MsgWithdrawProposalResponse is the Msg/WithdrawProposal response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgWithdrawProposalResponse {}
 /// MsgVote is the Msg/Vote request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgVote {
     /// proposal is the unique ID of the proposal.
@@ -947,9 +1054,11 @@ pub struct MsgVote {
     pub exec: i32,
 }
 /// MsgVoteResponse is the Msg/Vote response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgVoteResponse {}
 /// MsgExec is the Msg/Exec request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgExec {
     /// proposal is the unique ID of the proposal.
@@ -960,6 +1069,7 @@ pub struct MsgExec {
     pub executor: ::prost::alloc::string::String,
 }
 /// MsgExecResponse is the Msg/Exec request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgExecResponse {
     /// result is the final result of the proposal execution.
@@ -967,6 +1077,7 @@ pub struct MsgExecResponse {
     pub result: i32,
 }
 /// MsgLeaveGroup is the Msg/LeaveGroup request type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgLeaveGroup {
     /// address is the account address of the group member.
@@ -977,6 +1088,7 @@ pub struct MsgLeaveGroup {
     pub group_id: u64,
 }
 /// MsgLeaveGroupResponse is the Msg/LeaveGroup response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgLeaveGroupResponse {}
 //
@@ -1007,6 +1119,14 @@ impl Exec {
             Exec::Try => "EXEC_TRY",
         }
     }
+    /// Creates an enum from field names used in the ProtoBuf definition.
+    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+        match value {
+            "EXEC_UNSPECIFIED" => Some(Self::Unspecified),
+            "EXEC_TRY" => Some(Self::Try),
+            _ => None,
+        }
+    }
 }
 include!("cosmos.group.v1.tonic.rs");
 // @@protoc_insertion_point(module)
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.mint.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.mint.v1beta1.rs
index 70d49802..06dfcff7 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.mint.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.mint.v1beta1.rs
@@ -1,5 +1,6 @@
 // @generated
 /// Minter represents the minting state.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Minter {
     /// current annual inflation rate
@@ -10,6 +11,7 @@ pub struct Minter {
     pub annual_provisions: ::prost::alloc::string::String,
 }
 /// Params holds parameters for the mint module.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Params {
     /// type of coin to mint
@@ -32,6 +34,7 @@ pub struct Params {
     pub blocks_per_year: u64,
 }
 /// GenesisState defines the mint module's genesis state.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GenesisState {
     /// minter is a space for holding current inflation information.
@@ -42,9 +45,11 @@ pub struct GenesisState {
     pub params: ::core::option::Option<Params>,
 }
 /// QueryParamsRequest is the request type for the Query/Params RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryParamsRequest {}
 /// QueryParamsResponse is the response type for the Query/Params RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryParamsResponse {
     /// params defines the parameters of the module.
@@ -52,10 +57,12 @@ pub struct QueryParamsResponse {
     pub params: ::core::option::Option<Params>,
 }
 /// QueryInflationRequest is the request type for the Query/Inflation RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryInflationRequest {}
 /// QueryInflationResponse is the response type for the Query/Inflation RPC
 /// method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryInflationResponse {
     /// inflation is the current minting inflation value.
@@ -64,10 +71,12 @@ pub struct QueryInflationResponse {
 }
 /// QueryAnnualProvisionsRequest is the request type for the
 /// Query/AnnualProvisions RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryAnnualProvisionsRequest {}
 /// QueryAnnualProvisionsResponse is the response type for the
 /// Query/AnnualProvisions RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryAnnualProvisionsResponse {
     /// annual_provisions is the current minting annual provisions value.
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.nft.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.nft.v1beta1.rs
index 9c48b679..b6eaf039 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.nft.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.nft.v1beta1.rs
@@ -1,5 +1,6 @@
 // @generated
 /// EventSend is emitted on Msg/Send
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct EventSend {
     #[prost(string, tag = "1")]
@@ -12,6 +13,7 @@ pub struct EventSend {
     pub receiver: ::prost::alloc::string::String,
 }
 /// EventMint is emitted on Mint
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct EventMint {
     #[prost(string, tag = "1")]
@@ -22,6 +24,7 @@ pub struct EventMint {
     pub owner: ::prost::alloc::string::String,
 }
 /// EventBurn is emitted on Burn
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct EventBurn {
     #[prost(string, tag = "1")]
@@ -32,6 +35,7 @@ pub struct EventBurn {
     pub owner: ::prost::alloc::string::String,
 }
 /// Class defines the class of the nft type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Class {
     /// id defines the unique identifier of the NFT classification, similar to the contract address of ERC721
@@ -54,9 +58,10 @@ pub struct Class {
     pub uri_hash: ::prost::alloc::string::String,
     /// data is the app specific metadata of the NFT class. Optional
     #[prost(message, optional, tag = "7")]
-    pub data: ::core::option::Option<::prost_types::Any>,
+    pub data: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
 }
 /// NFT defines the NFT.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Nft {
     /// class_id associated with the NFT, similar to the contract address of ERC721
@@ -73,9 +78,10 @@ pub struct Nft {
     pub uri_hash: ::prost::alloc::string::String,
     /// data is an app specific data of the NFT. Optional
     #[prost(message, optional, tag = "10")]
-    pub data: ::core::option::Option<::prost_types::Any>,
+    pub data: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
 }
 /// GenesisState defines the nft module's genesis state.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GenesisState {
     /// class defines the class of the nft type.
@@ -85,6 +91,7 @@ pub struct GenesisState {
     pub entries: ::prost::alloc::vec::Vec<Entry>,
 }
 /// Entry Defines all nft owned by a person
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Entry {
     /// owner is the owner address of the following nft
@@ -95,6 +102,7 @@ pub struct Entry {
     pub nfts: ::prost::alloc::vec::Vec<Nft>,
 }
 /// QueryBalanceRequest is the request type for the Query/Balance RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryBalanceRequest {
     #[prost(string, tag = "1")]
@@ -103,12 +111,14 @@ pub struct QueryBalanceRequest {
     pub owner: ::prost::alloc::string::String,
 }
 /// QueryBalanceResponse is the response type for the Query/Balance RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryBalanceResponse {
     #[prost(uint64, tag = "1")]
     pub amount: u64,
 }
 /// QueryOwnerRequest is the request type for the Query/Owner RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryOwnerRequest {
     #[prost(string, tag = "1")]
@@ -117,24 +127,28 @@ pub struct QueryOwnerRequest {
     pub id: ::prost::alloc::string::String,
 }
 /// QueryOwnerResponse is the response type for the Query/Owner RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryOwnerResponse {
     #[prost(string, tag = "1")]
     pub owner: ::prost::alloc::string::String,
 }
 /// QuerySupplyRequest is the request type for the Query/Supply RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QuerySupplyRequest {
     #[prost(string, tag = "1")]
     pub class_id: ::prost::alloc::string::String,
 }
 /// QuerySupplyResponse is the response type for the Query/Supply RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QuerySupplyResponse {
     #[prost(uint64, tag = "1")]
     pub amount: u64,
 }
 /// QueryNFTstRequest is the request type for the Query/NFTs RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryNfTsRequest {
     #[prost(string, tag = "1")]
@@ -145,6 +159,7 @@ pub struct QueryNfTsRequest {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
 }
 /// QueryNFTsResponse is the response type for the Query/NFTs RPC methods
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryNfTsResponse {
     #[prost(message, repeated, tag = "1")]
@@ -153,6 +168,7 @@ pub struct QueryNfTsResponse {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// QueryNFTRequest is the request type for the Query/NFT RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryNftRequest {
     #[prost(string, tag = "1")]
@@ -161,24 +177,28 @@ pub struct QueryNftRequest {
     pub id: ::prost::alloc::string::String,
 }
 /// QueryNFTResponse is the response type for the Query/NFT RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryNftResponse {
     #[prost(message, optional, tag = "1")]
     pub nft: ::core::option::Option<Nft>,
 }
 /// QueryClassRequest is the request type for the Query/Class RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryClassRequest {
     #[prost(string, tag = "1")]
     pub class_id: ::prost::alloc::string::String,
 }
 /// QueryClassResponse is the response type for the Query/Class RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryClassResponse {
     #[prost(message, optional, tag = "1")]
     pub class: ::core::option::Option<Class>,
 }
 /// QueryClassesRequest is the request type for the Query/Classes RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryClassesRequest {
     /// pagination defines an optional pagination for the request.
@@ -186,6 +206,7 @@ pub struct QueryClassesRequest {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
 }
 /// QueryClassesResponse is the response type for the Query/Classes RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryClassesResponse {
     #[prost(message, repeated, tag = "1")]
@@ -194,6 +215,7 @@ pub struct QueryClassesResponse {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// MsgSend represents a message to send a nft from one account to another account.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgSend {
     /// class_id defines the unique identifier of the nft classification, similar to the contract address of ERC721
@@ -210,6 +232,7 @@ pub struct MsgSend {
     pub receiver: ::prost::alloc::string::String,
 }
 /// MsgSendResponse defines the Msg/Send response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgSendResponse {}
 include!("cosmos.nft.v1beta1.tonic.rs");
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.orm.module.v1alpha1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.orm.module.v1alpha1.rs
index f73da631..02431f9e 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.orm.module.v1alpha1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.orm.module.v1alpha1.rs
@@ -2,6 +2,7 @@
 /// Module defines the ORM module which adds providers to the app container for
 /// module-scoped DB's. In the future it may provide gRPC services for interacting
 /// with ORM data.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Module {}
 // @@protoc_insertion_point(module)
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.orm.v1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.orm.v1.rs
index 8f1615c5..5d3a362f 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.orm.v1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.orm.v1.rs
@@ -1,5 +1,6 @@
 // @generated
 /// TableDescriptor describes an ORM table.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct TableDescriptor {
     /// primary_key defines the primary key for the table.
@@ -15,6 +16,7 @@ pub struct TableDescriptor {
     pub id: u32,
 }
 /// PrimaryKeyDescriptor describes a table primary key.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct PrimaryKeyDescriptor {
     /// fields is a comma-separated list of fields in the primary key. Spaces are
@@ -56,6 +58,7 @@ pub struct PrimaryKeyDescriptor {
     pub auto_increment: bool,
 }
 /// PrimaryKeyDescriptor describes a table secondary index.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SecondaryIndexDescriptor {
     /// fields is a comma-separated list of fields in the index. The supported
@@ -79,6 +82,7 @@ pub struct SecondaryIndexDescriptor {
     pub unique: bool,
 }
 /// TableDescriptor describes an ORM singleton table which has at most one instance.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SingletonDescriptor {
     /// id is a non-zero integer ID that must be unique within the
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.orm.v1alpha1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.orm.v1alpha1.rs
index 9122e8ad..e5c5e548 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.orm.v1alpha1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.orm.v1alpha1.rs
@@ -1,5 +1,6 @@
 // @generated
 /// ModuleSchemaDescriptor describe's a module's ORM schema.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ModuleSchemaDescriptor {
     #[prost(message, repeated, tag = "1")]
@@ -12,6 +13,7 @@ pub struct ModuleSchemaDescriptor {
 /// Nested message and enum types in `ModuleSchemaDescriptor`.
 pub mod module_schema_descriptor {
     /// FileEntry describes an ORM file used in a module.
+    #[allow(clippy::derive_partial_eq_without_eq)]
     #[derive(Clone, PartialEq, ::prost::Message)]
     pub struct FileEntry {
         /// id is a prefix that will be varint encoded and prepended to all the
@@ -78,5 +80,16 @@ impl StorageType {
             StorageType::Commitment => "STORAGE_TYPE_COMMITMENT",
         }
     }
+    /// Creates an enum from field names used in the ProtoBuf definition.
+    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+        match value {
+            "STORAGE_TYPE_DEFAULT_UNSPECIFIED" => Some(Self::DefaultUnspecified),
+            "STORAGE_TYPE_MEMORY" => Some(Self::Memory),
+            "STORAGE_TYPE_TRANSIENT" => Some(Self::Transient),
+            "STORAGE_TYPE_INDEX" => Some(Self::Index),
+            "STORAGE_TYPE_COMMITMENT" => Some(Self::Commitment),
+            _ => None,
+        }
+    }
 }
 // @@protoc_insertion_point(module)
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.params.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.params.v1beta1.rs
index 59c20e5d..637fa514 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.params.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.params.v1beta1.rs
@@ -1,5 +1,6 @@
 // @generated
 /// ParameterChangeProposal defines a proposal to change one or more parameters.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ParameterChangeProposal {
     #[prost(string, tag = "1")]
@@ -11,6 +12,7 @@ pub struct ParameterChangeProposal {
 }
 /// ParamChange defines an individual parameter change, for use in
 /// ParameterChangeProposal.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ParamChange {
     #[prost(string, tag = "1")]
@@ -21,6 +23,7 @@ pub struct ParamChange {
     pub value: ::prost::alloc::string::String,
 }
 /// QueryParamsRequest is request type for the Query/Params RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryParamsRequest {
     /// subspace defines the module to query the parameter for.
@@ -31,6 +34,7 @@ pub struct QueryParamsRequest {
     pub key: ::prost::alloc::string::String,
 }
 /// QueryParamsResponse is response type for the Query/Params RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryParamsResponse {
     /// param defines the queried parameter.
@@ -41,12 +45,14 @@ pub struct QueryParamsResponse {
 /// subspaces and all keys for a subspace.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QuerySubspacesRequest {}
 /// QuerySubspacesResponse defines the response types for querying for all
 /// registered subspaces and all keys for a subspace.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QuerySubspacesResponse {
     #[prost(message, repeated, tag = "1")]
@@ -56,6 +62,7 @@ pub struct QuerySubspacesResponse {
 /// the subspace.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Subspace {
     #[prost(string, tag = "1")]
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.slashing.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.slashing.v1beta1.rs
index 31d12936..2992bdb9 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.slashing.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.slashing.v1beta1.rs
@@ -1,6 +1,7 @@
 // @generated
 /// ValidatorSigningInfo defines a validator's signing info for monitoring their
 /// liveness activity.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ValidatorSigningInfo {
     #[prost(string, tag = "1")]
@@ -15,7 +16,7 @@ pub struct ValidatorSigningInfo {
     pub index_offset: i64,
     /// Timestamp until which the validator is jailed due to liveness downtime.
     #[prost(message, optional, tag = "4")]
-    pub jailed_until: ::core::option::Option<::prost_types::Timestamp>,
+    pub jailed_until: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
     /// Whether or not a validator has been tombstoned (killed out of validator set). It is set
     /// once the validator commits an equivocation or for any other configured misbehiavor.
     #[prost(bool, tag = "5")]
@@ -26,6 +27,7 @@ pub struct ValidatorSigningInfo {
     pub missed_blocks_counter: i64,
 }
 /// Params represents the parameters used for by the slashing module.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Params {
     #[prost(int64, tag = "1")]
@@ -33,13 +35,15 @@ pub struct Params {
     #[prost(bytes = "vec", tag = "2")]
     pub min_signed_per_window: ::prost::alloc::vec::Vec<u8>,
     #[prost(message, optional, tag = "3")]
-    pub downtime_jail_duration: ::core::option::Option<::prost_types::Duration>,
+    pub downtime_jail_duration:
+        ::core::option::Option<::tendermint_proto::google::protobuf::Duration>,
     #[prost(bytes = "vec", tag = "4")]
     pub slash_fraction_double_sign: ::prost::alloc::vec::Vec<u8>,
     #[prost(bytes = "vec", tag = "5")]
     pub slash_fraction_downtime: ::prost::alloc::vec::Vec<u8>,
 }
 /// GenesisState defines the slashing module's genesis state.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GenesisState {
     /// params defines all the paramaters of related to deposit.
@@ -55,6 +59,7 @@ pub struct GenesisState {
     pub missed_blocks: ::prost::alloc::vec::Vec<ValidatorMissedBlocks>,
 }
 /// SigningInfo stores validator signing info of corresponding address.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SigningInfo {
     /// address is the validator address.
@@ -66,6 +71,7 @@ pub struct SigningInfo {
 }
 /// ValidatorMissedBlocks contains array of missed blocks of corresponding
 /// address.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ValidatorMissedBlocks {
     /// address is the validator address.
@@ -76,6 +82,7 @@ pub struct ValidatorMissedBlocks {
     pub missed_blocks: ::prost::alloc::vec::Vec<MissedBlock>,
 }
 /// MissedBlock contains height and missed status as boolean.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MissedBlock {
     /// index is the height at which the block was missed.
@@ -86,9 +93,11 @@ pub struct MissedBlock {
     pub missed: bool,
 }
 /// QueryParamsRequest is the request type for the Query/Params RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryParamsRequest {}
 /// QueryParamsResponse is the response type for the Query/Params RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryParamsResponse {
     #[prost(message, optional, tag = "1")]
@@ -96,6 +105,7 @@ pub struct QueryParamsResponse {
 }
 /// QuerySigningInfoRequest is the request type for the Query/SigningInfo RPC
 /// method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QuerySigningInfoRequest {
     /// cons_address is the address to query signing info of
@@ -104,6 +114,7 @@ pub struct QuerySigningInfoRequest {
 }
 /// QuerySigningInfoResponse is the response type for the Query/SigningInfo RPC
 /// method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QuerySigningInfoResponse {
     /// val_signing_info is the signing info of requested val cons address
@@ -112,6 +123,7 @@ pub struct QuerySigningInfoResponse {
 }
 /// QuerySigningInfosRequest is the request type for the Query/SigningInfos RPC
 /// method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QuerySigningInfosRequest {
     #[prost(message, optional, tag = "1")]
@@ -119,6 +131,7 @@ pub struct QuerySigningInfosRequest {
 }
 /// QuerySigningInfosResponse is the response type for the Query/SigningInfos RPC
 /// method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QuerySigningInfosResponse {
     /// info is the signing info of all validators
@@ -128,12 +141,14 @@ pub struct QuerySigningInfosResponse {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// MsgUnjail defines the Msg/Unjail request type
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgUnjail {
     #[prost(string, tag = "1")]
     pub validator_addr: ::prost::alloc::string::String,
 }
 /// MsgUnjailResponse defines the Msg/Unjail response type
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgUnjailResponse {}
 include!("cosmos.slashing.v1beta1.tonic.rs");
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.staking.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.staking.v1beta1.rs
index 0695b59e..886e1139 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.staking.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.staking.v1beta1.rs
@@ -2,6 +2,7 @@
 /// StakeAuthorization defines authorization for delegate/undelegate/redelegate.
 ///
 /// Since: cosmos-sdk 0.43
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct StakeAuthorization {
     /// max_tokens specifies the maximum amount of tokens can be delegate to a validator. If it is
@@ -18,12 +19,14 @@ pub struct StakeAuthorization {
 /// Nested message and enum types in `StakeAuthorization`.
 pub mod stake_authorization {
     /// Validators defines list of validator addresses.
+    #[allow(clippy::derive_partial_eq_without_eq)]
     #[derive(Clone, PartialEq, ::prost::Message)]
     pub struct Validators {
         #[prost(string, repeated, tag = "1")]
         pub address: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
     }
     /// validators is the oneof that represents either allow_list or deny_list
+    #[allow(clippy::derive_partial_eq_without_eq)]
     #[derive(Clone, PartialEq, ::prost::Oneof)]
     pub enum Policy {
         /// allow_list specifies list of validator addresses to whom grantee can delegate tokens on behalf of granter's
@@ -63,11 +66,22 @@ impl AuthorizationType {
             AuthorizationType::Redelegate => "AUTHORIZATION_TYPE_REDELEGATE",
         }
     }
+    /// Creates an enum from field names used in the ProtoBuf definition.
+    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+        match value {
+            "AUTHORIZATION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
+            "AUTHORIZATION_TYPE_DELEGATE" => Some(Self::Delegate),
+            "AUTHORIZATION_TYPE_UNDELEGATE" => Some(Self::Undelegate),
+            "AUTHORIZATION_TYPE_REDELEGATE" => Some(Self::Redelegate),
+            _ => None,
+        }
+    }
 }
 /// HistoricalInfo contains header and validator information for a given block.
 /// It is stored as part of staking module's state, which persists the `n` most
 /// recent HistoricalInfo
 /// (`n` is set by the staking module's `historical_entries` parameter).
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct HistoricalInfo {
     #[prost(message, optional, tag = "1")]
@@ -77,6 +91,7 @@ pub struct HistoricalInfo {
 }
 /// CommissionRates defines the initial commission rates to be used for creating
 /// a validator.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CommissionRates {
     /// rate is the commission rate charged to delegators, as a fraction.
@@ -90,6 +105,7 @@ pub struct CommissionRates {
     pub max_change_rate: ::prost::alloc::string::String,
 }
 /// Commission defines commission parameters for a given validator.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Commission {
     /// commission_rates defines the initial commission rates to be used for creating a validator.
@@ -97,9 +113,10 @@ pub struct Commission {
     pub commission_rates: ::core::option::Option<CommissionRates>,
     /// update_time is the last time the commission rate was changed.
     #[prost(message, optional, tag = "2")]
-    pub update_time: ::core::option::Option<::prost_types::Timestamp>,
+    pub update_time: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
 }
 /// Description defines a validator description.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Description {
     /// moniker defines a human-readable name for the validator.
@@ -126,6 +143,7 @@ pub struct Description {
 /// bond shares is based on the amount of coins delegated divided by the current
 /// exchange rate. Voting power can be calculated as total bonded shares
 /// multiplied by exchange rate.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Validator {
     /// operator_address defines the address of the validator's operator; bech encoded in JSON.
@@ -133,7 +151,7 @@ pub struct Validator {
     pub operator_address: ::prost::alloc::string::String,
     /// consensus_pubkey is the consensus public key of the validator, as a Protobuf Any.
     #[prost(message, optional, tag = "2")]
-    pub consensus_pubkey: ::core::option::Option<::prost_types::Any>,
+    pub consensus_pubkey: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     /// jailed defined whether the validator has been jailed from bonded status or not.
     #[prost(bool, tag = "3")]
     pub jailed: bool,
@@ -154,7 +172,7 @@ pub struct Validator {
     pub unbonding_height: i64,
     /// unbonding_time defines, if unbonding, the min time for the validator to complete unbonding.
     #[prost(message, optional, tag = "9")]
-    pub unbonding_time: ::core::option::Option<::prost_types::Timestamp>,
+    pub unbonding_time: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
     /// commission defines the commission parameters.
     #[prost(message, optional, tag = "10")]
     pub commission: ::core::option::Option<Commission>,
@@ -165,6 +183,7 @@ pub struct Validator {
     pub min_self_delegation: ::prost::alloc::string::String,
 }
 /// ValAddresses defines a repeated set of validator addresses.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ValAddresses {
     #[prost(string, repeated, tag = "1")]
@@ -173,6 +192,7 @@ pub struct ValAddresses {
 /// DVPair is struct that just has a delegator-validator pair with no other data.
 /// It is intended to be used as a marshalable pointer. For example, a DVPair can
 /// be used to construct the key to getting an UnbondingDelegation from state.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DvPair {
     #[prost(string, tag = "1")]
@@ -181,6 +201,7 @@ pub struct DvPair {
     pub validator_address: ::prost::alloc::string::String,
 }
 /// DVPairs defines an array of DVPair objects.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DvPairs {
     #[prost(message, repeated, tag = "1")]
@@ -190,6 +211,7 @@ pub struct DvPairs {
 /// with no other data. It is intended to be used as a marshalable pointer. For
 /// example, a DVVTriplet can be used to construct the key to getting a
 /// Redelegation from state.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DvvTriplet {
     #[prost(string, tag = "1")]
@@ -200,6 +222,7 @@ pub struct DvvTriplet {
     pub validator_dst_address: ::prost::alloc::string::String,
 }
 /// DVVTriplets defines an array of DVVTriplet objects.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DvvTriplets {
     #[prost(message, repeated, tag = "1")]
@@ -208,6 +231,7 @@ pub struct DvvTriplets {
 /// Delegation represents the bond with tokens held by an account. It is
 /// owned by one delegator, and is associated with the voting power of one
 /// validator.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Delegation {
     /// delegator_address is the bech32-encoded address of the delegator.
@@ -222,6 +246,7 @@ pub struct Delegation {
 }
 /// UnbondingDelegation stores all of a single delegator's unbonding bonds
 /// for a single validator in an time-ordered list.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct UnbondingDelegation {
     /// delegator_address is the bech32-encoded address of the delegator.
@@ -237,6 +262,7 @@ pub struct UnbondingDelegation {
     pub entries: ::prost::alloc::vec::Vec<UnbondingDelegationEntry>,
 }
 /// UnbondingDelegationEntry defines an unbonding object with relevant metadata.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct UnbondingDelegationEntry {
     /// creation_height is the height which the unbonding took place.
@@ -244,7 +270,7 @@ pub struct UnbondingDelegationEntry {
     pub creation_height: i64,
     /// completion_time is the unix time for unbonding completion.
     #[prost(message, optional, tag = "2")]
-    pub completion_time: ::core::option::Option<::prost_types::Timestamp>,
+    pub completion_time: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
     /// initial_balance defines the tokens initially scheduled to receive at completion.
     #[prost(string, tag = "3")]
     pub initial_balance: ::prost::alloc::string::String,
@@ -253,6 +279,7 @@ pub struct UnbondingDelegationEntry {
     pub balance: ::prost::alloc::string::String,
 }
 /// RedelegationEntry defines a redelegation object with relevant metadata.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RedelegationEntry {
     /// creation_height  defines the height which the redelegation took place.
@@ -260,7 +287,7 @@ pub struct RedelegationEntry {
     pub creation_height: i64,
     /// completion_time defines the unix time for redelegation completion.
     #[prost(message, optional, tag = "2")]
-    pub completion_time: ::core::option::Option<::prost_types::Timestamp>,
+    pub completion_time: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
     /// initial_balance defines the initial balance when redelegation started.
     #[prost(string, tag = "3")]
     pub initial_balance: ::prost::alloc::string::String,
@@ -270,6 +297,7 @@ pub struct RedelegationEntry {
 }
 /// Redelegation contains the list of a particular delegator's redelegating bonds
 /// from a particular source validator to a particular destination validator.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Redelegation {
     /// delegator_address is the bech32-encoded address of the delegator.
@@ -288,11 +316,12 @@ pub struct Redelegation {
     pub entries: ::prost::alloc::vec::Vec<RedelegationEntry>,
 }
 /// Params defines the parameters for the staking module.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Params {
     /// unbonding_time is the time duration of unbonding.
     #[prost(message, optional, tag = "1")]
-    pub unbonding_time: ::core::option::Option<::prost_types::Duration>,
+    pub unbonding_time: ::core::option::Option<::tendermint_proto::google::protobuf::Duration>,
     /// max_validators is the maximum number of validators.
     #[prost(uint32, tag = "2")]
     pub max_validators: u32,
@@ -311,6 +340,7 @@ pub struct Params {
 }
 /// DelegationResponse is equivalent to Delegation except that it contains a
 /// balance in addition to shares which is more suitable for client responses.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DelegationResponse {
     #[prost(message, optional, tag = "1")]
@@ -321,6 +351,7 @@ pub struct DelegationResponse {
 /// RedelegationEntryResponse is equivalent to a RedelegationEntry except that it
 /// contains a balance in addition to shares which is more suitable for client
 /// responses.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RedelegationEntryResponse {
     #[prost(message, optional, tag = "1")]
@@ -331,6 +362,7 @@ pub struct RedelegationEntryResponse {
 /// RedelegationResponse is equivalent to a Redelegation except that its entries
 /// contain a balance in addition to shares which is more suitable for client
 /// responses.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RedelegationResponse {
     #[prost(message, optional, tag = "1")]
@@ -340,6 +372,7 @@ pub struct RedelegationResponse {
 }
 /// Pool is used for tracking bonded and not-bonded token supply of the bond
 /// denomination.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Pool {
     #[prost(string, tag = "1")]
@@ -373,8 +406,19 @@ impl BondStatus {
             BondStatus::Bonded => "BOND_STATUS_BONDED",
         }
     }
+    /// Creates an enum from field names used in the ProtoBuf definition.
+    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+        match value {
+            "BOND_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
+            "BOND_STATUS_UNBONDED" => Some(Self::Unbonded),
+            "BOND_STATUS_UNBONDING" => Some(Self::Unbonding),
+            "BOND_STATUS_BONDED" => Some(Self::Bonded),
+            _ => None,
+        }
+    }
 }
 /// GenesisState defines the staking module's genesis state.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GenesisState {
     /// params defines all the paramaters of related to deposit.
@@ -404,6 +448,7 @@ pub struct GenesisState {
     pub exported: bool,
 }
 /// LastValidatorPower required for validator set update logic.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct LastValidatorPower {
     /// address is the address of the validator.
@@ -414,6 +459,7 @@ pub struct LastValidatorPower {
     pub power: i64,
 }
 /// QueryValidatorsRequest is request type for Query/Validators RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryValidatorsRequest {
     /// status enables to query for validators matching a given status.
@@ -424,6 +470,7 @@ pub struct QueryValidatorsRequest {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageRequest>,
 }
 /// QueryValidatorsResponse is response type for the Query/Validators RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryValidatorsResponse {
     /// validators contains all the queried validators.
@@ -434,6 +481,7 @@ pub struct QueryValidatorsResponse {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// QueryValidatorRequest is response type for the Query/Validator RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryValidatorRequest {
     /// validator_addr defines the validator address to query for.
@@ -441,6 +489,7 @@ pub struct QueryValidatorRequest {
     pub validator_addr: ::prost::alloc::string::String,
 }
 /// QueryValidatorResponse is response type for the Query/Validator RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryValidatorResponse {
     /// validator defines the validator info.
@@ -449,6 +498,7 @@ pub struct QueryValidatorResponse {
 }
 /// QueryValidatorDelegationsRequest is request type for the
 /// Query/ValidatorDelegations RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryValidatorDelegationsRequest {
     /// validator_addr defines the validator address to query for.
@@ -460,6 +510,7 @@ pub struct QueryValidatorDelegationsRequest {
 }
 /// QueryValidatorDelegationsResponse is response type for the
 /// Query/ValidatorDelegations RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryValidatorDelegationsResponse {
     #[prost(message, repeated, tag = "1")]
@@ -470,6 +521,7 @@ pub struct QueryValidatorDelegationsResponse {
 }
 /// QueryValidatorUnbondingDelegationsRequest is required type for the
 /// Query/ValidatorUnbondingDelegations RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryValidatorUnbondingDelegationsRequest {
     /// validator_addr defines the validator address to query for.
@@ -481,6 +533,7 @@ pub struct QueryValidatorUnbondingDelegationsRequest {
 }
 /// QueryValidatorUnbondingDelegationsResponse is response type for the
 /// Query/ValidatorUnbondingDelegations RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryValidatorUnbondingDelegationsResponse {
     #[prost(message, repeated, tag = "1")]
@@ -490,6 +543,7 @@ pub struct QueryValidatorUnbondingDelegationsResponse {
     pub pagination: ::core::option::Option<super::super::base::query::v1beta1::PageResponse>,
 }
 /// QueryDelegationRequest is request type for the Query/Delegation RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDelegationRequest {
     /// delegator_addr defines the delegator address to query for.
@@ -500,6 +554,7 @@ pub struct QueryDelegationRequest {
     pub validator_addr: ::prost::alloc::string::String,
 }
 /// QueryDelegationResponse is response type for the Query/Delegation RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDelegationResponse {
     /// delegation_responses defines the delegation info of a delegation.
@@ -508,6 +563,7 @@ pub struct QueryDelegationResponse {
 }
 /// QueryUnbondingDelegationRequest is request type for the
 /// Query/UnbondingDelegation RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryUnbondingDelegationRequest {
     /// delegator_addr defines the delegator address to query for.
@@ -519,6 +575,7 @@ pub struct QueryUnbondingDelegationRequest {
 }
 /// QueryDelegationResponse is response type for the Query/UnbondingDelegation
 /// RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryUnbondingDelegationResponse {
     /// unbond defines the unbonding information of a delegation.
@@ -527,6 +584,7 @@ pub struct QueryUnbondingDelegationResponse {
 }
 /// QueryDelegatorDelegationsRequest is request type for the
 /// Query/DelegatorDelegations RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDelegatorDelegationsRequest {
     /// delegator_addr defines the delegator address to query for.
@@ -538,6 +596,7 @@ pub struct QueryDelegatorDelegationsRequest {
 }
 /// QueryDelegatorDelegationsResponse is response type for the
 /// Query/DelegatorDelegations RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDelegatorDelegationsResponse {
     /// delegation_responses defines all the delegations' info of a delegator.
@@ -549,6 +608,7 @@ pub struct QueryDelegatorDelegationsResponse {
 }
 /// QueryDelegatorUnbondingDelegationsRequest is request type for the
 /// Query/DelegatorUnbondingDelegations RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDelegatorUnbondingDelegationsRequest {
     /// delegator_addr defines the delegator address to query for.
@@ -560,6 +620,7 @@ pub struct QueryDelegatorUnbondingDelegationsRequest {
 }
 /// QueryUnbondingDelegatorDelegationsResponse is response type for the
 /// Query/UnbondingDelegatorDelegations RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDelegatorUnbondingDelegationsResponse {
     #[prost(message, repeated, tag = "1")]
@@ -570,6 +631,7 @@ pub struct QueryDelegatorUnbondingDelegationsResponse {
 }
 /// QueryRedelegationsRequest is request type for the Query/Redelegations RPC
 /// method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryRedelegationsRequest {
     /// delegator_addr defines the delegator address to query for.
@@ -587,6 +649,7 @@ pub struct QueryRedelegationsRequest {
 }
 /// QueryRedelegationsResponse is response type for the Query/Redelegations RPC
 /// method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryRedelegationsResponse {
     #[prost(message, repeated, tag = "1")]
@@ -597,6 +660,7 @@ pub struct QueryRedelegationsResponse {
 }
 /// QueryDelegatorValidatorsRequest is request type for the
 /// Query/DelegatorValidators RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDelegatorValidatorsRequest {
     /// delegator_addr defines the delegator address to query for.
@@ -608,6 +672,7 @@ pub struct QueryDelegatorValidatorsRequest {
 }
 /// QueryDelegatorValidatorsResponse is response type for the
 /// Query/DelegatorValidators RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDelegatorValidatorsResponse {
     /// validators defines the validators' info of a delegator.
@@ -619,6 +684,7 @@ pub struct QueryDelegatorValidatorsResponse {
 }
 /// QueryDelegatorValidatorRequest is request type for the
 /// Query/DelegatorValidator RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDelegatorValidatorRequest {
     /// delegator_addr defines the delegator address to query for.
@@ -630,6 +696,7 @@ pub struct QueryDelegatorValidatorRequest {
 }
 /// QueryDelegatorValidatorResponse response type for the
 /// Query/DelegatorValidator RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryDelegatorValidatorResponse {
     /// validator defines the validator info.
@@ -638,6 +705,7 @@ pub struct QueryDelegatorValidatorResponse {
 }
 /// QueryHistoricalInfoRequest is request type for the Query/HistoricalInfo RPC
 /// method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryHistoricalInfoRequest {
     /// height defines at which height to query the historical info.
@@ -646,6 +714,7 @@ pub struct QueryHistoricalInfoRequest {
 }
 /// QueryHistoricalInfoResponse is response type for the Query/HistoricalInfo RPC
 /// method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryHistoricalInfoResponse {
     /// hist defines the historical info at the given height.
@@ -653,9 +722,11 @@ pub struct QueryHistoricalInfoResponse {
     pub hist: ::core::option::Option<HistoricalInfo>,
 }
 /// QueryPoolRequest is request type for the Query/Pool RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryPoolRequest {}
 /// QueryPoolResponse is response type for the Query/Pool RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryPoolResponse {
     /// pool defines the pool info.
@@ -663,9 +734,11 @@ pub struct QueryPoolResponse {
     pub pool: ::core::option::Option<Pool>,
 }
 /// QueryParamsRequest is request type for the Query/Params RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryParamsRequest {}
 /// QueryParamsResponse is response type for the Query/Params RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryParamsResponse {
     /// params holds all the parameters of this module.
@@ -673,6 +746,7 @@ pub struct QueryParamsResponse {
     pub params: ::core::option::Option<Params>,
 }
 /// MsgCreateValidator defines a SDK message for creating a new validator.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgCreateValidator {
     #[prost(message, optional, tag = "1")]
@@ -686,14 +760,16 @@ pub struct MsgCreateValidator {
     #[prost(string, tag = "5")]
     pub validator_address: ::prost::alloc::string::String,
     #[prost(message, optional, tag = "6")]
-    pub pubkey: ::core::option::Option<::prost_types::Any>,
+    pub pubkey: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     #[prost(message, optional, tag = "7")]
     pub value: ::core::option::Option<super::super::base::v1beta1::Coin>,
 }
 /// MsgCreateValidatorResponse defines the Msg/CreateValidator response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgCreateValidatorResponse {}
 /// MsgEditValidator defines a SDK message for editing an existing validator.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgEditValidator {
     #[prost(message, optional, tag = "1")]
@@ -710,10 +786,12 @@ pub struct MsgEditValidator {
     pub min_self_delegation: ::prost::alloc::string::String,
 }
 /// MsgEditValidatorResponse defines the Msg/EditValidator response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgEditValidatorResponse {}
 /// MsgDelegate defines a SDK message for performing a delegation of coins
 /// from a delegator to a validator.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgDelegate {
     #[prost(string, tag = "1")]
@@ -724,10 +802,12 @@ pub struct MsgDelegate {
     pub amount: ::core::option::Option<super::super::base::v1beta1::Coin>,
 }
 /// MsgDelegateResponse defines the Msg/Delegate response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgDelegateResponse {}
 /// MsgBeginRedelegate defines a SDK message for performing a redelegation
 /// of coins from a delegator and source validator to a destination validator.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgBeginRedelegate {
     #[prost(string, tag = "1")]
@@ -740,13 +820,15 @@ pub struct MsgBeginRedelegate {
     pub amount: ::core::option::Option<super::super::base::v1beta1::Coin>,
 }
 /// MsgBeginRedelegateResponse defines the Msg/BeginRedelegate response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgBeginRedelegateResponse {
     #[prost(message, optional, tag = "1")]
-    pub completion_time: ::core::option::Option<::prost_types::Timestamp>,
+    pub completion_time: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
 }
 /// MsgUndelegate defines a SDK message for performing an undelegation from a
 /// delegate and a validator.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgUndelegate {
     #[prost(string, tag = "1")]
@@ -757,14 +839,16 @@ pub struct MsgUndelegate {
     pub amount: ::core::option::Option<super::super::base::v1beta1::Coin>,
 }
 /// MsgUndelegateResponse defines the Msg/Undelegate response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgUndelegateResponse {
     #[prost(message, optional, tag = "1")]
-    pub completion_time: ::core::option::Option<::prost_types::Timestamp>,
+    pub completion_time: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
 }
 /// MsgCancelUnbondingDelegation defines the SDK message for performing a cancel unbonding delegation for delegator
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgCancelUnbondingDelegation {
     #[prost(string, tag = "1")]
@@ -781,6 +865,7 @@ pub struct MsgCancelUnbondingDelegation {
 /// MsgCancelUnbondingDelegationResponse
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgCancelUnbondingDelegationResponse {}
 include!("cosmos.staking.v1beta1.tonic.rs");
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.tx.signing.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.tx.signing.v1beta1.rs
index ef809f20..0ce5e0a7 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.tx.signing.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.tx.signing.v1beta1.rs
@@ -1,5 +1,6 @@
 // @generated
 /// SignatureDescriptors wraps multiple SignatureDescriptor's.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SignatureDescriptors {
     /// signatures are the signature descriptors
@@ -10,11 +11,12 @@ pub struct SignatureDescriptors {
 /// a signature including the public key of the signer, signing modes and the
 /// signature itself. It is primarily used for coordinating signatures between
 /// clients.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SignatureDescriptor {
     /// public_key is the public key of the signer
     #[prost(message, optional, tag = "1")]
-    pub public_key: ::core::option::Option<::prost_types::Any>,
+    pub public_key: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     #[prost(message, optional, tag = "2")]
     pub data: ::core::option::Option<signature_descriptor::Data>,
     /// sequence is the sequence of the account, which describes the
@@ -26,6 +28,7 @@ pub struct SignatureDescriptor {
 /// Nested message and enum types in `SignatureDescriptor`.
 pub mod signature_descriptor {
     /// Data represents signature data
+    #[allow(clippy::derive_partial_eq_without_eq)]
     #[derive(Clone, PartialEq, ::prost::Message)]
     pub struct Data {
         /// sum is the oneof that specifies whether this represents single or multi-signature data
@@ -35,6 +38,7 @@ pub mod signature_descriptor {
     /// Nested message and enum types in `Data`.
     pub mod data {
         /// Single is the signature data for a single signer
+        #[allow(clippy::derive_partial_eq_without_eq)]
         #[derive(Clone, PartialEq, ::prost::Message)]
         pub struct Single {
             /// mode is the signing mode of the single signer
@@ -45,6 +49,7 @@ pub mod signature_descriptor {
             pub signature: ::prost::alloc::vec::Vec<u8>,
         }
         /// Multi is the signature data for a multisig public key
+        #[allow(clippy::derive_partial_eq_without_eq)]
         #[derive(Clone, PartialEq, ::prost::Message)]
         pub struct Multi {
             /// bitarray specifies which keys within the multisig are signing
@@ -57,6 +62,7 @@ pub mod signature_descriptor {
             pub signatures: ::prost::alloc::vec::Vec<super::Data>,
         }
         /// sum is the oneof that specifies whether this represents single or multi-signature data
+        #[allow(clippy::derive_partial_eq_without_eq)]
         #[derive(Clone, PartialEq, ::prost::Oneof)]
         pub enum Sum {
             /// single represents a single signer
@@ -126,5 +132,17 @@ impl SignMode {
             SignMode::Eip191 => "SIGN_MODE_EIP_191",
         }
     }
+    /// Creates an enum from field names used in the ProtoBuf definition.
+    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+        match value {
+            "SIGN_MODE_UNSPECIFIED" => Some(Self::Unspecified),
+            "SIGN_MODE_DIRECT" => Some(Self::Direct),
+            "SIGN_MODE_TEXTUAL" => Some(Self::Textual),
+            "SIGN_MODE_DIRECT_AUX" => Some(Self::DirectAux),
+            "SIGN_MODE_LEGACY_AMINO_JSON" => Some(Self::LegacyAminoJson),
+            "SIGN_MODE_EIP_191" => Some(Self::Eip191),
+            _ => None,
+        }
+    }
 }
 // @@protoc_insertion_point(module)
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.tx.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.tx.v1beta1.rs
index 7bf8ca08..363a157f 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.tx.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.tx.v1beta1.rs
@@ -1,5 +1,6 @@
 // @generated
 /// Tx is the standard type used for broadcasting transactions.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Tx {
     /// body is the processable content of the transaction
@@ -20,6 +21,7 @@ pub struct Tx {
 /// verification. The binary `serialize(tx: TxRaw)` is stored in Tendermint and
 /// the hash `sha256(serialize(tx: TxRaw))` becomes the "txhash", commonly used
 /// as the transaction ID.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct TxRaw {
     /// body_bytes is a protobuf serialization of a TxBody that matches the
@@ -37,6 +39,7 @@ pub struct TxRaw {
     pub signatures: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
 }
 /// SignDoc is the type used for generating sign bytes for SIGN_MODE_DIRECT.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SignDoc {
     /// body_bytes is protobuf serialization of a TxBody that matches the
@@ -60,6 +63,7 @@ pub struct SignDoc {
 /// SIGN_MODE_DIRECT_AUX.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SignDocDirectAux {
     /// body_bytes is protobuf serialization of a TxBody that matches the
@@ -68,7 +72,7 @@ pub struct SignDocDirectAux {
     pub body_bytes: ::prost::alloc::vec::Vec<u8>,
     /// public_key is the public key of the signing account.
     #[prost(message, optional, tag = "2")]
-    pub public_key: ::core::option::Option<::prost_types::Any>,
+    pub public_key: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     /// chain_id is the identifier of the chain this transaction targets.
     /// It prevents signed transactions from being used on another chain by an
     /// attacker.
@@ -90,6 +94,7 @@ pub struct SignDocDirectAux {
     pub tip: ::core::option::Option<Tip>,
 }
 /// TxBody is the body of a transaction that all signers sign over.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct TxBody {
     /// messages is a list of messages to be executed. The required signers of
@@ -100,7 +105,7 @@ pub struct TxBody {
     /// is referred to as the primary signer and pays the fee for the whole
     /// transaction.
     #[prost(message, repeated, tag = "1")]
-    pub messages: ::prost::alloc::vec::Vec<::prost_types::Any>,
+    pub messages: ::prost::alloc::vec::Vec<::tendermint_proto::google::protobuf::Any>,
     /// memo is any arbitrary note/comment to be added to the transaction.
     /// WARNING: in clients, any publicly exposed text should not be called memo,
     /// but should be called `note` instead (see <https://github.com/cosmos/cosmos-sdk/issues/9122>).
@@ -114,15 +119,17 @@ pub struct TxBody {
     /// when the default options are not sufficient. If any of these are present
     /// and can't be handled, the transaction will be rejected
     #[prost(message, repeated, tag = "1023")]
-    pub extension_options: ::prost::alloc::vec::Vec<::prost_types::Any>,
+    pub extension_options: ::prost::alloc::vec::Vec<::tendermint_proto::google::protobuf::Any>,
     /// extension_options are arbitrary options that can be added by chains
     /// when the default options are not sufficient. If any of these are present
     /// and can't be handled, they will be ignored
     #[prost(message, repeated, tag = "2047")]
-    pub non_critical_extension_options: ::prost::alloc::vec::Vec<::prost_types::Any>,
+    pub non_critical_extension_options:
+        ::prost::alloc::vec::Vec<::tendermint_proto::google::protobuf::Any>,
 }
 /// AuthInfo describes the fee and signer modes that are used to sign a
 /// transaction.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AuthInfo {
     /// signer_infos defines the signing modes for the required signers. The number
@@ -148,13 +155,14 @@ pub struct AuthInfo {
 }
 /// SignerInfo describes the public key and signing mode of a single top-level
 /// signer.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SignerInfo {
     /// public_key is the public key of the signer. It is optional for accounts
     /// that already exist in state. If unset, the verifier can use the required \
     /// signer address for this position and lookup the public key.
     #[prost(message, optional, tag = "1")]
-    pub public_key: ::core::option::Option<::prost_types::Any>,
+    pub public_key: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     /// mode_info describes the signing mode of the signer and is a nested
     /// structure to support nested multisig pubkey's
     #[prost(message, optional, tag = "2")]
@@ -166,6 +174,7 @@ pub struct SignerInfo {
     pub sequence: u64,
 }
 /// ModeInfo describes the signing mode of a single or nested multisig signer.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ModeInfo {
     /// sum is the oneof that specifies whether this represents a single or nested
@@ -178,6 +187,7 @@ pub mod mode_info {
     /// Single is the mode info for a single signer. It is structured as a message
     /// to allow for additional fields such as locale for SIGN_MODE_TEXTUAL in the
     /// future
+    #[allow(clippy::derive_partial_eq_without_eq)]
     #[derive(Clone, PartialEq, ::prost::Message)]
     pub struct Single {
         /// mode is the signing mode of the single signer
@@ -185,6 +195,7 @@ pub mod mode_info {
         pub mode: i32,
     }
     /// Multi is the mode info for a multisig public key
+    #[allow(clippy::derive_partial_eq_without_eq)]
     #[derive(Clone, PartialEq, ::prost::Message)]
     pub struct Multi {
         /// bitarray specifies which keys within the multisig are signing
@@ -198,6 +209,7 @@ pub mod mode_info {
     }
     /// sum is the oneof that specifies whether this represents a single or nested
     /// multisig signer
+    #[allow(clippy::derive_partial_eq_without_eq)]
     #[derive(Clone, PartialEq, ::prost::Oneof)]
     pub enum Sum {
         /// single represents a single signer
@@ -211,6 +223,7 @@ pub mod mode_info {
 /// Fee includes the amount of coins paid in fees and the maximum
 /// gas to be used by the transaction. The ratio yields an effective "gasprice",
 /// which must be above some miminum to be accepted into the mempool.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Fee {
     /// amount is the amount of coins to be paid as a fee
@@ -234,6 +247,7 @@ pub struct Fee {
 /// Tip is the tip used for meta-transactions.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Tip {
     /// amount is the amount of the tip
@@ -249,6 +263,7 @@ pub struct Tip {
 /// by the node if sent directly as-is.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AuxSignerData {
     /// address is the bech32-encoded address of the auxiliary signer. If using
@@ -270,6 +285,7 @@ pub struct AuxSignerData {
 }
 /// GetTxsEventRequest is the request type for the Service.TxsByEvents
 /// RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetTxsEventRequest {
     /// events is the list of transaction event type.
@@ -292,6 +308,7 @@ pub struct GetTxsEventRequest {
 }
 /// GetTxsEventResponse is the response type for the Service.TxsByEvents
 /// RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetTxsEventResponse {
     /// txs is the list of queried transactions.
@@ -311,6 +328,7 @@ pub struct GetTxsEventResponse {
 }
 /// BroadcastTxRequest is the request type for the Service.BroadcastTxRequest
 /// RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct BroadcastTxRequest {
     /// tx_bytes is the raw transaction.
@@ -321,6 +339,7 @@ pub struct BroadcastTxRequest {
 }
 /// BroadcastTxResponse is the response type for the
 /// Service.BroadcastTx method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct BroadcastTxResponse {
     /// tx_response is the queried TxResponses.
@@ -329,6 +348,7 @@ pub struct BroadcastTxResponse {
 }
 /// SimulateRequest is the request type for the Service.Simulate
 /// RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SimulateRequest {
     /// tx is the transaction to simulate.
@@ -344,6 +364,7 @@ pub struct SimulateRequest {
 }
 /// SimulateResponse is the response type for the
 /// Service.SimulateRPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SimulateResponse {
     /// gas_info is the information about gas used in the simulation.
@@ -355,6 +376,7 @@ pub struct SimulateResponse {
 }
 /// GetTxRequest is the request type for the Service.GetTx
 /// RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetTxRequest {
     /// hash is the tx hash to query, encoded as a hex string.
@@ -362,6 +384,7 @@ pub struct GetTxRequest {
     pub hash: ::prost::alloc::string::String,
 }
 /// GetTxResponse is the response type for the Service.GetTx method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetTxResponse {
     /// tx is the queried transaction.
@@ -375,6 +398,7 @@ pub struct GetTxResponse {
 /// RPC method.
 ///
 /// Since: cosmos-sdk 0.45.2
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetBlockWithTxsRequest {
     /// height is the height of the block to query.
@@ -387,6 +411,7 @@ pub struct GetBlockWithTxsRequest {
 /// GetBlockWithTxsResponse is the response type for the Service.GetBlockWithTxs method.
 ///
 /// Since: cosmos-sdk 0.45.2
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetBlockWithTxsResponse {
     /// txs are the transactions in the block.
@@ -423,6 +448,15 @@ impl OrderBy {
             OrderBy::Desc => "ORDER_BY_DESC",
         }
     }
+    /// Creates an enum from field names used in the ProtoBuf definition.
+    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+        match value {
+            "ORDER_BY_UNSPECIFIED" => Some(Self::Unspecified),
+            "ORDER_BY_ASC" => Some(Self::Asc),
+            "ORDER_BY_DESC" => Some(Self::Desc),
+            _ => None,
+        }
+    }
 }
 /// BroadcastMode specifies the broadcast mode for the TxService.Broadcast RPC method.
 #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
@@ -453,6 +487,16 @@ impl BroadcastMode {
             BroadcastMode::Async => "BROADCAST_MODE_ASYNC",
         }
     }
+    /// Creates an enum from field names used in the ProtoBuf definition.
+    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+        match value {
+            "BROADCAST_MODE_UNSPECIFIED" => Some(Self::Unspecified),
+            "BROADCAST_MODE_BLOCK" => Some(Self::Block),
+            "BROADCAST_MODE_SYNC" => Some(Self::Sync),
+            "BROADCAST_MODE_ASYNC" => Some(Self::Async),
+            _ => None,
+        }
+    }
 }
 include!("cosmos.tx.v1beta1.tonic.rs");
 // @@protoc_insertion_point(module)
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.upgrade.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.upgrade.v1beta1.rs
index cd3ad7d9..5324a869 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.upgrade.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.upgrade.v1beta1.rs
@@ -1,5 +1,6 @@
 // @generated
 /// Plan specifies information about a planned upgrade and when it should occur.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Plan {
     /// Sets the name for the upgrade. This name will be used by the upgraded
@@ -16,7 +17,7 @@ pub struct Plan {
     /// If this field is not empty, an error will be thrown.
     #[deprecated]
     #[prost(message, optional, tag = "2")]
-    pub time: ::core::option::Option<::prost_types::Timestamp>,
+    pub time: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
     /// The height at which the upgrade must be performed.
     /// Only used if Time is not set.
     #[prost(int64, tag = "3")]
@@ -30,12 +31,13 @@ pub struct Plan {
     /// If this field is not empty, an error will be thrown.
     #[deprecated]
     #[prost(message, optional, tag = "5")]
-    pub upgraded_client_state: ::core::option::Option<::prost_types::Any>,
+    pub upgraded_client_state: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
 }
 /// SoftwareUpgradeProposal is a gov Content type for initiating a software
 /// upgrade.
 /// Deprecated: This legacy proposal is deprecated in favor of Msg-based gov
 /// proposals, see MsgSoftwareUpgrade.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SoftwareUpgradeProposal {
     #[prost(string, tag = "1")]
@@ -49,6 +51,7 @@ pub struct SoftwareUpgradeProposal {
 /// upgrade.
 /// Deprecated: This legacy proposal is deprecated in favor of Msg-based gov
 /// proposals, see MsgCancelUpgrade.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CancelSoftwareUpgradeProposal {
     #[prost(string, tag = "1")]
@@ -59,6 +62,7 @@ pub struct CancelSoftwareUpgradeProposal {
 /// ModuleVersion specifies a module and its consensus version.
 ///
 /// Since: cosmos-sdk 0.43
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ModuleVersion {
     /// name of the app module
@@ -70,10 +74,12 @@ pub struct ModuleVersion {
 }
 /// QueryCurrentPlanRequest is the request type for the Query/CurrentPlan RPC
 /// method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryCurrentPlanRequest {}
 /// QueryCurrentPlanResponse is the response type for the Query/CurrentPlan RPC
 /// method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryCurrentPlanResponse {
     /// plan is the current upgrade plan.
@@ -82,6 +88,7 @@ pub struct QueryCurrentPlanResponse {
 }
 /// QueryCurrentPlanRequest is the request type for the Query/AppliedPlan RPC
 /// method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryAppliedPlanRequest {
     /// name is the name of the applied plan to query for.
@@ -90,6 +97,7 @@ pub struct QueryAppliedPlanRequest {
 }
 /// QueryAppliedPlanResponse is the response type for the Query/AppliedPlan RPC
 /// method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryAppliedPlanResponse {
     /// height is the block height at which the plan was applied.
@@ -98,6 +106,7 @@ pub struct QueryAppliedPlanResponse {
 }
 /// QueryUpgradedConsensusStateRequest is the request type for the Query/UpgradedConsensusState
 /// RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryUpgradedConsensusStateRequest {
     /// last height of the current chain must be sent in request
@@ -107,6 +116,7 @@ pub struct QueryUpgradedConsensusStateRequest {
 }
 /// QueryUpgradedConsensusStateResponse is the response type for the Query/UpgradedConsensusState
 /// RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryUpgradedConsensusStateResponse {
     /// Since: cosmos-sdk 0.43
@@ -117,6 +127,7 @@ pub struct QueryUpgradedConsensusStateResponse {
 /// RPC method.
 ///
 /// Since: cosmos-sdk 0.43
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryModuleVersionsRequest {
     /// module_name is a field to query a specific module
@@ -129,6 +140,7 @@ pub struct QueryModuleVersionsRequest {
 /// RPC method.
 ///
 /// Since: cosmos-sdk 0.43
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryModuleVersionsResponse {
     /// module_versions is a list of module names with their consensus versions.
@@ -138,11 +150,13 @@ pub struct QueryModuleVersionsResponse {
 /// QueryAuthorityRequest is the request type for Query/Authority
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryAuthorityRequest {}
 /// QueryAuthorityResponse is the response type for Query/Authority
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryAuthorityResponse {
     #[prost(string, tag = "1")]
@@ -151,6 +165,7 @@ pub struct QueryAuthorityResponse {
 /// MsgSoftwareUpgrade is the Msg/SoftwareUpgrade request type.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgSoftwareUpgrade {
     /// authority is the address of the governance account.
@@ -163,11 +178,13 @@ pub struct MsgSoftwareUpgrade {
 /// MsgSoftwareUpgradeResponse is the Msg/SoftwareUpgrade response type.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgSoftwareUpgradeResponse {}
 /// MsgCancelUpgrade is the Msg/CancelUpgrade request type.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgCancelUpgrade {
     /// authority is the address of the governance account.
@@ -177,6 +194,7 @@ pub struct MsgCancelUpgrade {
 /// MsgCancelUpgradeResponse is the Msg/CancelUpgrade response type.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgCancelUpgradeResponse {}
 include!("cosmos.upgrade.v1beta1.tonic.rs");
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.vesting.v1beta1.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.vesting.v1beta1.rs
index 63a56aeb..b49219b3 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.vesting.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos.vesting.v1beta1.rs
@@ -1,6 +1,7 @@
 // @generated
 /// BaseVestingAccount implements the VestingAccount interface. It contains all
 /// the necessary fields needed for any vesting account implementation.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct BaseVestingAccount {
     #[prost(message, optional, tag = "1")]
@@ -17,6 +18,7 @@ pub struct BaseVestingAccount {
 }
 /// ContinuousVestingAccount implements the VestingAccount interface. It
 /// continuously vests by unlocking coins linearly with respect to time.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ContinuousVestingAccount {
     #[prost(message, optional, tag = "1")]
@@ -28,12 +30,14 @@ pub struct ContinuousVestingAccount {
 /// DelayedVestingAccount implements the VestingAccount interface. It vests all
 /// coins after a specific time, but non prior. In other words, it keeps them
 /// locked until a specified time.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DelayedVestingAccount {
     #[prost(message, optional, tag = "1")]
     pub base_vesting_account: ::core::option::Option<BaseVestingAccount>,
 }
 /// Period defines a length of time and amount of coins that will vest.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Period {
     /// Period duration in seconds.
@@ -44,6 +48,7 @@ pub struct Period {
 }
 /// PeriodicVestingAccount implements the VestingAccount interface. It
 /// periodically vests by unlocking coins during each specified period.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct PeriodicVestingAccount {
     #[prost(message, optional, tag = "1")]
@@ -58,6 +63,7 @@ pub struct PeriodicVestingAccount {
 /// still be used for delegating and for governance votes even while locked.
 ///
 /// Since: cosmos-sdk 0.43
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct PermanentLockedAccount {
     #[prost(message, optional, tag = "1")]
@@ -65,6 +71,7 @@ pub struct PermanentLockedAccount {
 }
 /// MsgCreateVestingAccount defines a message that enables creating a vesting
 /// account.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgCreateVestingAccount {
     #[prost(string, tag = "1")]
@@ -80,12 +87,14 @@ pub struct MsgCreateVestingAccount {
     pub delayed: bool,
 }
 /// MsgCreateVestingAccountResponse defines the Msg/CreateVestingAccount response type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgCreateVestingAccountResponse {}
 /// MsgCreatePermanentLockedAccount defines a message that enables creating a permanent
 /// locked account.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgCreatePermanentLockedAccount {
     #[prost(string, tag = "1")]
@@ -98,12 +107,14 @@ pub struct MsgCreatePermanentLockedAccount {
 /// MsgCreatePermanentLockedAccountResponse defines the Msg/CreatePermanentLockedAccount response type.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgCreatePermanentLockedAccountResponse {}
 /// MsgCreateVestingAccount defines a message that enables creating a vesting
 /// account.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgCreatePeriodicVestingAccount {
     #[prost(string, tag = "1")]
@@ -120,6 +131,7 @@ pub struct MsgCreatePeriodicVestingAccount {
 /// response type.
 ///
 /// Since: cosmos-sdk 0.46
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgCreatePeriodicVestingAccountResponse {}
 include!("cosmos.vesting.v1beta1.tonic.rs");
diff --git a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos_proto.rs b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos_proto.rs
index a74f2b1e..29320227 100644
--- a/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos_proto.rs
+++ b/cosmos-sdk-proto/src/prost/cosmos-sdk/cosmos_proto.rs
@@ -1,6 +1,7 @@
 // @generated
 /// InterfaceDescriptor describes an interface type to be used with
 /// accepts_interface and implements_interface and declared by declare_interface.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct InterfaceDescriptor {
     /// name is the name of the interface. It should be a short-name (without
@@ -21,6 +22,7 @@ pub struct InterfaceDescriptor {
 /// Scalars should ideally define an encoding such that there is only one
 /// valid syntactical representation for a given semantic meaning,
 /// i.e. the encoding should be deterministic.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ScalarDescriptor {
     /// name is the name of the scalar. It should be a short-name (without
@@ -60,5 +62,14 @@ impl ScalarType {
             ScalarType::Bytes => "SCALAR_TYPE_BYTES",
         }
     }
+    /// Creates an enum from field names used in the ProtoBuf definition.
+    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+        match value {
+            "SCALAR_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
+            "SCALAR_TYPE_STRING" => Some(Self::String),
+            "SCALAR_TYPE_BYTES" => Some(Self::Bytes),
+            _ => None,
+        }
+    }
 }
 // @@protoc_insertion_point(module)
diff --git a/cosmos-sdk-proto/src/prost/ibc-go/cosmos.auth.v1beta1.rs b/cosmos-sdk-proto/src/prost/ibc-go/cosmos.auth.v1beta1.rs
index 35d4edb8..272e77e9 100644
--- a/cosmos-sdk-proto/src/prost/ibc-go/cosmos.auth.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/ibc-go/cosmos.auth.v1beta1.rs
@@ -1,3 +1,4 @@
+// This file is @generated by prost-build.
 /// BaseAccount defines a base account type. It contains all the necessary fields
 /// for basic account functionality. Any custom account type should extend this
 /// type for additional functionality (e.g. vesting).
@@ -7,7 +8,7 @@ pub struct BaseAccount {
     #[prost(string, tag = "1")]
     pub address: ::prost::alloc::string::String,
     #[prost(message, optional, tag = "2")]
-    pub pub_key: ::core::option::Option<::prost_types::Any>,
+    pub pub_key: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     #[prost(uint64, tag = "3")]
     pub account_number: u64,
     #[prost(uint64, tag = "4")]
@@ -17,7 +18,10 @@ impl ::prost::Name for BaseAccount {
     const NAME: &'static str = "BaseAccount";
     const PACKAGE: &'static str = "cosmos.auth.v1beta1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("cosmos.auth.v1beta1.{}", Self::NAME)
+        "cosmos.auth.v1beta1.BaseAccount".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/cosmos.auth.v1beta1.BaseAccount".into()
     }
 }
 /// ModuleAccount defines an account for modules that holds coins on a pool.
@@ -35,12 +39,15 @@ impl ::prost::Name for ModuleAccount {
     const NAME: &'static str = "ModuleAccount";
     const PACKAGE: &'static str = "cosmos.auth.v1beta1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("cosmos.auth.v1beta1.{}", Self::NAME)
+        "cosmos.auth.v1beta1.ModuleAccount".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/cosmos.auth.v1beta1.ModuleAccount".into()
     }
 }
 /// Params defines the parameters for the auth module.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct Params {
     #[prost(uint64, tag = "1")]
     pub max_memo_characters: u64,
@@ -57,6 +64,9 @@ impl ::prost::Name for Params {
     const NAME: &'static str = "Params";
     const PACKAGE: &'static str = "cosmos.auth.v1beta1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("cosmos.auth.v1beta1.{}", Self::NAME)
+        "cosmos.auth.v1beta1.Params".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/cosmos.auth.v1beta1.Params".into()
     }
 }
diff --git a/cosmos-sdk-proto/src/prost/ibc-go/cosmos.base.query.v1beta1.rs b/cosmos-sdk-proto/src/prost/ibc-go/cosmos.base.query.v1beta1.rs
index 58314ebc..67f3f8c6 100644
--- a/cosmos-sdk-proto/src/prost/ibc-go/cosmos.base.query.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/ibc-go/cosmos.base.query.v1beta1.rs
@@ -1,3 +1,4 @@
+// This file is @generated by prost-build.
 /// PageRequest is to be embedded in gRPC request messages for efficient
 /// pagination. Ex:
 ///
@@ -33,7 +34,10 @@ impl ::prost::Name for PageRequest {
     const NAME: &'static str = "PageRequest";
     const PACKAGE: &'static str = "cosmos.base.query.v1beta1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("cosmos.base.query.v1beta1.{}", Self::NAME)
+        "cosmos.base.query.v1beta1.PageRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/cosmos.base.query.v1beta1.PageRequest".into()
     }
 }
 /// PageResponse is to be embedded in gRPC response messages where the
@@ -59,6 +63,9 @@ impl ::prost::Name for PageResponse {
     const NAME: &'static str = "PageResponse";
     const PACKAGE: &'static str = "cosmos.base.query.v1beta1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("cosmos.base.query.v1beta1.{}", Self::NAME)
+        "cosmos.base.query.v1beta1.PageResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/cosmos.base.query.v1beta1.PageResponse".into()
     }
 }
diff --git a/cosmos-sdk-proto/src/prost/ibc-go/cosmos.base.v1beta1.rs b/cosmos-sdk-proto/src/prost/ibc-go/cosmos.base.v1beta1.rs
index e3497310..057afb09 100644
--- a/cosmos-sdk-proto/src/prost/ibc-go/cosmos.base.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/ibc-go/cosmos.base.v1beta1.rs
@@ -1,3 +1,4 @@
+// This file is @generated by prost-build.
 /// Coin defines a token with a denomination and an amount.
 ///
 /// NOTE: The amount field is an Int which implements the custom method
@@ -14,7 +15,10 @@ impl ::prost::Name for Coin {
     const NAME: &'static str = "Coin";
     const PACKAGE: &'static str = "cosmos.base.v1beta1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("cosmos.base.v1beta1.{}", Self::NAME)
+        "cosmos.base.v1beta1.Coin".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/cosmos.base.v1beta1.Coin".into()
     }
 }
 /// DecCoin defines a token with a denomination and a decimal amount.
@@ -33,7 +37,10 @@ impl ::prost::Name for DecCoin {
     const NAME: &'static str = "DecCoin";
     const PACKAGE: &'static str = "cosmos.base.v1beta1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("cosmos.base.v1beta1.{}", Self::NAME)
+        "cosmos.base.v1beta1.DecCoin".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/cosmos.base.v1beta1.DecCoin".into()
     }
 }
 /// IntProto defines a Protobuf wrapper around an Int object.
@@ -47,7 +54,10 @@ impl ::prost::Name for IntProto {
     const NAME: &'static str = "IntProto";
     const PACKAGE: &'static str = "cosmos.base.v1beta1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("cosmos.base.v1beta1.{}", Self::NAME)
+        "cosmos.base.v1beta1.IntProto".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/cosmos.base.v1beta1.IntProto".into()
     }
 }
 /// DecProto defines a Protobuf wrapper around a Dec object.
@@ -61,6 +71,9 @@ impl ::prost::Name for DecProto {
     const NAME: &'static str = "DecProto";
     const PACKAGE: &'static str = "cosmos.base.v1beta1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("cosmos.base.v1beta1.{}", Self::NAME)
+        "cosmos.base.v1beta1.DecProto".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/cosmos.base.v1beta1.DecProto".into()
     }
 }
diff --git a/cosmos-sdk-proto/src/prost/ibc-go/cosmos.upgrade.v1beta1.rs b/cosmos-sdk-proto/src/prost/ibc-go/cosmos.upgrade.v1beta1.rs
index dd2af2f7..4761274d 100644
--- a/cosmos-sdk-proto/src/prost/ibc-go/cosmos.upgrade.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/ibc-go/cosmos.upgrade.v1beta1.rs
@@ -1,3 +1,4 @@
+// This file is @generated by prost-build.
 /// Plan specifies information about a planned upgrade and when it should occur.
 #[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
@@ -14,7 +15,7 @@ pub struct Plan {
     /// The time after which the upgrade must be performed.
     /// Leave set to its zero value to use a pre-defined Height instead.
     #[prost(message, optional, tag = "2")]
-    pub time: ::core::option::Option<::prost_types::Timestamp>,
+    pub time: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
     /// The height at which the upgrade must be performed.
     /// Only used if Time is not set.
     #[prost(int64, tag = "3")]
@@ -28,7 +29,10 @@ impl ::prost::Name for Plan {
     const NAME: &'static str = "Plan";
     const PACKAGE: &'static str = "cosmos.upgrade.v1beta1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("cosmos.upgrade.v1beta1.{}", Self::NAME)
+        "cosmos.upgrade.v1beta1.Plan".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/cosmos.upgrade.v1beta1.Plan".into()
     }
 }
 /// SoftwareUpgradeProposal is a gov Content type for initiating a software
@@ -47,7 +51,10 @@ impl ::prost::Name for SoftwareUpgradeProposal {
     const NAME: &'static str = "SoftwareUpgradeProposal";
     const PACKAGE: &'static str = "cosmos.upgrade.v1beta1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("cosmos.upgrade.v1beta1.{}", Self::NAME)
+        "cosmos.upgrade.v1beta1.SoftwareUpgradeProposal".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/cosmos.upgrade.v1beta1.SoftwareUpgradeProposal".into()
     }
 }
 /// CancelSoftwareUpgradeProposal is a gov Content type for cancelling a software
@@ -64,6 +71,9 @@ impl ::prost::Name for CancelSoftwareUpgradeProposal {
     const NAME: &'static str = "CancelSoftwareUpgradeProposal";
     const PACKAGE: &'static str = "cosmos.upgrade.v1beta1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("cosmos.upgrade.v1beta1.{}", Self::NAME)
+        "cosmos.upgrade.v1beta1.CancelSoftwareUpgradeProposal".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/cosmos.upgrade.v1beta1.CancelSoftwareUpgradeProposal".into()
     }
 }
diff --git a/cosmos-sdk-proto/src/prost/ibc-go/ibc.applications.interchain_accounts.controller.v1.rs b/cosmos-sdk-proto/src/prost/ibc-go/ibc.applications.interchain_accounts.controller.v1.rs
index fc059366..9c803a1c 100644
--- a/cosmos-sdk-proto/src/prost/ibc-go/ibc.applications.interchain_accounts.controller.v1.rs
+++ b/cosmos-sdk-proto/src/prost/ibc-go/ibc.applications.interchain_accounts.controller.v1.rs
@@ -1,7 +1,8 @@
+// This file is @generated by prost-build.
 /// Params defines the set of on-chain interchain accounts parameters.
 /// The following parameters may be used to disable the controller submodule.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct Params {
     /// controller_enabled enables or disables the controller submodule.
     #[prost(bool, tag = "1")]
@@ -11,29 +12,29 @@ impl ::prost::Name for Params {
     const NAME: &'static str = "Params";
     const PACKAGE: &'static str = "ibc.applications.interchain_accounts.controller.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!(
-            "ibc.applications.interchain_accounts.controller.v1.{}",
-            Self::NAME
-        )
+        "ibc.applications.interchain_accounts.controller.v1.Params".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.interchain_accounts.controller.v1.Params".into()
     }
 }
 /// QueryParamsRequest is the request type for the Query/Params RPC method.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct QueryParamsRequest {}
 impl ::prost::Name for QueryParamsRequest {
     const NAME: &'static str = "QueryParamsRequest";
     const PACKAGE: &'static str = "ibc.applications.interchain_accounts.controller.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!(
-            "ibc.applications.interchain_accounts.controller.v1.{}",
-            Self::NAME
-        )
+        "ibc.applications.interchain_accounts.controller.v1.QueryParamsRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.interchain_accounts.controller.v1.QueryParamsRequest".into()
     }
 }
 /// QueryParamsResponse is the response type for the Query/Params RPC method.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct QueryParamsResponse {
     /// params defines the parameters of the module.
     #[prost(message, optional, tag = "1")]
@@ -43,10 +44,10 @@ impl ::prost::Name for QueryParamsResponse {
     const NAME: &'static str = "QueryParamsResponse";
     const PACKAGE: &'static str = "ibc.applications.interchain_accounts.controller.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!(
-            "ibc.applications.interchain_accounts.controller.v1.{}",
-            Self::NAME
-        )
+        "ibc.applications.interchain_accounts.controller.v1.QueryParamsResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.interchain_accounts.controller.v1.QueryParamsResponse".into()
     }
 }
 /// Generated client implementations.
diff --git a/cosmos-sdk-proto/src/prost/ibc-go/ibc.applications.interchain_accounts.host.v1.rs b/cosmos-sdk-proto/src/prost/ibc-go/ibc.applications.interchain_accounts.host.v1.rs
index 4ce4090c..e06818ed 100644
--- a/cosmos-sdk-proto/src/prost/ibc-go/ibc.applications.interchain_accounts.host.v1.rs
+++ b/cosmos-sdk-proto/src/prost/ibc-go/ibc.applications.interchain_accounts.host.v1.rs
@@ -1,3 +1,4 @@
+// This file is @generated by prost-build.
 /// Params defines the set of on-chain interchain accounts parameters.
 /// The following parameters may be used to disable the host submodule.
 #[allow(clippy::derive_partial_eq_without_eq)]
@@ -14,24 +15,24 @@ impl ::prost::Name for Params {
     const NAME: &'static str = "Params";
     const PACKAGE: &'static str = "ibc.applications.interchain_accounts.host.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!(
-            "ibc.applications.interchain_accounts.host.v1.{}",
-            Self::NAME
-        )
+        "ibc.applications.interchain_accounts.host.v1.Params".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.interchain_accounts.host.v1.Params".into()
     }
 }
 /// QueryParamsRequest is the request type for the Query/Params RPC method.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct QueryParamsRequest {}
 impl ::prost::Name for QueryParamsRequest {
     const NAME: &'static str = "QueryParamsRequest";
     const PACKAGE: &'static str = "ibc.applications.interchain_accounts.host.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!(
-            "ibc.applications.interchain_accounts.host.v1.{}",
-            Self::NAME
-        )
+        "ibc.applications.interchain_accounts.host.v1.QueryParamsRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.interchain_accounts.host.v1.QueryParamsRequest".into()
     }
 }
 /// QueryParamsResponse is the response type for the Query/Params RPC method.
@@ -46,10 +47,10 @@ impl ::prost::Name for QueryParamsResponse {
     const NAME: &'static str = "QueryParamsResponse";
     const PACKAGE: &'static str = "ibc.applications.interchain_accounts.host.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!(
-            "ibc.applications.interchain_accounts.host.v1.{}",
-            Self::NAME
-        )
+        "ibc.applications.interchain_accounts.host.v1.QueryParamsResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.interchain_accounts.host.v1.QueryParamsResponse".into()
     }
 }
 /// Generated client implementations.
diff --git a/cosmos-sdk-proto/src/prost/ibc-go/ibc.applications.interchain_accounts.v1.rs b/cosmos-sdk-proto/src/prost/ibc-go/ibc.applications.interchain_accounts.v1.rs
index fa4a0ef3..5c5ccf17 100644
--- a/cosmos-sdk-proto/src/prost/ibc-go/ibc.applications.interchain_accounts.v1.rs
+++ b/cosmos-sdk-proto/src/prost/ibc-go/ibc.applications.interchain_accounts.v1.rs
@@ -1,3 +1,4 @@
+// This file is @generated by prost-build.
 /// An InterchainAccount is defined as a BaseAccount & the address of the account owner on the controller chain
 #[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
@@ -12,7 +13,10 @@ impl ::prost::Name for InterchainAccount {
     const NAME: &'static str = "InterchainAccount";
     const PACKAGE: &'static str = "ibc.applications.interchain_accounts.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.applications.interchain_accounts.v1.{}", Self::NAME)
+        "ibc.applications.interchain_accounts.v1.InterchainAccount".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.interchain_accounts.v1.InterchainAccount".into()
     }
 }
 /// InterchainAccountPacketData is comprised of a raw transaction, type of transaction and optional memo field.
@@ -30,7 +34,10 @@ impl ::prost::Name for InterchainAccountPacketData {
     const NAME: &'static str = "InterchainAccountPacketData";
     const PACKAGE: &'static str = "ibc.applications.interchain_accounts.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.applications.interchain_accounts.v1.{}", Self::NAME)
+        "ibc.applications.interchain_accounts.v1.InterchainAccountPacketData".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.interchain_accounts.v1.InterchainAccountPacketData".into()
     }
 }
 /// CosmosTx contains a list of sdk.Msg's. It should be used when sending transactions to an SDK host chain.
@@ -38,13 +45,16 @@ impl ::prost::Name for InterchainAccountPacketData {
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CosmosTx {
     #[prost(message, repeated, tag = "1")]
-    pub messages: ::prost::alloc::vec::Vec<::prost_types::Any>,
+    pub messages: ::prost::alloc::vec::Vec<::tendermint_proto::google::protobuf::Any>,
 }
 impl ::prost::Name for CosmosTx {
     const NAME: &'static str = "CosmosTx";
     const PACKAGE: &'static str = "ibc.applications.interchain_accounts.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.applications.interchain_accounts.v1.{}", Self::NAME)
+        "ibc.applications.interchain_accounts.v1.CosmosTx".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.interchain_accounts.v1.CosmosTx".into()
     }
 }
 /// Type defines a classification of message issued from a controller chain to its associated interchain accounts
@@ -106,7 +116,10 @@ impl ::prost::Name for Metadata {
     const NAME: &'static str = "Metadata";
     const PACKAGE: &'static str = "ibc.applications.interchain_accounts.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.applications.interchain_accounts.v1.{}", Self::NAME)
+        "ibc.applications.interchain_accounts.v1.Metadata".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.interchain_accounts.v1.Metadata".into()
     }
 }
 /// GenesisState defines the interchain accounts genesis state
@@ -122,7 +135,10 @@ impl ::prost::Name for GenesisState {
     const NAME: &'static str = "GenesisState";
     const PACKAGE: &'static str = "ibc.applications.interchain_accounts.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.applications.interchain_accounts.v1.{}", Self::NAME)
+        "ibc.applications.interchain_accounts.v1.GenesisState".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.interchain_accounts.v1.GenesisState".into()
     }
 }
 /// ControllerGenesisState defines the interchain accounts controller genesis state
@@ -142,7 +158,10 @@ impl ::prost::Name for ControllerGenesisState {
     const NAME: &'static str = "ControllerGenesisState";
     const PACKAGE: &'static str = "ibc.applications.interchain_accounts.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.applications.interchain_accounts.v1.{}", Self::NAME)
+        "ibc.applications.interchain_accounts.v1.ControllerGenesisState".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.interchain_accounts.v1.ControllerGenesisState".into()
     }
 }
 /// HostGenesisState defines the interchain accounts host genesis state
@@ -162,7 +181,10 @@ impl ::prost::Name for HostGenesisState {
     const NAME: &'static str = "HostGenesisState";
     const PACKAGE: &'static str = "ibc.applications.interchain_accounts.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.applications.interchain_accounts.v1.{}", Self::NAME)
+        "ibc.applications.interchain_accounts.v1.HostGenesisState".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.interchain_accounts.v1.HostGenesisState".into()
     }
 }
 /// ActiveChannel contains a connection ID, port ID and associated active channel ID
@@ -180,7 +202,10 @@ impl ::prost::Name for ActiveChannel {
     const NAME: &'static str = "ActiveChannel";
     const PACKAGE: &'static str = "ibc.applications.interchain_accounts.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.applications.interchain_accounts.v1.{}", Self::NAME)
+        "ibc.applications.interchain_accounts.v1.ActiveChannel".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.interchain_accounts.v1.ActiveChannel".into()
     }
 }
 /// RegisteredInterchainAccount contains a connection ID, port ID and associated interchain account address
@@ -198,6 +223,9 @@ impl ::prost::Name for RegisteredInterchainAccount {
     const NAME: &'static str = "RegisteredInterchainAccount";
     const PACKAGE: &'static str = "ibc.applications.interchain_accounts.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.applications.interchain_accounts.v1.{}", Self::NAME)
+        "ibc.applications.interchain_accounts.v1.RegisteredInterchainAccount".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.interchain_accounts.v1.RegisteredInterchainAccount".into()
     }
 }
diff --git a/cosmos-sdk-proto/src/prost/ibc-go/ibc.applications.transfer.v1.rs b/cosmos-sdk-proto/src/prost/ibc-go/ibc.applications.transfer.v1.rs
index 7bd0ad00..757758f3 100644
--- a/cosmos-sdk-proto/src/prost/ibc-go/ibc.applications.transfer.v1.rs
+++ b/cosmos-sdk-proto/src/prost/ibc-go/ibc.applications.transfer.v1.rs
@@ -1,3 +1,4 @@
+// This file is @generated by prost-build.
 /// MsgTransfer defines a msg to transfer fungible tokens (i.e Coins) between
 /// ICS20 enabled chains. See ICS Spec here:
 /// <https://github.com/cosmos/ibc/tree/master/spec/app/ics-020-fungible-token-transfer#data-structures>
@@ -32,18 +33,24 @@ impl ::prost::Name for MsgTransfer {
     const NAME: &'static str = "MsgTransfer";
     const PACKAGE: &'static str = "ibc.applications.transfer.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.applications.transfer.v1.{}", Self::NAME)
+        "ibc.applications.transfer.v1.MsgTransfer".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.transfer.v1.MsgTransfer".into()
     }
 }
 /// MsgTransferResponse defines the Msg/Transfer response type.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct MsgTransferResponse {}
 impl ::prost::Name for MsgTransferResponse {
     const NAME: &'static str = "MsgTransferResponse";
     const PACKAGE: &'static str = "ibc.applications.transfer.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.applications.transfer.v1.{}", Self::NAME)
+        "ibc.applications.transfer.v1.MsgTransferResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.transfer.v1.MsgTransferResponse".into()
     }
 }
 /// Generated client implementations.
@@ -171,7 +178,10 @@ impl ::prost::Name for DenomTrace {
     const NAME: &'static str = "DenomTrace";
     const PACKAGE: &'static str = "ibc.applications.transfer.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.applications.transfer.v1.{}", Self::NAME)
+        "ibc.applications.transfer.v1.DenomTrace".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.transfer.v1.DenomTrace".into()
     }
 }
 /// Params defines the set of IBC transfer parameters.
@@ -179,7 +189,7 @@ impl ::prost::Name for DenomTrace {
 /// TransfersEnabled parameter to true and then set the bank module's SendEnabled
 /// parameter for the denomination to false.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct Params {
     /// send_enabled enables or disables all cross-chain token transfers from this
     /// chain.
@@ -194,7 +204,10 @@ impl ::prost::Name for Params {
     const NAME: &'static str = "Params";
     const PACKAGE: &'static str = "ibc.applications.transfer.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.applications.transfer.v1.{}", Self::NAME)
+        "ibc.applications.transfer.v1.Params".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.transfer.v1.Params".into()
     }
 }
 /// QueryDenomTraceRequest is the request type for the Query/DenomTrace RPC
@@ -210,7 +223,10 @@ impl ::prost::Name for QueryDenomTraceRequest {
     const NAME: &'static str = "QueryDenomTraceRequest";
     const PACKAGE: &'static str = "ibc.applications.transfer.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.applications.transfer.v1.{}", Self::NAME)
+        "ibc.applications.transfer.v1.QueryDenomTraceRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.transfer.v1.QueryDenomTraceRequest".into()
     }
 }
 /// QueryDenomTraceResponse is the response type for the Query/DenomTrace RPC
@@ -226,7 +242,10 @@ impl ::prost::Name for QueryDenomTraceResponse {
     const NAME: &'static str = "QueryDenomTraceResponse";
     const PACKAGE: &'static str = "ibc.applications.transfer.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.applications.transfer.v1.{}", Self::NAME)
+        "ibc.applications.transfer.v1.QueryDenomTraceResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.transfer.v1.QueryDenomTraceResponse".into()
     }
 }
 /// QueryConnectionsRequest is the request type for the Query/DenomTraces RPC
@@ -244,7 +263,10 @@ impl ::prost::Name for QueryDenomTracesRequest {
     const NAME: &'static str = "QueryDenomTracesRequest";
     const PACKAGE: &'static str = "ibc.applications.transfer.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.applications.transfer.v1.{}", Self::NAME)
+        "ibc.applications.transfer.v1.QueryDenomTracesRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.transfer.v1.QueryDenomTracesRequest".into()
     }
 }
 /// QueryConnectionsResponse is the response type for the Query/DenomTraces RPC
@@ -265,23 +287,29 @@ impl ::prost::Name for QueryDenomTracesResponse {
     const NAME: &'static str = "QueryDenomTracesResponse";
     const PACKAGE: &'static str = "ibc.applications.transfer.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.applications.transfer.v1.{}", Self::NAME)
+        "ibc.applications.transfer.v1.QueryDenomTracesResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.transfer.v1.QueryDenomTracesResponse".into()
     }
 }
 /// QueryParamsRequest is the request type for the Query/Params RPC method.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct QueryParamsRequest {}
 impl ::prost::Name for QueryParamsRequest {
     const NAME: &'static str = "QueryParamsRequest";
     const PACKAGE: &'static str = "ibc.applications.transfer.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.applications.transfer.v1.{}", Self::NAME)
+        "ibc.applications.transfer.v1.QueryParamsRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.transfer.v1.QueryParamsRequest".into()
     }
 }
 /// QueryParamsResponse is the response type for the Query/Params RPC method.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct QueryParamsResponse {
     /// params defines the parameters of the module.
     #[prost(message, optional, tag = "1")]
@@ -291,7 +319,10 @@ impl ::prost::Name for QueryParamsResponse {
     const NAME: &'static str = "QueryParamsResponse";
     const PACKAGE: &'static str = "ibc.applications.transfer.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.applications.transfer.v1.{}", Self::NAME)
+        "ibc.applications.transfer.v1.QueryParamsResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.transfer.v1.QueryParamsResponse".into()
     }
 }
 /// QueryDenomHashRequest is the request type for the Query/DenomHash RPC
@@ -307,7 +338,10 @@ impl ::prost::Name for QueryDenomHashRequest {
     const NAME: &'static str = "QueryDenomHashRequest";
     const PACKAGE: &'static str = "ibc.applications.transfer.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.applications.transfer.v1.{}", Self::NAME)
+        "ibc.applications.transfer.v1.QueryDenomHashRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.transfer.v1.QueryDenomHashRequest".into()
     }
 }
 /// QueryDenomHashResponse is the response type for the Query/DenomHash RPC
@@ -323,7 +357,10 @@ impl ::prost::Name for QueryDenomHashResponse {
     const NAME: &'static str = "QueryDenomHashResponse";
     const PACKAGE: &'static str = "ibc.applications.transfer.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.applications.transfer.v1.{}", Self::NAME)
+        "ibc.applications.transfer.v1.QueryDenomHashResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.transfer.v1.QueryDenomHashResponse".into()
     }
 }
 /// Generated client implementations.
@@ -521,6 +558,9 @@ impl ::prost::Name for GenesisState {
     const NAME: &'static str = "GenesisState";
     const PACKAGE: &'static str = "ibc.applications.transfer.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.applications.transfer.v1.{}", Self::NAME)
+        "ibc.applications.transfer.v1.GenesisState".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.transfer.v1.GenesisState".into()
     }
 }
diff --git a/cosmos-sdk-proto/src/prost/ibc-go/ibc.applications.transfer.v2.rs b/cosmos-sdk-proto/src/prost/ibc-go/ibc.applications.transfer.v2.rs
index a7024f2f..16f58976 100644
--- a/cosmos-sdk-proto/src/prost/ibc-go/ibc.applications.transfer.v2.rs
+++ b/cosmos-sdk-proto/src/prost/ibc-go/ibc.applications.transfer.v2.rs
@@ -1,3 +1,4 @@
+// This file is @generated by prost-build.
 /// FungibleTokenPacketData defines a struct for the packet payload
 /// See FungibleTokenPacketData spec:
 /// <https://github.com/cosmos/ibc/tree/master/spec/app/ics-020-fungible-token-transfer#data-structures>
@@ -21,6 +22,9 @@ impl ::prost::Name for FungibleTokenPacketData {
     const NAME: &'static str = "FungibleTokenPacketData";
     const PACKAGE: &'static str = "ibc.applications.transfer.v2";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.applications.transfer.v2.{}", Self::NAME)
+        "ibc.applications.transfer.v2.FungibleTokenPacketData".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.applications.transfer.v2.FungibleTokenPacketData".into()
     }
 }
diff --git a/cosmos-sdk-proto/src/prost/ibc-go/ibc.core.channel.v1.rs b/cosmos-sdk-proto/src/prost/ibc-go/ibc.core.channel.v1.rs
index ae0e4254..ba965aa4 100644
--- a/cosmos-sdk-proto/src/prost/ibc-go/ibc.core.channel.v1.rs
+++ b/cosmos-sdk-proto/src/prost/ibc-go/ibc.core.channel.v1.rs
@@ -1,3 +1,4 @@
+// This file is @generated by prost-build.
 /// Channel defines pipeline for exactly-once packet delivery between specific
 /// modules on separate blockchains, which has at least one end capable of
 /// sending packets and one end capable of receiving packets.
@@ -25,7 +26,10 @@ impl ::prost::Name for Channel {
     const NAME: &'static str = "Channel";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.Channel".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.Channel".into()
     }
 }
 /// IdentifiedChannel defines a channel with additional port and channel
@@ -60,7 +64,10 @@ impl ::prost::Name for IdentifiedChannel {
     const NAME: &'static str = "IdentifiedChannel";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.IdentifiedChannel".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.IdentifiedChannel".into()
     }
 }
 /// Counterparty defines a channel end counterparty
@@ -78,7 +85,10 @@ impl ::prost::Name for Counterparty {
     const NAME: &'static str = "Counterparty";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.Counterparty".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.Counterparty".into()
     }
 }
 /// Packet defines a type that carries data across different chains through IBC
@@ -116,7 +126,10 @@ impl ::prost::Name for Packet {
     const NAME: &'static str = "Packet";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.Packet".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.Packet".into()
     }
 }
 /// PacketState defines the generic type necessary to retrieve and store
@@ -143,7 +156,10 @@ impl ::prost::Name for PacketState {
     const NAME: &'static str = "PacketState";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.PacketState".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.PacketState".into()
     }
 }
 /// Acknowledgement is the recommended acknowledgement format to be used by
@@ -176,7 +192,10 @@ impl ::prost::Name for Acknowledgement {
     const NAME: &'static str = "Acknowledgement";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.Acknowledgement".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.Acknowledgement".into()
     }
 }
 /// State defines if a channel is in one of the following states:
@@ -273,7 +292,10 @@ impl ::prost::Name for MsgChannelOpenInit {
     const NAME: &'static str = "MsgChannelOpenInit";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.MsgChannelOpenInit".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.MsgChannelOpenInit".into()
     }
 }
 /// MsgChannelOpenInitResponse defines the Msg/ChannelOpenInit response type.
@@ -287,7 +309,10 @@ impl ::prost::Name for MsgChannelOpenInitResponse {
     const NAME: &'static str = "MsgChannelOpenInitResponse";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.MsgChannelOpenInitResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.MsgChannelOpenInitResponse".into()
     }
 }
 /// MsgChannelOpenInit defines a msg sent by a Relayer to try to open a channel
@@ -318,18 +343,24 @@ impl ::prost::Name for MsgChannelOpenTry {
     const NAME: &'static str = "MsgChannelOpenTry";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.MsgChannelOpenTry".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.MsgChannelOpenTry".into()
     }
 }
 /// MsgChannelOpenTryResponse defines the Msg/ChannelOpenTry response type.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct MsgChannelOpenTryResponse {}
 impl ::prost::Name for MsgChannelOpenTryResponse {
     const NAME: &'static str = "MsgChannelOpenTryResponse";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.MsgChannelOpenTryResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.MsgChannelOpenTryResponse".into()
     }
 }
 /// MsgChannelOpenAck defines a msg sent by a Relayer to Chain A to acknowledge
@@ -356,18 +387,24 @@ impl ::prost::Name for MsgChannelOpenAck {
     const NAME: &'static str = "MsgChannelOpenAck";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.MsgChannelOpenAck".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.MsgChannelOpenAck".into()
     }
 }
 /// MsgChannelOpenAckResponse defines the Msg/ChannelOpenAck response type.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct MsgChannelOpenAckResponse {}
 impl ::prost::Name for MsgChannelOpenAckResponse {
     const NAME: &'static str = "MsgChannelOpenAckResponse";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.MsgChannelOpenAckResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.MsgChannelOpenAckResponse".into()
     }
 }
 /// MsgChannelOpenConfirm defines a msg sent by a Relayer to Chain B to
@@ -390,19 +427,25 @@ impl ::prost::Name for MsgChannelOpenConfirm {
     const NAME: &'static str = "MsgChannelOpenConfirm";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.MsgChannelOpenConfirm".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.MsgChannelOpenConfirm".into()
     }
 }
 /// MsgChannelOpenConfirmResponse defines the Msg/ChannelOpenConfirm response
 /// type.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct MsgChannelOpenConfirmResponse {}
 impl ::prost::Name for MsgChannelOpenConfirmResponse {
     const NAME: &'static str = "MsgChannelOpenConfirmResponse";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.MsgChannelOpenConfirmResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.MsgChannelOpenConfirmResponse".into()
     }
 }
 /// MsgChannelCloseInit defines a msg sent by a Relayer to Chain A
@@ -421,18 +464,24 @@ impl ::prost::Name for MsgChannelCloseInit {
     const NAME: &'static str = "MsgChannelCloseInit";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.MsgChannelCloseInit".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.MsgChannelCloseInit".into()
     }
 }
 /// MsgChannelCloseInitResponse defines the Msg/ChannelCloseInit response type.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct MsgChannelCloseInitResponse {}
 impl ::prost::Name for MsgChannelCloseInitResponse {
     const NAME: &'static str = "MsgChannelCloseInitResponse";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.MsgChannelCloseInitResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.MsgChannelCloseInitResponse".into()
     }
 }
 /// MsgChannelCloseConfirm defines a msg sent by a Relayer to Chain B
@@ -455,19 +504,25 @@ impl ::prost::Name for MsgChannelCloseConfirm {
     const NAME: &'static str = "MsgChannelCloseConfirm";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.MsgChannelCloseConfirm".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.MsgChannelCloseConfirm".into()
     }
 }
 /// MsgChannelCloseConfirmResponse defines the Msg/ChannelCloseConfirm response
 /// type.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct MsgChannelCloseConfirmResponse {}
 impl ::prost::Name for MsgChannelCloseConfirmResponse {
     const NAME: &'static str = "MsgChannelCloseConfirmResponse";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.MsgChannelCloseConfirmResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.MsgChannelCloseConfirmResponse".into()
     }
 }
 /// MsgRecvPacket receives incoming IBC packet
@@ -487,12 +542,15 @@ impl ::prost::Name for MsgRecvPacket {
     const NAME: &'static str = "MsgRecvPacket";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.MsgRecvPacket".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.MsgRecvPacket".into()
     }
 }
 /// MsgRecvPacketResponse defines the Msg/RecvPacket response type.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct MsgRecvPacketResponse {
     #[prost(enumeration = "ResponseResultType", tag = "1")]
     pub result: i32,
@@ -501,7 +559,10 @@ impl ::prost::Name for MsgRecvPacketResponse {
     const NAME: &'static str = "MsgRecvPacketResponse";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.MsgRecvPacketResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.MsgRecvPacketResponse".into()
     }
 }
 /// MsgTimeout receives timed-out packet
@@ -523,12 +584,15 @@ impl ::prost::Name for MsgTimeout {
     const NAME: &'static str = "MsgTimeout";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.MsgTimeout".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.MsgTimeout".into()
     }
 }
 /// MsgTimeoutResponse defines the Msg/Timeout response type.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct MsgTimeoutResponse {
     #[prost(enumeration = "ResponseResultType", tag = "1")]
     pub result: i32,
@@ -537,7 +601,10 @@ impl ::prost::Name for MsgTimeoutResponse {
     const NAME: &'static str = "MsgTimeoutResponse";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.MsgTimeoutResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.MsgTimeoutResponse".into()
     }
 }
 /// MsgTimeoutOnClose timed-out packet upon counterparty channel closure.
@@ -561,12 +628,15 @@ impl ::prost::Name for MsgTimeoutOnClose {
     const NAME: &'static str = "MsgTimeoutOnClose";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.MsgTimeoutOnClose".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.MsgTimeoutOnClose".into()
     }
 }
 /// MsgTimeoutOnCloseResponse defines the Msg/TimeoutOnClose response type.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct MsgTimeoutOnCloseResponse {
     #[prost(enumeration = "ResponseResultType", tag = "1")]
     pub result: i32,
@@ -575,7 +645,10 @@ impl ::prost::Name for MsgTimeoutOnCloseResponse {
     const NAME: &'static str = "MsgTimeoutOnCloseResponse";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.MsgTimeoutOnCloseResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.MsgTimeoutOnCloseResponse".into()
     }
 }
 /// MsgAcknowledgement receives incoming IBC acknowledgement
@@ -597,12 +670,15 @@ impl ::prost::Name for MsgAcknowledgement {
     const NAME: &'static str = "MsgAcknowledgement";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.MsgAcknowledgement".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.MsgAcknowledgement".into()
     }
 }
 /// MsgAcknowledgementResponse defines the Msg/Acknowledgement response type.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct MsgAcknowledgementResponse {
     #[prost(enumeration = "ResponseResultType", tag = "1")]
     pub result: i32,
@@ -611,7 +687,10 @@ impl ::prost::Name for MsgAcknowledgementResponse {
     const NAME: &'static str = "MsgAcknowledgementResponse";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.MsgAcknowledgementResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.MsgAcknowledgementResponse".into()
     }
 }
 /// ResponseResultType defines the possible outcomes of the execution of a message
@@ -960,7 +1039,10 @@ impl ::prost::Name for QueryChannelRequest {
     const NAME: &'static str = "QueryChannelRequest";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryChannelRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryChannelRequest".into()
     }
 }
 /// QueryChannelResponse is the response type for the Query/Channel RPC method.
@@ -983,7 +1065,10 @@ impl ::prost::Name for QueryChannelResponse {
     const NAME: &'static str = "QueryChannelResponse";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryChannelResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryChannelResponse".into()
     }
 }
 /// QueryChannelsRequest is the request type for the Query/Channels RPC method
@@ -1000,7 +1085,10 @@ impl ::prost::Name for QueryChannelsRequest {
     const NAME: &'static str = "QueryChannelsRequest";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryChannelsRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryChannelsRequest".into()
     }
 }
 /// QueryChannelsResponse is the response type for the Query/Channels RPC method.
@@ -1023,7 +1111,10 @@ impl ::prost::Name for QueryChannelsResponse {
     const NAME: &'static str = "QueryChannelsResponse";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryChannelsResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryChannelsResponse".into()
     }
 }
 /// QueryConnectionChannelsRequest is the request type for the
@@ -1044,7 +1135,10 @@ impl ::prost::Name for QueryConnectionChannelsRequest {
     const NAME: &'static str = "QueryConnectionChannelsRequest";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryConnectionChannelsRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryConnectionChannelsRequest".into()
     }
 }
 /// QueryConnectionChannelsResponse is the Response type for the
@@ -1068,7 +1162,10 @@ impl ::prost::Name for QueryConnectionChannelsResponse {
     const NAME: &'static str = "QueryConnectionChannelsResponse";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryConnectionChannelsResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryConnectionChannelsResponse".into()
     }
 }
 /// QueryChannelClientStateRequest is the request type for the Query/ClientState
@@ -1087,7 +1184,10 @@ impl ::prost::Name for QueryChannelClientStateRequest {
     const NAME: &'static str = "QueryChannelClientStateRequest";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryChannelClientStateRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryChannelClientStateRequest".into()
     }
 }
 /// QueryChannelClientStateResponse is the Response type for the
@@ -1110,7 +1210,10 @@ impl ::prost::Name for QueryChannelClientStateResponse {
     const NAME: &'static str = "QueryChannelClientStateResponse";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryChannelClientStateResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryChannelClientStateResponse".into()
     }
 }
 /// QueryChannelConsensusStateRequest is the request type for the
@@ -1135,7 +1238,10 @@ impl ::prost::Name for QueryChannelConsensusStateRequest {
     const NAME: &'static str = "QueryChannelConsensusStateRequest";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryChannelConsensusStateRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryChannelConsensusStateRequest".into()
     }
 }
 /// QueryChannelClientStateResponse is the Response type for the
@@ -1145,7 +1251,7 @@ impl ::prost::Name for QueryChannelConsensusStateRequest {
 pub struct QueryChannelConsensusStateResponse {
     /// consensus state associated with the channel
     #[prost(message, optional, tag = "1")]
-    pub consensus_state: ::core::option::Option<::prost_types::Any>,
+    pub consensus_state: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     /// client ID associated with the consensus state
     #[prost(string, tag = "2")]
     pub client_id: ::prost::alloc::string::String,
@@ -1160,7 +1266,10 @@ impl ::prost::Name for QueryChannelConsensusStateResponse {
     const NAME: &'static str = "QueryChannelConsensusStateResponse";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryChannelConsensusStateResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryChannelConsensusStateResponse".into()
     }
 }
 /// QueryPacketCommitmentRequest is the request type for the
@@ -1182,7 +1291,10 @@ impl ::prost::Name for QueryPacketCommitmentRequest {
     const NAME: &'static str = "QueryPacketCommitmentRequest";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryPacketCommitmentRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryPacketCommitmentRequest".into()
     }
 }
 /// QueryPacketCommitmentResponse defines the client query response for a packet
@@ -1205,7 +1317,10 @@ impl ::prost::Name for QueryPacketCommitmentResponse {
     const NAME: &'static str = "QueryPacketCommitmentResponse";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryPacketCommitmentResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryPacketCommitmentResponse".into()
     }
 }
 /// QueryPacketCommitmentsRequest is the request type for the
@@ -1229,7 +1344,10 @@ impl ::prost::Name for QueryPacketCommitmentsRequest {
     const NAME: &'static str = "QueryPacketCommitmentsRequest";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryPacketCommitmentsRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryPacketCommitmentsRequest".into()
     }
 }
 /// QueryPacketCommitmentsResponse is the request type for the
@@ -1252,7 +1370,10 @@ impl ::prost::Name for QueryPacketCommitmentsResponse {
     const NAME: &'static str = "QueryPacketCommitmentsResponse";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryPacketCommitmentsResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryPacketCommitmentsResponse".into()
     }
 }
 /// QueryPacketReceiptRequest is the request type for the
@@ -1274,7 +1395,10 @@ impl ::prost::Name for QueryPacketReceiptRequest {
     const NAME: &'static str = "QueryPacketReceiptRequest";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryPacketReceiptRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryPacketReceiptRequest".into()
     }
 }
 /// QueryPacketReceiptResponse defines the client query response for a packet
@@ -1297,7 +1421,10 @@ impl ::prost::Name for QueryPacketReceiptResponse {
     const NAME: &'static str = "QueryPacketReceiptResponse";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryPacketReceiptResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryPacketReceiptResponse".into()
     }
 }
 /// QueryPacketAcknowledgementRequest is the request type for the
@@ -1319,7 +1446,10 @@ impl ::prost::Name for QueryPacketAcknowledgementRequest {
     const NAME: &'static str = "QueryPacketAcknowledgementRequest";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryPacketAcknowledgementRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryPacketAcknowledgementRequest".into()
     }
 }
 /// QueryPacketAcknowledgementResponse defines the client query response for a
@@ -1342,7 +1472,10 @@ impl ::prost::Name for QueryPacketAcknowledgementResponse {
     const NAME: &'static str = "QueryPacketAcknowledgementResponse";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryPacketAcknowledgementResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryPacketAcknowledgementResponse".into()
     }
 }
 /// QueryPacketAcknowledgementsRequest is the request type for the
@@ -1369,7 +1502,10 @@ impl ::prost::Name for QueryPacketAcknowledgementsRequest {
     const NAME: &'static str = "QueryPacketAcknowledgementsRequest";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryPacketAcknowledgementsRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryPacketAcknowledgementsRequest".into()
     }
 }
 /// QueryPacketAcknowledgemetsResponse is the request type for the
@@ -1392,7 +1528,10 @@ impl ::prost::Name for QueryPacketAcknowledgementsResponse {
     const NAME: &'static str = "QueryPacketAcknowledgementsResponse";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryPacketAcknowledgementsResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryPacketAcknowledgementsResponse".into()
     }
 }
 /// QueryUnreceivedPacketsRequest is the request type for the
@@ -1414,7 +1553,10 @@ impl ::prost::Name for QueryUnreceivedPacketsRequest {
     const NAME: &'static str = "QueryUnreceivedPacketsRequest";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryUnreceivedPacketsRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryUnreceivedPacketsRequest".into()
     }
 }
 /// QueryUnreceivedPacketsResponse is the response type for the
@@ -1433,7 +1575,10 @@ impl ::prost::Name for QueryUnreceivedPacketsResponse {
     const NAME: &'static str = "QueryUnreceivedPacketsResponse";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryUnreceivedPacketsResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryUnreceivedPacketsResponse".into()
     }
 }
 /// QueryUnreceivedAcks is the request type for the
@@ -1455,7 +1600,10 @@ impl ::prost::Name for QueryUnreceivedAcksRequest {
     const NAME: &'static str = "QueryUnreceivedAcksRequest";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryUnreceivedAcksRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryUnreceivedAcksRequest".into()
     }
 }
 /// QueryUnreceivedAcksResponse is the response type for the
@@ -1474,7 +1622,10 @@ impl ::prost::Name for QueryUnreceivedAcksResponse {
     const NAME: &'static str = "QueryUnreceivedAcksResponse";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryUnreceivedAcksResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryUnreceivedAcksResponse".into()
     }
 }
 /// QueryNextSequenceReceiveRequest is the request type for the
@@ -1493,7 +1644,10 @@ impl ::prost::Name for QueryNextSequenceReceiveRequest {
     const NAME: &'static str = "QueryNextSequenceReceiveRequest";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryNextSequenceReceiveRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryNextSequenceReceiveRequest".into()
     }
 }
 /// QuerySequenceResponse is the request type for the
@@ -1515,7 +1669,10 @@ impl ::prost::Name for QueryNextSequenceReceiveResponse {
     const NAME: &'static str = "QueryNextSequenceReceiveResponse";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.QueryNextSequenceReceiveResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.QueryNextSequenceReceiveResponse".into()
     }
 }
 /// Generated client implementations.
@@ -1945,7 +2102,10 @@ impl ::prost::Name for GenesisState {
     const NAME: &'static str = "GenesisState";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.GenesisState".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.GenesisState".into()
     }
 }
 /// PacketSequence defines the genesis type necessary to retrieve and store
@@ -1964,6 +2124,9 @@ impl ::prost::Name for PacketSequence {
     const NAME: &'static str = "PacketSequence";
     const PACKAGE: &'static str = "ibc.core.channel.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.channel.v1.{}", Self::NAME)
+        "ibc.core.channel.v1.PacketSequence".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.channel.v1.PacketSequence".into()
     }
 }
diff --git a/cosmos-sdk-proto/src/prost/ibc-go/ibc.core.client.v1.rs b/cosmos-sdk-proto/src/prost/ibc-go/ibc.core.client.v1.rs
index 18e98186..6e6b473a 100644
--- a/cosmos-sdk-proto/src/prost/ibc-go/ibc.core.client.v1.rs
+++ b/cosmos-sdk-proto/src/prost/ibc-go/ibc.core.client.v1.rs
@@ -1,3 +1,4 @@
+// This file is @generated by prost-build.
 /// IdentifiedClientState defines a client state with an additional client
 /// identifier field.
 #[allow(clippy::derive_partial_eq_without_eq)]
@@ -8,13 +9,16 @@ pub struct IdentifiedClientState {
     pub client_id: ::prost::alloc::string::String,
     /// client state
     #[prost(message, optional, tag = "2")]
-    pub client_state: ::core::option::Option<::prost_types::Any>,
+    pub client_state: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
 }
 impl ::prost::Name for IdentifiedClientState {
     const NAME: &'static str = "IdentifiedClientState";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.IdentifiedClientState".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.IdentifiedClientState".into()
     }
 }
 /// ConsensusStateWithHeight defines a consensus state with an additional height
@@ -27,13 +31,16 @@ pub struct ConsensusStateWithHeight {
     pub height: ::core::option::Option<Height>,
     /// consensus state
     #[prost(message, optional, tag = "2")]
-    pub consensus_state: ::core::option::Option<::prost_types::Any>,
+    pub consensus_state: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
 }
 impl ::prost::Name for ConsensusStateWithHeight {
     const NAME: &'static str = "ConsensusStateWithHeight";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.ConsensusStateWithHeight".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.ConsensusStateWithHeight".into()
     }
 }
 /// ClientConsensusStates defines all the stored consensus states for a given
@@ -52,7 +59,10 @@ impl ::prost::Name for ClientConsensusStates {
     const NAME: &'static str = "ClientConsensusStates";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.ClientConsensusStates".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.ClientConsensusStates".into()
     }
 }
 /// ClientUpdateProposal is a governance proposal. If it passes, the substitute
@@ -80,7 +90,10 @@ impl ::prost::Name for ClientUpdateProposal {
     const NAME: &'static str = "ClientUpdateProposal";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.ClientUpdateProposal".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.ClientUpdateProposal".into()
     }
 }
 /// UpgradeProposal is a gov Content type for initiating an IBC breaking
@@ -101,13 +114,16 @@ pub struct UpgradeProposal {
     /// of the chain. This will allow IBC connections to persist smoothly across
     /// planned chain upgrades
     #[prost(message, optional, tag = "4")]
-    pub upgraded_client_state: ::core::option::Option<::prost_types::Any>,
+    pub upgraded_client_state: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
 }
 impl ::prost::Name for UpgradeProposal {
     const NAME: &'static str = "UpgradeProposal";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.UpgradeProposal".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.UpgradeProposal".into()
     }
 }
 /// Height is a monotonically increasing data type
@@ -121,7 +137,7 @@ impl ::prost::Name for UpgradeProposal {
 /// height continues to be monitonically increasing even as the RevisionHeight
 /// gets reset
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct Height {
     /// the revision that the client is currently on
     #[prost(uint64, tag = "1")]
@@ -134,7 +150,10 @@ impl ::prost::Name for Height {
     const NAME: &'static str = "Height";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.Height".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.Height".into()
     }
 }
 /// Params defines the set of IBC light client parameters.
@@ -149,7 +168,10 @@ impl ::prost::Name for Params {
     const NAME: &'static str = "Params";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.Params".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.Params".into()
     }
 }
 /// MsgCreateClient defines a message to create an IBC client
@@ -158,11 +180,11 @@ impl ::prost::Name for Params {
 pub struct MsgCreateClient {
     /// light client state
     #[prost(message, optional, tag = "1")]
-    pub client_state: ::core::option::Option<::prost_types::Any>,
+    pub client_state: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     /// consensus state associated with the client that corresponds to a given
     /// height.
     #[prost(message, optional, tag = "2")]
-    pub consensus_state: ::core::option::Option<::prost_types::Any>,
+    pub consensus_state: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     /// signer address
     #[prost(string, tag = "3")]
     pub signer: ::prost::alloc::string::String,
@@ -171,18 +193,24 @@ impl ::prost::Name for MsgCreateClient {
     const NAME: &'static str = "MsgCreateClient";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.MsgCreateClient".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.MsgCreateClient".into()
     }
 }
 /// MsgCreateClientResponse defines the Msg/CreateClient response type.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct MsgCreateClientResponse {}
 impl ::prost::Name for MsgCreateClientResponse {
     const NAME: &'static str = "MsgCreateClientResponse";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.MsgCreateClientResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.MsgCreateClientResponse".into()
     }
 }
 /// MsgUpdateClient defines an sdk.Msg to update a IBC client state using
@@ -195,7 +223,7 @@ pub struct MsgUpdateClient {
     pub client_id: ::prost::alloc::string::String,
     /// header to update the light client
     #[prost(message, optional, tag = "2")]
-    pub header: ::core::option::Option<::prost_types::Any>,
+    pub header: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     /// signer address
     #[prost(string, tag = "3")]
     pub signer: ::prost::alloc::string::String,
@@ -204,18 +232,24 @@ impl ::prost::Name for MsgUpdateClient {
     const NAME: &'static str = "MsgUpdateClient";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.MsgUpdateClient".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.MsgUpdateClient".into()
     }
 }
 /// MsgUpdateClientResponse defines the Msg/UpdateClient response type.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct MsgUpdateClientResponse {}
 impl ::prost::Name for MsgUpdateClientResponse {
     const NAME: &'static str = "MsgUpdateClientResponse";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.MsgUpdateClientResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.MsgUpdateClientResponse".into()
     }
 }
 /// MsgUpgradeClient defines an sdk.Msg to upgrade an IBC client to a new client
@@ -228,11 +262,11 @@ pub struct MsgUpgradeClient {
     pub client_id: ::prost::alloc::string::String,
     /// upgraded client state
     #[prost(message, optional, tag = "2")]
-    pub client_state: ::core::option::Option<::prost_types::Any>,
+    pub client_state: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     /// upgraded consensus state, only contains enough information to serve as a
     /// basis of trust in update logic
     #[prost(message, optional, tag = "3")]
-    pub consensus_state: ::core::option::Option<::prost_types::Any>,
+    pub consensus_state: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     /// proof that old chain committed to new client
     #[prost(bytes = "vec", tag = "4")]
     pub proof_upgrade_client: ::prost::alloc::vec::Vec<u8>,
@@ -247,18 +281,24 @@ impl ::prost::Name for MsgUpgradeClient {
     const NAME: &'static str = "MsgUpgradeClient";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.MsgUpgradeClient".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.MsgUpgradeClient".into()
     }
 }
 /// MsgUpgradeClientResponse defines the Msg/UpgradeClient response type.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct MsgUpgradeClientResponse {}
 impl ::prost::Name for MsgUpgradeClientResponse {
     const NAME: &'static str = "MsgUpgradeClientResponse";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.MsgUpgradeClientResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.MsgUpgradeClientResponse".into()
     }
 }
 /// MsgSubmitMisbehaviour defines an sdk.Msg type that submits Evidence for
@@ -271,7 +311,7 @@ pub struct MsgSubmitMisbehaviour {
     pub client_id: ::prost::alloc::string::String,
     /// misbehaviour used for freezing the light client
     #[prost(message, optional, tag = "2")]
-    pub misbehaviour: ::core::option::Option<::prost_types::Any>,
+    pub misbehaviour: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     /// signer address
     #[prost(string, tag = "3")]
     pub signer: ::prost::alloc::string::String,
@@ -280,19 +320,25 @@ impl ::prost::Name for MsgSubmitMisbehaviour {
     const NAME: &'static str = "MsgSubmitMisbehaviour";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.MsgSubmitMisbehaviour".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.MsgSubmitMisbehaviour".into()
     }
 }
 /// MsgSubmitMisbehaviourResponse defines the Msg/SubmitMisbehaviour response
 /// type.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct MsgSubmitMisbehaviourResponse {}
 impl ::prost::Name for MsgSubmitMisbehaviourResponse {
     const NAME: &'static str = "MsgSubmitMisbehaviourResponse";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.MsgSubmitMisbehaviourResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.MsgSubmitMisbehaviourResponse".into()
     }
 }
 /// Generated client implementations.
@@ -474,7 +520,10 @@ impl ::prost::Name for QueryClientStateRequest {
     const NAME: &'static str = "QueryClientStateRequest";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.QueryClientStateRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.QueryClientStateRequest".into()
     }
 }
 /// QueryClientStateResponse is the response type for the Query/ClientState RPC
@@ -485,7 +534,7 @@ impl ::prost::Name for QueryClientStateRequest {
 pub struct QueryClientStateResponse {
     /// client state associated with the request identifier
     #[prost(message, optional, tag = "1")]
-    pub client_state: ::core::option::Option<::prost_types::Any>,
+    pub client_state: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     /// merkle proof of existence
     #[prost(bytes = "vec", tag = "2")]
     pub proof: ::prost::alloc::vec::Vec<u8>,
@@ -497,7 +546,10 @@ impl ::prost::Name for QueryClientStateResponse {
     const NAME: &'static str = "QueryClientStateResponse";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.QueryClientStateResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.QueryClientStateResponse".into()
     }
 }
 /// QueryClientStatesRequest is the request type for the Query/ClientStates RPC
@@ -515,7 +567,10 @@ impl ::prost::Name for QueryClientStatesRequest {
     const NAME: &'static str = "QueryClientStatesRequest";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.QueryClientStatesRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.QueryClientStatesRequest".into()
     }
 }
 /// QueryClientStatesResponse is the response type for the Query/ClientStates RPC
@@ -536,7 +591,10 @@ impl ::prost::Name for QueryClientStatesResponse {
     const NAME: &'static str = "QueryClientStatesResponse";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.QueryClientStatesResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.QueryClientStatesResponse".into()
     }
 }
 /// QueryConsensusStateRequest is the request type for the Query/ConsensusState
@@ -563,7 +621,10 @@ impl ::prost::Name for QueryConsensusStateRequest {
     const NAME: &'static str = "QueryConsensusStateRequest";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.QueryConsensusStateRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.QueryConsensusStateRequest".into()
     }
 }
 /// QueryConsensusStateResponse is the response type for the Query/ConsensusState
@@ -573,7 +634,7 @@ impl ::prost::Name for QueryConsensusStateRequest {
 pub struct QueryConsensusStateResponse {
     /// consensus state associated with the client identifier at the given height
     #[prost(message, optional, tag = "1")]
-    pub consensus_state: ::core::option::Option<::prost_types::Any>,
+    pub consensus_state: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     /// merkle proof of existence
     #[prost(bytes = "vec", tag = "2")]
     pub proof: ::prost::alloc::vec::Vec<u8>,
@@ -585,7 +646,10 @@ impl ::prost::Name for QueryConsensusStateResponse {
     const NAME: &'static str = "QueryConsensusStateResponse";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.QueryConsensusStateResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.QueryConsensusStateResponse".into()
     }
 }
 /// QueryConsensusStatesRequest is the request type for the Query/ConsensusStates
@@ -606,7 +670,10 @@ impl ::prost::Name for QueryConsensusStatesRequest {
     const NAME: &'static str = "QueryConsensusStatesRequest";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.QueryConsensusStatesRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.QueryConsensusStatesRequest".into()
     }
 }
 /// QueryConsensusStatesResponse is the response type for the
@@ -627,7 +694,10 @@ impl ::prost::Name for QueryConsensusStatesResponse {
     const NAME: &'static str = "QueryConsensusStatesResponse";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.QueryConsensusStatesResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.QueryConsensusStatesResponse".into()
     }
 }
 /// QueryClientStatusRequest is the request type for the Query/ClientStatus RPC
@@ -643,7 +713,10 @@ impl ::prost::Name for QueryClientStatusRequest {
     const NAME: &'static str = "QueryClientStatusRequest";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.QueryClientStatusRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.QueryClientStatusRequest".into()
     }
 }
 /// QueryClientStatusResponse is the response type for the Query/ClientStatus RPC
@@ -658,19 +731,25 @@ impl ::prost::Name for QueryClientStatusResponse {
     const NAME: &'static str = "QueryClientStatusResponse";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.QueryClientStatusResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.QueryClientStatusResponse".into()
     }
 }
 /// QueryClientParamsRequest is the request type for the Query/ClientParams RPC
 /// method.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct QueryClientParamsRequest {}
 impl ::prost::Name for QueryClientParamsRequest {
     const NAME: &'static str = "QueryClientParamsRequest";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.QueryClientParamsRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.QueryClientParamsRequest".into()
     }
 }
 /// QueryClientParamsResponse is the response type for the Query/ClientParams RPC
@@ -686,19 +765,25 @@ impl ::prost::Name for QueryClientParamsResponse {
     const NAME: &'static str = "QueryClientParamsResponse";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.QueryClientParamsResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.QueryClientParamsResponse".into()
     }
 }
 /// QueryUpgradedClientStateRequest is the request type for the
 /// Query/UpgradedClientState RPC method
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct QueryUpgradedClientStateRequest {}
 impl ::prost::Name for QueryUpgradedClientStateRequest {
     const NAME: &'static str = "QueryUpgradedClientStateRequest";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.QueryUpgradedClientStateRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.QueryUpgradedClientStateRequest".into()
     }
 }
 /// QueryUpgradedClientStateResponse is the response type for the
@@ -708,25 +793,31 @@ impl ::prost::Name for QueryUpgradedClientStateRequest {
 pub struct QueryUpgradedClientStateResponse {
     /// client state associated with the request identifier
     #[prost(message, optional, tag = "1")]
-    pub upgraded_client_state: ::core::option::Option<::prost_types::Any>,
+    pub upgraded_client_state: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
 }
 impl ::prost::Name for QueryUpgradedClientStateResponse {
     const NAME: &'static str = "QueryUpgradedClientStateResponse";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.QueryUpgradedClientStateResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.QueryUpgradedClientStateResponse".into()
     }
 }
 /// QueryUpgradedConsensusStateRequest is the request type for the
 /// Query/UpgradedConsensusState RPC method
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct QueryUpgradedConsensusStateRequest {}
 impl ::prost::Name for QueryUpgradedConsensusStateRequest {
     const NAME: &'static str = "QueryUpgradedConsensusStateRequest";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.QueryUpgradedConsensusStateRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.QueryUpgradedConsensusStateRequest".into()
     }
 }
 /// QueryUpgradedConsensusStateResponse is the response type for the
@@ -736,13 +827,16 @@ impl ::prost::Name for QueryUpgradedConsensusStateRequest {
 pub struct QueryUpgradedConsensusStateResponse {
     /// Consensus state associated with the request identifier
     #[prost(message, optional, tag = "1")]
-    pub upgraded_consensus_state: ::core::option::Option<::prost_types::Any>,
+    pub upgraded_consensus_state: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
 }
 impl ::prost::Name for QueryUpgradedConsensusStateResponse {
     const NAME: &'static str = "QueryUpgradedConsensusStateResponse";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.QueryUpgradedConsensusStateResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.QueryUpgradedConsensusStateResponse".into()
     }
 }
 /// Generated client implementations.
@@ -1036,7 +1130,10 @@ impl ::prost::Name for GenesisState {
     const NAME: &'static str = "GenesisState";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.GenesisState".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.GenesisState".into()
     }
 }
 /// GenesisMetadata defines the genesis type for metadata that clients may return
@@ -1055,7 +1152,10 @@ impl ::prost::Name for GenesisMetadata {
     const NAME: &'static str = "GenesisMetadata";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.GenesisMetadata".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.GenesisMetadata".into()
     }
 }
 /// IdentifiedGenesisMetadata has the client metadata with the corresponding
@@ -1072,6 +1172,9 @@ impl ::prost::Name for IdentifiedGenesisMetadata {
     const NAME: &'static str = "IdentifiedGenesisMetadata";
     const PACKAGE: &'static str = "ibc.core.client.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.client.v1.{}", Self::NAME)
+        "ibc.core.client.v1.IdentifiedGenesisMetadata".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.client.v1.IdentifiedGenesisMetadata".into()
     }
 }
diff --git a/cosmos-sdk-proto/src/prost/ibc-go/ibc.core.commitment.v1.rs b/cosmos-sdk-proto/src/prost/ibc-go/ibc.core.commitment.v1.rs
index 1c0cc6ff..b528388c 100644
--- a/cosmos-sdk-proto/src/prost/ibc-go/ibc.core.commitment.v1.rs
+++ b/cosmos-sdk-proto/src/prost/ibc-go/ibc.core.commitment.v1.rs
@@ -1,3 +1,4 @@
+// This file is @generated by prost-build.
 /// MerkleRoot defines a merkle root hash.
 /// In the Cosmos SDK, the AppHash of a block header becomes the root.
 #[allow(clippy::derive_partial_eq_without_eq)]
@@ -10,7 +11,10 @@ impl ::prost::Name for MerkleRoot {
     const NAME: &'static str = "MerkleRoot";
     const PACKAGE: &'static str = "ibc.core.commitment.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.commitment.v1.{}", Self::NAME)
+        "ibc.core.commitment.v1.MerkleRoot".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.commitment.v1.MerkleRoot".into()
     }
 }
 /// MerklePrefix is merkle path prefixed to the key.
@@ -26,7 +30,10 @@ impl ::prost::Name for MerklePrefix {
     const NAME: &'static str = "MerklePrefix";
     const PACKAGE: &'static str = "ibc.core.commitment.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.commitment.v1.{}", Self::NAME)
+        "ibc.core.commitment.v1.MerklePrefix".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.commitment.v1.MerklePrefix".into()
     }
 }
 /// MerklePath is the path used to verify commitment proofs, which can be an
@@ -42,7 +49,10 @@ impl ::prost::Name for MerklePath {
     const NAME: &'static str = "MerklePath";
     const PACKAGE: &'static str = "ibc.core.commitment.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.commitment.v1.{}", Self::NAME)
+        "ibc.core.commitment.v1.MerklePath".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.commitment.v1.MerklePath".into()
     }
 }
 /// MerkleProof is a wrapper type over a chain of CommitmentProofs.
@@ -60,6 +70,9 @@ impl ::prost::Name for MerkleProof {
     const NAME: &'static str = "MerkleProof";
     const PACKAGE: &'static str = "ibc.core.commitment.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.commitment.v1.{}", Self::NAME)
+        "ibc.core.commitment.v1.MerkleProof".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.commitment.v1.MerkleProof".into()
     }
 }
diff --git a/cosmos-sdk-proto/src/prost/ibc-go/ibc.core.connection.v1.rs b/cosmos-sdk-proto/src/prost/ibc-go/ibc.core.connection.v1.rs
index 2a41cc77..1e97642f 100644
--- a/cosmos-sdk-proto/src/prost/ibc-go/ibc.core.connection.v1.rs
+++ b/cosmos-sdk-proto/src/prost/ibc-go/ibc.core.connection.v1.rs
@@ -1,3 +1,4 @@
+// This file is @generated by prost-build.
 /// ConnectionEnd defines a stateful object on a chain connected to another
 /// separate one.
 /// NOTE: there must only be 2 defined ConnectionEnds to establish
@@ -28,7 +29,10 @@ impl ::prost::Name for ConnectionEnd {
     const NAME: &'static str = "ConnectionEnd";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.ConnectionEnd".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.ConnectionEnd".into()
     }
 }
 /// IdentifiedConnection defines a connection with additional connection
@@ -60,7 +64,10 @@ impl ::prost::Name for IdentifiedConnection {
     const NAME: &'static str = "IdentifiedConnection";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.IdentifiedConnection".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.IdentifiedConnection".into()
     }
 }
 /// Counterparty defines the counterparty chain associated with a connection end.
@@ -83,7 +90,10 @@ impl ::prost::Name for Counterparty {
     const NAME: &'static str = "Counterparty";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.Counterparty".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.Counterparty".into()
     }
 }
 /// ClientPaths define all the connection paths for a client state.
@@ -98,7 +108,10 @@ impl ::prost::Name for ClientPaths {
     const NAME: &'static str = "ClientPaths";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.ClientPaths".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.ClientPaths".into()
     }
 }
 /// ConnectionPaths define all the connection paths for a given client state.
@@ -116,7 +129,10 @@ impl ::prost::Name for ConnectionPaths {
     const NAME: &'static str = "ConnectionPaths";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.ConnectionPaths".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.ConnectionPaths".into()
     }
 }
 /// Version defines the versioning scheme used to negotiate the IBC verison in
@@ -135,12 +151,15 @@ impl ::prost::Name for Version {
     const NAME: &'static str = "Version";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.Version".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.Version".into()
     }
 }
 /// Params defines the set of Connection parameters.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct Params {
     /// maximum expected time per block (in nanoseconds), used to enforce block delay. This parameter should reflect the
     /// largest amount of time that the chain might reasonably take to produce the next block under normal operating
@@ -152,7 +171,10 @@ impl ::prost::Name for Params {
     const NAME: &'static str = "Params";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.Params".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.Params".into()
     }
 }
 /// State defines if a connection is in one of the following states:
@@ -214,19 +236,25 @@ impl ::prost::Name for MsgConnectionOpenInit {
     const NAME: &'static str = "MsgConnectionOpenInit";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.MsgConnectionOpenInit".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.MsgConnectionOpenInit".into()
     }
 }
 /// MsgConnectionOpenInitResponse defines the Msg/ConnectionOpenInit response
 /// type.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct MsgConnectionOpenInitResponse {}
 impl ::prost::Name for MsgConnectionOpenInitResponse {
     const NAME: &'static str = "MsgConnectionOpenInitResponse";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.MsgConnectionOpenInitResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.MsgConnectionOpenInitResponse".into()
     }
 }
 /// MsgConnectionOpenTry defines a msg sent by a Relayer to try to open a
@@ -241,7 +269,7 @@ pub struct MsgConnectionOpenTry {
     #[prost(string, tag = "2")]
     pub previous_connection_id: ::prost::alloc::string::String,
     #[prost(message, optional, tag = "3")]
-    pub client_state: ::core::option::Option<::prost_types::Any>,
+    pub client_state: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     #[prost(message, optional, tag = "4")]
     pub counterparty: ::core::option::Option<Counterparty>,
     #[prost(uint64, tag = "5")]
@@ -269,18 +297,24 @@ impl ::prost::Name for MsgConnectionOpenTry {
     const NAME: &'static str = "MsgConnectionOpenTry";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.MsgConnectionOpenTry".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.MsgConnectionOpenTry".into()
     }
 }
 /// MsgConnectionOpenTryResponse defines the Msg/ConnectionOpenTry response type.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct MsgConnectionOpenTryResponse {}
 impl ::prost::Name for MsgConnectionOpenTryResponse {
     const NAME: &'static str = "MsgConnectionOpenTryResponse";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.MsgConnectionOpenTryResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.MsgConnectionOpenTryResponse".into()
     }
 }
 /// MsgConnectionOpenAck defines a msg sent by a Relayer to Chain A to
@@ -295,7 +329,7 @@ pub struct MsgConnectionOpenAck {
     #[prost(message, optional, tag = "3")]
     pub version: ::core::option::Option<Version>,
     #[prost(message, optional, tag = "4")]
-    pub client_state: ::core::option::Option<::prost_types::Any>,
+    pub client_state: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     #[prost(message, optional, tag = "5")]
     pub proof_height: ::core::option::Option<super::super::client::v1::Height>,
     /// proof of the initialization the connection on Chain B: `UNITIALIZED ->
@@ -317,18 +351,24 @@ impl ::prost::Name for MsgConnectionOpenAck {
     const NAME: &'static str = "MsgConnectionOpenAck";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.MsgConnectionOpenAck".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.MsgConnectionOpenAck".into()
     }
 }
 /// MsgConnectionOpenAckResponse defines the Msg/ConnectionOpenAck response type.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct MsgConnectionOpenAckResponse {}
 impl ::prost::Name for MsgConnectionOpenAckResponse {
     const NAME: &'static str = "MsgConnectionOpenAckResponse";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.MsgConnectionOpenAckResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.MsgConnectionOpenAckResponse".into()
     }
 }
 /// MsgConnectionOpenConfirm defines a msg sent by a Relayer to Chain B to
@@ -350,19 +390,25 @@ impl ::prost::Name for MsgConnectionOpenConfirm {
     const NAME: &'static str = "MsgConnectionOpenConfirm";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.MsgConnectionOpenConfirm".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.MsgConnectionOpenConfirm".into()
     }
 }
 /// MsgConnectionOpenConfirmResponse defines the Msg/ConnectionOpenConfirm
 /// response type.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct MsgConnectionOpenConfirmResponse {}
 impl ::prost::Name for MsgConnectionOpenConfirmResponse {
     const NAME: &'static str = "MsgConnectionOpenConfirmResponse";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.MsgConnectionOpenConfirmResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.MsgConnectionOpenConfirmResponse".into()
     }
 }
 /// Generated client implementations.
@@ -559,7 +605,10 @@ impl ::prost::Name for QueryConnectionRequest {
     const NAME: &'static str = "QueryConnectionRequest";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.QueryConnectionRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.QueryConnectionRequest".into()
     }
 }
 /// QueryConnectionResponse is the response type for the Query/Connection RPC
@@ -582,7 +631,10 @@ impl ::prost::Name for QueryConnectionResponse {
     const NAME: &'static str = "QueryConnectionResponse";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.QueryConnectionResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.QueryConnectionResponse".into()
     }
 }
 /// QueryConnectionsRequest is the request type for the Query/Connections RPC
@@ -599,7 +651,10 @@ impl ::prost::Name for QueryConnectionsRequest {
     const NAME: &'static str = "QueryConnectionsRequest";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.QueryConnectionsRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.QueryConnectionsRequest".into()
     }
 }
 /// QueryConnectionsResponse is the response type for the Query/Connections RPC
@@ -623,7 +678,10 @@ impl ::prost::Name for QueryConnectionsResponse {
     const NAME: &'static str = "QueryConnectionsResponse";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.QueryConnectionsResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.QueryConnectionsResponse".into()
     }
 }
 /// QueryClientConnectionsRequest is the request type for the
@@ -639,7 +697,10 @@ impl ::prost::Name for QueryClientConnectionsRequest {
     const NAME: &'static str = "QueryClientConnectionsRequest";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.QueryClientConnectionsRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.QueryClientConnectionsRequest".into()
     }
 }
 /// QueryClientConnectionsResponse is the response type for the
@@ -661,7 +722,10 @@ impl ::prost::Name for QueryClientConnectionsResponse {
     const NAME: &'static str = "QueryClientConnectionsResponse";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.QueryClientConnectionsResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.QueryClientConnectionsResponse".into()
     }
 }
 /// QueryConnectionClientStateRequest is the request type for the
@@ -677,7 +741,10 @@ impl ::prost::Name for QueryConnectionClientStateRequest {
     const NAME: &'static str = "QueryConnectionClientStateRequest";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.QueryConnectionClientStateRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.QueryConnectionClientStateRequest".into()
     }
 }
 /// QueryConnectionClientStateResponse is the response type for the
@@ -700,7 +767,10 @@ impl ::prost::Name for QueryConnectionClientStateResponse {
     const NAME: &'static str = "QueryConnectionClientStateResponse";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.QueryConnectionClientStateResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.QueryConnectionClientStateResponse".into()
     }
 }
 /// QueryConnectionConsensusStateRequest is the request type for the
@@ -720,7 +790,10 @@ impl ::prost::Name for QueryConnectionConsensusStateRequest {
     const NAME: &'static str = "QueryConnectionConsensusStateRequest";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.QueryConnectionConsensusStateRequest".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.QueryConnectionConsensusStateRequest".into()
     }
 }
 /// QueryConnectionConsensusStateResponse is the response type for the
@@ -730,7 +803,7 @@ impl ::prost::Name for QueryConnectionConsensusStateRequest {
 pub struct QueryConnectionConsensusStateResponse {
     /// consensus state associated with the channel
     #[prost(message, optional, tag = "1")]
-    pub consensus_state: ::core::option::Option<::prost_types::Any>,
+    pub consensus_state: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     /// client ID associated with the consensus state
     #[prost(string, tag = "2")]
     pub client_id: ::prost::alloc::string::String,
@@ -745,7 +818,10 @@ impl ::prost::Name for QueryConnectionConsensusStateResponse {
     const NAME: &'static str = "QueryConnectionConsensusStateResponse";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.QueryConnectionConsensusStateResponse".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.QueryConnectionConsensusStateResponse".into()
     }
 }
 /// Generated client implementations.
@@ -977,6 +1053,9 @@ impl ::prost::Name for GenesisState {
     const NAME: &'static str = "GenesisState";
     const PACKAGE: &'static str = "ibc.core.connection.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.connection.v1.{}", Self::NAME)
+        "ibc.core.connection.v1.GenesisState".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.connection.v1.GenesisState".into()
     }
 }
diff --git a/cosmos-sdk-proto/src/prost/ibc-go/ibc.core.types.v1.rs b/cosmos-sdk-proto/src/prost/ibc-go/ibc.core.types.v1.rs
index 06e4e3d3..0b2718c5 100644
--- a/cosmos-sdk-proto/src/prost/ibc-go/ibc.core.types.v1.rs
+++ b/cosmos-sdk-proto/src/prost/ibc-go/ibc.core.types.v1.rs
@@ -1,3 +1,4 @@
+// This file is @generated by prost-build.
 /// GenesisState defines the ibc module's genesis state.
 #[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
@@ -16,6 +17,9 @@ impl ::prost::Name for GenesisState {
     const NAME: &'static str = "GenesisState";
     const PACKAGE: &'static str = "ibc.core.types.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.core.types.v1.{}", Self::NAME)
+        "ibc.core.types.v1.GenesisState".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.core.types.v1.GenesisState".into()
     }
 }
diff --git a/cosmos-sdk-proto/src/prost/ibc-go/ibc.lightclients.localhost.v1.rs b/cosmos-sdk-proto/src/prost/ibc-go/ibc.lightclients.localhost.v1.rs
index 4fe8fe76..e5413e37 100644
--- a/cosmos-sdk-proto/src/prost/ibc-go/ibc.lightclients.localhost.v1.rs
+++ b/cosmos-sdk-proto/src/prost/ibc-go/ibc.lightclients.localhost.v1.rs
@@ -1,3 +1,4 @@
+// This file is @generated by prost-build.
 /// ClientState defines a loopback (localhost) client. It requires (read-only)
 /// access to keys outside the client prefix.
 #[allow(clippy::derive_partial_eq_without_eq)]
@@ -14,6 +15,9 @@ impl ::prost::Name for ClientState {
     const NAME: &'static str = "ClientState";
     const PACKAGE: &'static str = "ibc.lightclients.localhost.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.localhost.v1.{}", Self::NAME)
+        "ibc.lightclients.localhost.v1.ClientState".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.localhost.v1.ClientState".into()
     }
 }
diff --git a/cosmos-sdk-proto/src/prost/ibc-go/ibc.lightclients.solomachine.v1.rs b/cosmos-sdk-proto/src/prost/ibc-go/ibc.lightclients.solomachine.v1.rs
index f8ca6373..4c3e232e 100644
--- a/cosmos-sdk-proto/src/prost/ibc-go/ibc.lightclients.solomachine.v1.rs
+++ b/cosmos-sdk-proto/src/prost/ibc-go/ibc.lightclients.solomachine.v1.rs
@@ -1,3 +1,4 @@
+// This file is @generated by prost-build.
 /// ClientState defines a solo machine client that tracks the current consensus
 /// state and if the client is frozen.
 #[allow(clippy::derive_partial_eq_without_eq)]
@@ -20,7 +21,10 @@ impl ::prost::Name for ClientState {
     const NAME: &'static str = "ClientState";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v1.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v1.ClientState".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v1.ClientState".into()
     }
 }
 /// ConsensusState defines a solo machine consensus state. The sequence of a
@@ -31,7 +35,7 @@ impl ::prost::Name for ClientState {
 pub struct ConsensusState {
     /// public key of the solo machine
     #[prost(message, optional, tag = "1")]
-    pub public_key: ::core::option::Option<::prost_types::Any>,
+    pub public_key: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     /// diversifier allows the same public key to be re-used across different solo
     /// machine clients (potentially on different chains) without being considered
     /// misbehaviour.
@@ -44,7 +48,10 @@ impl ::prost::Name for ConsensusState {
     const NAME: &'static str = "ConsensusState";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v1.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v1.ConsensusState".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v1.ConsensusState".into()
     }
 }
 /// Header defines a solo machine consensus header
@@ -59,7 +66,7 @@ pub struct Header {
     #[prost(bytes = "vec", tag = "3")]
     pub signature: ::prost::alloc::vec::Vec<u8>,
     #[prost(message, optional, tag = "4")]
-    pub new_public_key: ::core::option::Option<::prost_types::Any>,
+    pub new_public_key: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     #[prost(string, tag = "5")]
     pub new_diversifier: ::prost::alloc::string::String,
 }
@@ -67,7 +74,10 @@ impl ::prost::Name for Header {
     const NAME: &'static str = "Header";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v1.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v1.Header".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v1.Header".into()
     }
 }
 /// Misbehaviour defines misbehaviour for a solo machine which consists
@@ -88,7 +98,10 @@ impl ::prost::Name for Misbehaviour {
     const NAME: &'static str = "Misbehaviour";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v1.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v1.Misbehaviour".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v1.Misbehaviour".into()
     }
 }
 /// SignatureAndData contains a signature and the data signed over to create that
@@ -109,7 +122,10 @@ impl ::prost::Name for SignatureAndData {
     const NAME: &'static str = "SignatureAndData";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v1.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v1.SignatureAndData".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v1.SignatureAndData".into()
     }
 }
 /// TimestampedSignatureData contains the signature data and the timestamp of the
@@ -126,7 +142,10 @@ impl ::prost::Name for TimestampedSignatureData {
     const NAME: &'static str = "TimestampedSignatureData";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v1.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v1.TimestampedSignatureData".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v1.TimestampedSignatureData".into()
     }
 }
 /// SignBytes defines the signed bytes used for signature verification.
@@ -150,7 +169,10 @@ impl ::prost::Name for SignBytes {
     const NAME: &'static str = "SignBytes";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v1.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v1.SignBytes".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v1.SignBytes".into()
     }
 }
 /// HeaderData returns the SignBytes data for update verification.
@@ -159,7 +181,7 @@ impl ::prost::Name for SignBytes {
 pub struct HeaderData {
     /// header public key
     #[prost(message, optional, tag = "1")]
-    pub new_pub_key: ::core::option::Option<::prost_types::Any>,
+    pub new_pub_key: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     /// header diversifier
     #[prost(string, tag = "2")]
     pub new_diversifier: ::prost::alloc::string::String,
@@ -168,7 +190,10 @@ impl ::prost::Name for HeaderData {
     const NAME: &'static str = "HeaderData";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v1.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v1.HeaderData".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v1.HeaderData".into()
     }
 }
 /// ClientStateData returns the SignBytes data for client state verification.
@@ -178,13 +203,16 @@ pub struct ClientStateData {
     #[prost(bytes = "vec", tag = "1")]
     pub path: ::prost::alloc::vec::Vec<u8>,
     #[prost(message, optional, tag = "2")]
-    pub client_state: ::core::option::Option<::prost_types::Any>,
+    pub client_state: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
 }
 impl ::prost::Name for ClientStateData {
     const NAME: &'static str = "ClientStateData";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v1.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v1.ClientStateData".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v1.ClientStateData".into()
     }
 }
 /// ConsensusStateData returns the SignBytes data for consensus state
@@ -195,13 +223,16 @@ pub struct ConsensusStateData {
     #[prost(bytes = "vec", tag = "1")]
     pub path: ::prost::alloc::vec::Vec<u8>,
     #[prost(message, optional, tag = "2")]
-    pub consensus_state: ::core::option::Option<::prost_types::Any>,
+    pub consensus_state: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
 }
 impl ::prost::Name for ConsensusStateData {
     const NAME: &'static str = "ConsensusStateData";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v1.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v1.ConsensusStateData".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v1.ConsensusStateData".into()
     }
 }
 /// ConnectionStateData returns the SignBytes data for connection state
@@ -219,7 +250,10 @@ impl ::prost::Name for ConnectionStateData {
     const NAME: &'static str = "ConnectionStateData";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v1.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v1.ConnectionStateData".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v1.ConnectionStateData".into()
     }
 }
 /// ChannelStateData returns the SignBytes data for channel state
@@ -236,7 +270,10 @@ impl ::prost::Name for ChannelStateData {
     const NAME: &'static str = "ChannelStateData";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v1.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v1.ChannelStateData".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v1.ChannelStateData".into()
     }
 }
 /// PacketCommitmentData returns the SignBytes data for packet commitment
@@ -253,7 +290,10 @@ impl ::prost::Name for PacketCommitmentData {
     const NAME: &'static str = "PacketCommitmentData";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v1.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v1.PacketCommitmentData".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v1.PacketCommitmentData".into()
     }
 }
 /// PacketAcknowledgementData returns the SignBytes data for acknowledgement
@@ -270,7 +310,10 @@ impl ::prost::Name for PacketAcknowledgementData {
     const NAME: &'static str = "PacketAcknowledgementData";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v1.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v1.PacketAcknowledgementData".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v1.PacketAcknowledgementData".into()
     }
 }
 /// PacketReceiptAbsenceData returns the SignBytes data for
@@ -285,7 +328,10 @@ impl ::prost::Name for PacketReceiptAbsenceData {
     const NAME: &'static str = "PacketReceiptAbsenceData";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v1.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v1.PacketReceiptAbsenceData".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v1.PacketReceiptAbsenceData".into()
     }
 }
 /// NextSequenceRecvData returns the SignBytes data for verification of the next
@@ -302,7 +348,10 @@ impl ::prost::Name for NextSequenceRecvData {
     const NAME: &'static str = "NextSequenceRecvData";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v1.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v1.NextSequenceRecvData".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v1.NextSequenceRecvData".into()
     }
 }
 /// DataType defines the type of solo machine proof being created. This is done
diff --git a/cosmos-sdk-proto/src/prost/ibc-go/ibc.lightclients.solomachine.v2.rs b/cosmos-sdk-proto/src/prost/ibc-go/ibc.lightclients.solomachine.v2.rs
index 958de772..1b4120c6 100644
--- a/cosmos-sdk-proto/src/prost/ibc-go/ibc.lightclients.solomachine.v2.rs
+++ b/cosmos-sdk-proto/src/prost/ibc-go/ibc.lightclients.solomachine.v2.rs
@@ -1,3 +1,4 @@
+// This file is @generated by prost-build.
 /// ClientState defines a solo machine client that tracks the current consensus
 /// state and if the client is frozen.
 #[allow(clippy::derive_partial_eq_without_eq)]
@@ -20,7 +21,10 @@ impl ::prost::Name for ClientState {
     const NAME: &'static str = "ClientState";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v2";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v2.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v2.ClientState".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v2.ClientState".into()
     }
 }
 /// ConsensusState defines a solo machine consensus state. The sequence of a
@@ -31,7 +35,7 @@ impl ::prost::Name for ClientState {
 pub struct ConsensusState {
     /// public key of the solo machine
     #[prost(message, optional, tag = "1")]
-    pub public_key: ::core::option::Option<::prost_types::Any>,
+    pub public_key: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     /// diversifier allows the same public key to be re-used across different solo
     /// machine clients (potentially on different chains) without being considered
     /// misbehaviour.
@@ -44,7 +48,10 @@ impl ::prost::Name for ConsensusState {
     const NAME: &'static str = "ConsensusState";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v2";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v2.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v2.ConsensusState".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v2.ConsensusState".into()
     }
 }
 /// Header defines a solo machine consensus header
@@ -59,7 +66,7 @@ pub struct Header {
     #[prost(bytes = "vec", tag = "3")]
     pub signature: ::prost::alloc::vec::Vec<u8>,
     #[prost(message, optional, tag = "4")]
-    pub new_public_key: ::core::option::Option<::prost_types::Any>,
+    pub new_public_key: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     #[prost(string, tag = "5")]
     pub new_diversifier: ::prost::alloc::string::String,
 }
@@ -67,7 +74,10 @@ impl ::prost::Name for Header {
     const NAME: &'static str = "Header";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v2";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v2.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v2.Header".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v2.Header".into()
     }
 }
 /// Misbehaviour defines misbehaviour for a solo machine which consists
@@ -88,7 +98,10 @@ impl ::prost::Name for Misbehaviour {
     const NAME: &'static str = "Misbehaviour";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v2";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v2.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v2.Misbehaviour".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v2.Misbehaviour".into()
     }
 }
 /// SignatureAndData contains a signature and the data signed over to create that
@@ -109,7 +122,10 @@ impl ::prost::Name for SignatureAndData {
     const NAME: &'static str = "SignatureAndData";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v2";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v2.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v2.SignatureAndData".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v2.SignatureAndData".into()
     }
 }
 /// TimestampedSignatureData contains the signature data and the timestamp of the
@@ -126,7 +142,10 @@ impl ::prost::Name for TimestampedSignatureData {
     const NAME: &'static str = "TimestampedSignatureData";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v2";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v2.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v2.TimestampedSignatureData".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v2.TimestampedSignatureData".into()
     }
 }
 /// SignBytes defines the signed bytes used for signature verification.
@@ -150,7 +169,10 @@ impl ::prost::Name for SignBytes {
     const NAME: &'static str = "SignBytes";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v2";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v2.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v2.SignBytes".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v2.SignBytes".into()
     }
 }
 /// HeaderData returns the SignBytes data for update verification.
@@ -159,7 +181,7 @@ impl ::prost::Name for SignBytes {
 pub struct HeaderData {
     /// header public key
     #[prost(message, optional, tag = "1")]
-    pub new_pub_key: ::core::option::Option<::prost_types::Any>,
+    pub new_pub_key: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
     /// header diversifier
     #[prost(string, tag = "2")]
     pub new_diversifier: ::prost::alloc::string::String,
@@ -168,7 +190,10 @@ impl ::prost::Name for HeaderData {
     const NAME: &'static str = "HeaderData";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v2";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v2.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v2.HeaderData".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v2.HeaderData".into()
     }
 }
 /// ClientStateData returns the SignBytes data for client state verification.
@@ -178,13 +203,16 @@ pub struct ClientStateData {
     #[prost(bytes = "vec", tag = "1")]
     pub path: ::prost::alloc::vec::Vec<u8>,
     #[prost(message, optional, tag = "2")]
-    pub client_state: ::core::option::Option<::prost_types::Any>,
+    pub client_state: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
 }
 impl ::prost::Name for ClientStateData {
     const NAME: &'static str = "ClientStateData";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v2";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v2.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v2.ClientStateData".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v2.ClientStateData".into()
     }
 }
 /// ConsensusStateData returns the SignBytes data for consensus state
@@ -195,13 +223,16 @@ pub struct ConsensusStateData {
     #[prost(bytes = "vec", tag = "1")]
     pub path: ::prost::alloc::vec::Vec<u8>,
     #[prost(message, optional, tag = "2")]
-    pub consensus_state: ::core::option::Option<::prost_types::Any>,
+    pub consensus_state: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
 }
 impl ::prost::Name for ConsensusStateData {
     const NAME: &'static str = "ConsensusStateData";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v2";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v2.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v2.ConsensusStateData".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v2.ConsensusStateData".into()
     }
 }
 /// ConnectionStateData returns the SignBytes data for connection state
@@ -219,7 +250,10 @@ impl ::prost::Name for ConnectionStateData {
     const NAME: &'static str = "ConnectionStateData";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v2";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v2.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v2.ConnectionStateData".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v2.ConnectionStateData".into()
     }
 }
 /// ChannelStateData returns the SignBytes data for channel state
@@ -236,7 +270,10 @@ impl ::prost::Name for ChannelStateData {
     const NAME: &'static str = "ChannelStateData";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v2";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v2.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v2.ChannelStateData".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v2.ChannelStateData".into()
     }
 }
 /// PacketCommitmentData returns the SignBytes data for packet commitment
@@ -253,7 +290,10 @@ impl ::prost::Name for PacketCommitmentData {
     const NAME: &'static str = "PacketCommitmentData";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v2";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v2.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v2.PacketCommitmentData".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v2.PacketCommitmentData".into()
     }
 }
 /// PacketAcknowledgementData returns the SignBytes data for acknowledgement
@@ -270,7 +310,10 @@ impl ::prost::Name for PacketAcknowledgementData {
     const NAME: &'static str = "PacketAcknowledgementData";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v2";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v2.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v2.PacketAcknowledgementData".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v2.PacketAcknowledgementData".into()
     }
 }
 /// PacketReceiptAbsenceData returns the SignBytes data for
@@ -285,7 +328,10 @@ impl ::prost::Name for PacketReceiptAbsenceData {
     const NAME: &'static str = "PacketReceiptAbsenceData";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v2";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v2.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v2.PacketReceiptAbsenceData".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v2.PacketReceiptAbsenceData".into()
     }
 }
 /// NextSequenceRecvData returns the SignBytes data for verification of the next
@@ -302,7 +348,10 @@ impl ::prost::Name for NextSequenceRecvData {
     const NAME: &'static str = "NextSequenceRecvData";
     const PACKAGE: &'static str = "ibc.lightclients.solomachine.v2";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.solomachine.v2.{}", Self::NAME)
+        "ibc.lightclients.solomachine.v2.NextSequenceRecvData".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.solomachine.v2.NextSequenceRecvData".into()
     }
 }
 /// DataType defines the type of solo machine proof being created. This is done
diff --git a/cosmos-sdk-proto/src/prost/ibc-go/ibc.lightclients.tendermint.v1.rs b/cosmos-sdk-proto/src/prost/ibc-go/ibc.lightclients.tendermint.v1.rs
index 4819686b..4f539584 100644
--- a/cosmos-sdk-proto/src/prost/ibc-go/ibc.lightclients.tendermint.v1.rs
+++ b/cosmos-sdk-proto/src/prost/ibc-go/ibc.lightclients.tendermint.v1.rs
@@ -1,3 +1,4 @@
+// This file is @generated by prost-build.
 /// ClientState from Tendermint tracks the current validator set, latest height,
 /// and a possible frozen height.
 #[allow(clippy::derive_partial_eq_without_eq)]
@@ -10,13 +11,13 @@ pub struct ClientState {
     /// duration of the period since the LastestTimestamp during which the
     /// submitted headers are valid for upgrade
     #[prost(message, optional, tag = "3")]
-    pub trusting_period: ::core::option::Option<::prost_types::Duration>,
+    pub trusting_period: ::core::option::Option<::tendermint_proto::google::protobuf::Duration>,
     /// duration of the staking unbonding period
     #[prost(message, optional, tag = "4")]
-    pub unbonding_period: ::core::option::Option<::prost_types::Duration>,
+    pub unbonding_period: ::core::option::Option<::tendermint_proto::google::protobuf::Duration>,
     /// defines how much new (untrusted) header's Time can drift into the future.
     #[prost(message, optional, tag = "5")]
-    pub max_clock_drift: ::core::option::Option<::prost_types::Duration>,
+    pub max_clock_drift: ::core::option::Option<::tendermint_proto::google::protobuf::Duration>,
     /// Block height when the client was frozen due to a misbehaviour
     #[prost(message, optional, tag = "6")]
     pub frozen_height: ::core::option::Option<super::super::super::core::client::v1::Height>,
@@ -48,7 +49,10 @@ impl ::prost::Name for ClientState {
     const NAME: &'static str = "ClientState";
     const PACKAGE: &'static str = "ibc.lightclients.tendermint.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.tendermint.v1.{}", Self::NAME)
+        "ibc.lightclients.tendermint.v1.ClientState".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.tendermint.v1.ClientState".into()
     }
 }
 /// ConsensusState defines the consensus state from Tendermint.
@@ -58,7 +62,7 @@ pub struct ConsensusState {
     /// timestamp that corresponds to the block height in which the ConsensusState
     /// was stored.
     #[prost(message, optional, tag = "1")]
-    pub timestamp: ::core::option::Option<::prost_types::Timestamp>,
+    pub timestamp: ::core::option::Option<::tendermint_proto::google::protobuf::Timestamp>,
     /// commitment root (i.e app hash)
     #[prost(message, optional, tag = "2")]
     pub root: ::core::option::Option<super::super::super::core::commitment::v1::MerkleRoot>,
@@ -69,7 +73,10 @@ impl ::prost::Name for ConsensusState {
     const NAME: &'static str = "ConsensusState";
     const PACKAGE: &'static str = "ibc.lightclients.tendermint.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.tendermint.v1.{}", Self::NAME)
+        "ibc.lightclients.tendermint.v1.ConsensusState".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.tendermint.v1.ConsensusState".into()
     }
 }
 /// Misbehaviour is a wrapper over two conflicting Headers
@@ -88,7 +95,10 @@ impl ::prost::Name for Misbehaviour {
     const NAME: &'static str = "Misbehaviour";
     const PACKAGE: &'static str = "ibc.lightclients.tendermint.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.tendermint.v1.{}", Self::NAME)
+        "ibc.lightclients.tendermint.v1.Misbehaviour".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.tendermint.v1.Misbehaviour".into()
     }
 }
 /// Header defines the Tendermint client consensus Header.
@@ -119,13 +129,16 @@ impl ::prost::Name for Header {
     const NAME: &'static str = "Header";
     const PACKAGE: &'static str = "ibc.lightclients.tendermint.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.tendermint.v1.{}", Self::NAME)
+        "ibc.lightclients.tendermint.v1.Header".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.tendermint.v1.Header".into()
     }
 }
 /// Fraction defines the protobuf message type for tmmath.Fraction that only
 /// supports positive values.
 #[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct Fraction {
     #[prost(uint64, tag = "1")]
     pub numerator: u64,
@@ -136,6 +149,9 @@ impl ::prost::Name for Fraction {
     const NAME: &'static str = "Fraction";
     const PACKAGE: &'static str = "ibc.lightclients.tendermint.v1";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ibc.lightclients.tendermint.v1.{}", Self::NAME)
+        "ibc.lightclients.tendermint.v1.Fraction".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ibc.lightclients.tendermint.v1.Fraction".into()
     }
 }
diff --git a/cosmos-sdk-proto/src/prost/ibc-go/ics23.rs b/cosmos-sdk-proto/src/prost/ibc-go/ics23.rs
index a011ad65..f2404b16 100644
--- a/cosmos-sdk-proto/src/prost/ibc-go/ics23.rs
+++ b/cosmos-sdk-proto/src/prost/ibc-go/ics23.rs
@@ -1,3 +1,4 @@
+// This file is @generated by prost-build.
 /// *
 /// ExistenceProof takes a key and a value and a set of steps to perform on it.
 /// The result of peforming all these steps will provide a "root hash", which can
@@ -34,7 +35,10 @@ impl ::prost::Name for ExistenceProof {
     const NAME: &'static str = "ExistenceProof";
     const PACKAGE: &'static str = "ics23";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ics23.{}", Self::NAME)
+        "ics23.ExistenceProof".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ics23.ExistenceProof".into()
     }
 }
 ///
@@ -56,7 +60,10 @@ impl ::prost::Name for NonExistenceProof {
     const NAME: &'static str = "NonExistenceProof";
     const PACKAGE: &'static str = "ics23";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ics23.{}", Self::NAME)
+        "ics23.NonExistenceProof".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ics23.NonExistenceProof".into()
     }
 }
 ///
@@ -86,7 +93,10 @@ impl ::prost::Name for CommitmentProof {
     const NAME: &'static str = "CommitmentProof";
     const PACKAGE: &'static str = "ics23";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ics23.{}", Self::NAME)
+        "ics23.CommitmentProof".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ics23.CommitmentProof".into()
     }
 }
 /// *
@@ -124,7 +134,10 @@ impl ::prost::Name for LeafOp {
     const NAME: &'static str = "LeafOp";
     const PACKAGE: &'static str = "ics23";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ics23.{}", Self::NAME)
+        "ics23.LeafOp".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ics23.LeafOp".into()
     }
 }
 /// *
@@ -157,7 +170,10 @@ impl ::prost::Name for InnerOp {
     const NAME: &'static str = "InnerOp";
     const PACKAGE: &'static str = "ics23";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ics23.{}", Self::NAME)
+        "ics23.InnerOp".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ics23.InnerOp".into()
     }
 }
 /// *
@@ -191,7 +207,10 @@ impl ::prost::Name for ProofSpec {
     const NAME: &'static str = "ProofSpec";
     const PACKAGE: &'static str = "ics23";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ics23.{}", Self::NAME)
+        "ics23.ProofSpec".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ics23.ProofSpec".into()
     }
 }
 ///
@@ -228,7 +247,10 @@ impl ::prost::Name for InnerSpec {
     const NAME: &'static str = "InnerSpec";
     const PACKAGE: &'static str = "ics23";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ics23.{}", Self::NAME)
+        "ics23.InnerSpec".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ics23.InnerSpec".into()
     }
 }
 ///
@@ -243,7 +265,10 @@ impl ::prost::Name for BatchProof {
     const NAME: &'static str = "BatchProof";
     const PACKAGE: &'static str = "ics23";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ics23.{}", Self::NAME)
+        "ics23.BatchProof".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ics23.BatchProof".into()
     }
 }
 /// Use BatchEntry not CommitmentProof, to avoid recursion
@@ -268,7 +293,10 @@ impl ::prost::Name for BatchEntry {
     const NAME: &'static str = "BatchEntry";
     const PACKAGE: &'static str = "ics23";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ics23.{}", Self::NAME)
+        "ics23.BatchEntry".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ics23.BatchEntry".into()
     }
 }
 #[allow(clippy::derive_partial_eq_without_eq)]
@@ -283,7 +311,10 @@ impl ::prost::Name for CompressedBatchProof {
     const NAME: &'static str = "CompressedBatchProof";
     const PACKAGE: &'static str = "ics23";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ics23.{}", Self::NAME)
+        "ics23.CompressedBatchProof".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ics23.CompressedBatchProof".into()
     }
 }
 /// Use BatchEntry not CommitmentProof, to avoid recursion
@@ -308,7 +339,10 @@ impl ::prost::Name for CompressedBatchEntry {
     const NAME: &'static str = "CompressedBatchEntry";
     const PACKAGE: &'static str = "ics23";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ics23.{}", Self::NAME)
+        "ics23.CompressedBatchEntry".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ics23.CompressedBatchEntry".into()
     }
 }
 #[allow(clippy::derive_partial_eq_without_eq)]
@@ -328,7 +362,10 @@ impl ::prost::Name for CompressedExistenceProof {
     const NAME: &'static str = "CompressedExistenceProof";
     const PACKAGE: &'static str = "ics23";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ics23.{}", Self::NAME)
+        "ics23.CompressedExistenceProof".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ics23.CompressedExistenceProof".into()
     }
 }
 #[allow(clippy::derive_partial_eq_without_eq)]
@@ -346,7 +383,10 @@ impl ::prost::Name for CompressedNonExistenceProof {
     const NAME: &'static str = "CompressedNonExistenceProof";
     const PACKAGE: &'static str = "ics23";
     fn full_name() -> ::prost::alloc::string::String {
-        ::prost::alloc::format!("ics23.{}", Self::NAME)
+        "ics23.CompressedNonExistenceProof".into()
+    }
+    fn type_url() -> ::prost::alloc::string::String {
+        "/ics23.CompressedNonExistenceProof".into()
     }
 }
 #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
diff --git a/cosmos-sdk-proto/src/prost/wasmd/cosmos.base.query.v1beta1.rs b/cosmos-sdk-proto/src/prost/wasmd/cosmos.base.query.v1beta1.rs
index f37d3872..86f391b5 100644
--- a/cosmos-sdk-proto/src/prost/wasmd/cosmos.base.query.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/wasmd/cosmos.base.query.v1beta1.rs
@@ -6,6 +6,7 @@
 ///           Foo some_parameter = 1;
 ///           PageRequest pagination = 2;
 ///   }
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct PageRequest {
     /// key is a value returned in PageResponse.next_key to begin
@@ -41,6 +42,7 @@ pub struct PageRequest {
 ///           repeated Bar results = 1;
 ///           PageResponse page = 2;
 ///   }
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct PageResponse {
     /// next_key is the key to be passed to PageRequest.key to
diff --git a/cosmos-sdk-proto/src/prost/wasmd/cosmos.base.v1beta1.rs b/cosmos-sdk-proto/src/prost/wasmd/cosmos.base.v1beta1.rs
index cc4421b2..3701a1a8 100644
--- a/cosmos-sdk-proto/src/prost/wasmd/cosmos.base.v1beta1.rs
+++ b/cosmos-sdk-proto/src/prost/wasmd/cosmos.base.v1beta1.rs
@@ -3,6 +3,7 @@
 ///
 /// NOTE: The amount field is an Int which implements the custom method
 /// signatures required by gogoproto.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Coin {
     #[prost(string, tag = "1")]
@@ -14,6 +15,7 @@ pub struct Coin {
 ///
 /// NOTE: The amount field is an Dec which implements the custom method
 /// signatures required by gogoproto.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DecCoin {
     #[prost(string, tag = "1")]
@@ -22,12 +24,14 @@ pub struct DecCoin {
     pub amount: ::prost::alloc::string::String,
 }
 /// IntProto defines a Protobuf wrapper around an Int object.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct IntProto {
     #[prost(string, tag = "1")]
     pub int: ::prost::alloc::string::String,
 }
 /// DecProto defines a Protobuf wrapper around a Dec object.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DecProto {
     #[prost(string, tag = "1")]
diff --git a/cosmos-sdk-proto/src/prost/wasmd/cosmos_proto.rs b/cosmos-sdk-proto/src/prost/wasmd/cosmos_proto.rs
index a74f2b1e..29320227 100644
--- a/cosmos-sdk-proto/src/prost/wasmd/cosmos_proto.rs
+++ b/cosmos-sdk-proto/src/prost/wasmd/cosmos_proto.rs
@@ -1,6 +1,7 @@
 // @generated
 /// InterfaceDescriptor describes an interface type to be used with
 /// accepts_interface and implements_interface and declared by declare_interface.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct InterfaceDescriptor {
     /// name is the name of the interface. It should be a short-name (without
@@ -21,6 +22,7 @@ pub struct InterfaceDescriptor {
 /// Scalars should ideally define an encoding such that there is only one
 /// valid syntactical representation for a given semantic meaning,
 /// i.e. the encoding should be deterministic.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ScalarDescriptor {
     /// name is the name of the scalar. It should be a short-name (without
@@ -60,5 +62,14 @@ impl ScalarType {
             ScalarType::Bytes => "SCALAR_TYPE_BYTES",
         }
     }
+    /// Creates an enum from field names used in the ProtoBuf definition.
+    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+        match value {
+            "SCALAR_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
+            "SCALAR_TYPE_STRING" => Some(Self::String),
+            "SCALAR_TYPE_BYTES" => Some(Self::Bytes),
+            _ => None,
+        }
+    }
 }
 // @@protoc_insertion_point(module)
diff --git a/cosmos-sdk-proto/src/prost/wasmd/cosmwasm.wasm.v1.rs b/cosmos-sdk-proto/src/prost/wasmd/cosmwasm.wasm.v1.rs
index d2ed2ea6..6ba3d723 100644
--- a/cosmos-sdk-proto/src/prost/wasmd/cosmwasm.wasm.v1.rs
+++ b/cosmos-sdk-proto/src/prost/wasmd/cosmwasm.wasm.v1.rs
@@ -1,11 +1,13 @@
 // @generated
 /// AccessTypeParam
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AccessTypeParam {
     #[prost(enumeration = "AccessType", tag = "1")]
     pub value: i32,
 }
 /// AccessConfig access control type.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AccessConfig {
     #[prost(enumeration = "AccessType", tag = "1")]
@@ -18,6 +20,7 @@ pub struct AccessConfig {
     pub addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
 }
 /// Params defines the set of wasm parameters.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Params {
     #[prost(message, optional, tag = "1")]
@@ -26,6 +29,7 @@ pub struct Params {
     pub instantiate_default_permission: i32,
 }
 /// CodeInfo is data for the uploaded contract WASM code
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CodeInfo {
     /// CodeHash is the unique identifier created by wasmvm
@@ -39,6 +43,7 @@ pub struct CodeInfo {
     pub instantiate_config: ::core::option::Option<AccessConfig>,
 }
 /// ContractInfo stores a WASM contract instance
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ContractInfo {
     /// CodeID is the reference to the stored Wasm code
@@ -63,9 +68,10 @@ pub struct ContractInfo {
     /// Extension is an extension point to store custom metadata within the
     /// persistence model.
     #[prost(message, optional, tag = "7")]
-    pub extension: ::core::option::Option<::prost_types::Any>,
+    pub extension: ::core::option::Option<::tendermint_proto::google::protobuf::Any>,
 }
 /// ContractCodeHistoryEntry metadata to a contract.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ContractCodeHistoryEntry {
     #[prost(enumeration = "ContractCodeHistoryOperationType", tag = "1")]
@@ -81,6 +87,7 @@ pub struct ContractCodeHistoryEntry {
 }
 /// AbsoluteTxPosition is a unique transaction position that allows for global
 /// ordering of transactions.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AbsoluteTxPosition {
     /// BlockHeight is the block the contract was created at
@@ -92,6 +99,7 @@ pub struct AbsoluteTxPosition {
     pub tx_index: u64,
 }
 /// Model is a struct that holds a KV pair
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Model {
     /// hex-encode key to read it better (this is often ascii)
@@ -131,6 +139,17 @@ impl AccessType {
             AccessType::AnyOfAddresses => "ACCESS_TYPE_ANY_OF_ADDRESSES",
         }
     }
+    /// Creates an enum from field names used in the ProtoBuf definition.
+    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+        match value {
+            "ACCESS_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
+            "ACCESS_TYPE_NOBODY" => Some(Self::Nobody),
+            "ACCESS_TYPE_ONLY_ADDRESS" => Some(Self::OnlyAddress),
+            "ACCESS_TYPE_EVERYBODY" => Some(Self::Everybody),
+            "ACCESS_TYPE_ANY_OF_ADDRESSES" => Some(Self::AnyOfAddresses),
+            _ => None,
+        }
+    }
 }
 /// ContractCodeHistoryOperationType actions that caused a code change
 #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
@@ -164,8 +183,19 @@ impl ContractCodeHistoryOperationType {
             }
         }
     }
+    /// Creates an enum from field names used in the ProtoBuf definition.
+    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+        match value {
+            "CONTRACT_CODE_HISTORY_OPERATION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
+            "CONTRACT_CODE_HISTORY_OPERATION_TYPE_INIT" => Some(Self::Init),
+            "CONTRACT_CODE_HISTORY_OPERATION_TYPE_MIGRATE" => Some(Self::Migrate),
+            "CONTRACT_CODE_HISTORY_OPERATION_TYPE_GENESIS" => Some(Self::Genesis),
+            _ => None,
+        }
+    }
 }
 /// MsgStoreCode submit Wasm code to the system
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgStoreCode {
     /// Sender is the that actor that signed the messages
@@ -180,6 +210,7 @@ pub struct MsgStoreCode {
     pub instantiate_permission: ::core::option::Option<AccessConfig>,
 }
 /// MsgStoreCodeResponse returns store result data.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgStoreCodeResponse {
     /// CodeID is the reference to the stored WASM code
@@ -191,6 +222,7 @@ pub struct MsgStoreCodeResponse {
 }
 /// MsgInstantiateContract create a new smart contract instance for the given
 /// code id.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgInstantiateContract {
     /// Sender is the that actor that signed the messages
@@ -214,6 +246,7 @@ pub struct MsgInstantiateContract {
 }
 /// MsgInstantiateContract2 create a new smart contract instance for the given
 /// code id with a predicable address.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgInstantiateContract2 {
     /// Sender is the that actor that signed the messages
@@ -243,6 +276,7 @@ pub struct MsgInstantiateContract2 {
     pub fix_msg: bool,
 }
 /// MsgInstantiateContractResponse return instantiation result data
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgInstantiateContractResponse {
     /// Address is the bech32 address of the new contract instance.
@@ -253,6 +287,7 @@ pub struct MsgInstantiateContractResponse {
     pub data: ::prost::alloc::vec::Vec<u8>,
 }
 /// MsgInstantiateContract2Response return instantiation result data
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgInstantiateContract2Response {
     /// Address is the bech32 address of the new contract instance.
@@ -263,6 +298,7 @@ pub struct MsgInstantiateContract2Response {
     pub data: ::prost::alloc::vec::Vec<u8>,
 }
 /// MsgExecuteContract submits the given message data to a smart contract
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgExecuteContract {
     /// Sender is the that actor that signed the messages
@@ -279,6 +315,7 @@ pub struct MsgExecuteContract {
     pub funds: ::prost::alloc::vec::Vec<super::super::super::cosmos::base::v1beta1::Coin>,
 }
 /// MsgExecuteContractResponse returns execution result data.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgExecuteContractResponse {
     /// Data contains bytes to returned from the contract
@@ -286,6 +323,7 @@ pub struct MsgExecuteContractResponse {
     pub data: ::prost::alloc::vec::Vec<u8>,
 }
 /// MsgMigrateContract runs a code upgrade/ downgrade for a smart contract
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgMigrateContract {
     /// Sender is the that actor that signed the messages
@@ -302,6 +340,7 @@ pub struct MsgMigrateContract {
     pub msg: ::prost::alloc::vec::Vec<u8>,
 }
 /// MsgMigrateContractResponse returns contract migration result data.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgMigrateContractResponse {
     /// Data contains same raw bytes returned as data from the wasm contract.
@@ -310,6 +349,7 @@ pub struct MsgMigrateContractResponse {
     pub data: ::prost::alloc::vec::Vec<u8>,
 }
 /// MsgUpdateAdmin sets a new admin for a smart contract
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgUpdateAdmin {
     /// Sender is the that actor that signed the messages
@@ -323,9 +363,11 @@ pub struct MsgUpdateAdmin {
     pub contract: ::prost::alloc::string::String,
 }
 /// MsgUpdateAdminResponse returns empty data
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgUpdateAdminResponse {}
 /// MsgClearAdmin removes any admin stored for a smart contract
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgClearAdmin {
     /// Sender is the that actor that signed the messages
@@ -336,9 +378,11 @@ pub struct MsgClearAdmin {
     pub contract: ::prost::alloc::string::String,
 }
 /// MsgClearAdminResponse returns empty data
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgClearAdminResponse {}
 /// GenesisState - genesis state of x/wasm
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GenesisState {
     #[prost(message, optional, tag = "1")]
@@ -356,6 +400,7 @@ pub struct GenesisState {
 pub mod genesis_state {
     /// GenMsgs define the messages that can be executed during genesis phase in
     /// order. The intention is to have more human readable data that is auditable.
+    #[allow(clippy::derive_partial_eq_without_eq)]
     #[derive(Clone, PartialEq, ::prost::Message)]
     pub struct GenMsgs {
         /// sum is a single message
@@ -365,6 +410,7 @@ pub mod genesis_state {
     /// Nested message and enum types in `GenMsgs`.
     pub mod gen_msgs {
         /// sum is a single message
+        #[allow(clippy::derive_partial_eq_without_eq)]
         #[derive(Clone, PartialEq, ::prost::Oneof)]
         pub enum Sum {
             #[prost(message, tag = "1")]
@@ -379,6 +425,7 @@ pub mod genesis_state {
     }
 }
 /// Code struct encompasses CodeInfo and CodeBytes
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Code {
     #[prost(uint64, tag = "1")]
@@ -392,6 +439,7 @@ pub struct Code {
     pub pinned: bool,
 }
 /// Contract struct encompasses ContractAddress, ContractInfo, and ContractState
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Contract {
     #[prost(string, tag = "1")]
@@ -402,6 +450,7 @@ pub struct Contract {
     pub contract_state: ::prost::alloc::vec::Vec<Model>,
 }
 /// Sequence key and value of an id generation counter
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Sequence {
     #[prost(bytes = "vec", tag = "1")]
@@ -410,6 +459,7 @@ pub struct Sequence {
     pub value: u64,
 }
 /// MsgIBCSend
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgIbcSend {
     /// the channel by which the packet will be sent
@@ -429,12 +479,14 @@ pub struct MsgIbcSend {
     pub data: ::prost::alloc::vec::Vec<u8>,
 }
 /// MsgIBCCloseChannel port and channel need to be owned by the contract
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MsgIbcCloseChannel {
     #[prost(string, tag = "2")]
     pub channel: ::prost::alloc::string::String,
 }
 /// StoreCodeProposal gov proposal content type to submit WASM code to the system
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct StoreCodeProposal {
     /// Title is a short summary
@@ -458,6 +510,7 @@ pub struct StoreCodeProposal {
 }
 /// InstantiateContractProposal gov proposal content type to instantiate a
 /// contract.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct InstantiateContractProposal {
     /// Title is a short summary
@@ -486,6 +539,7 @@ pub struct InstantiateContractProposal {
     pub funds: ::prost::alloc::vec::Vec<super::super::super::cosmos::base::v1beta1::Coin>,
 }
 /// MigrateContractProposal gov proposal content type to migrate a contract.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MigrateContractProposal {
     /// Title is a short summary
@@ -507,6 +561,7 @@ pub struct MigrateContractProposal {
     pub msg: ::prost::alloc::vec::Vec<u8>,
 }
 /// SudoContractProposal gov proposal content type to call sudo on a contract.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SudoContractProposal {
     /// Title is a short summary
@@ -524,6 +579,7 @@ pub struct SudoContractProposal {
 }
 /// ExecuteContractProposal gov proposal content type to call execute on a
 /// contract.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ExecuteContractProposal {
     /// Title is a short summary
@@ -546,6 +602,7 @@ pub struct ExecuteContractProposal {
     pub funds: ::prost::alloc::vec::Vec<super::super::super::cosmos::base::v1beta1::Coin>,
 }
 /// UpdateAdminProposal gov proposal content type to set an admin for a contract.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct UpdateAdminProposal {
     /// Title is a short summary
@@ -563,6 +620,7 @@ pub struct UpdateAdminProposal {
 }
 /// ClearAdminProposal gov proposal content type to clear the admin of a
 /// contract.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ClearAdminProposal {
     /// Title is a short summary
@@ -577,6 +635,7 @@ pub struct ClearAdminProposal {
 }
 /// PinCodesProposal gov proposal content type to pin a set of code ids in the
 /// wasmvm cache.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct PinCodesProposal {
     /// Title is a short summary
@@ -591,6 +650,7 @@ pub struct PinCodesProposal {
 }
 /// UnpinCodesProposal gov proposal content type to unpin a set of code ids in
 /// the wasmvm cache.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct UnpinCodesProposal {
     /// Title is a short summary
@@ -605,6 +665,7 @@ pub struct UnpinCodesProposal {
 }
 /// AccessConfigUpdate contains the code id and the access config to be
 /// applied.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AccessConfigUpdate {
     /// CodeID is the reference to the stored WASM code to be updated
@@ -616,6 +677,7 @@ pub struct AccessConfigUpdate {
 }
 /// UpdateInstantiateConfigProposal gov proposal content type to update
 /// instantiate config to a  set of code ids.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct UpdateInstantiateConfigProposal {
     /// Title is a short summary
@@ -631,6 +693,7 @@ pub struct UpdateInstantiateConfigProposal {
 }
 /// QueryContractInfoRequest is the request type for the Query/ContractInfo RPC
 /// method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryContractInfoRequest {
     /// address is the address of the contract to query
@@ -639,6 +702,7 @@ pub struct QueryContractInfoRequest {
 }
 /// QueryContractInfoResponse is the response type for the Query/ContractInfo RPC
 /// method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryContractInfoResponse {
     /// address is the address of the contract
@@ -649,6 +713,7 @@ pub struct QueryContractInfoResponse {
 }
 /// QueryContractHistoryRequest is the request type for the Query/ContractHistory
 /// RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryContractHistoryRequest {
     /// address is the address of the contract to query
@@ -661,6 +726,7 @@ pub struct QueryContractHistoryRequest {
 }
 /// QueryContractHistoryResponse is the response type for the
 /// Query/ContractHistory RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryContractHistoryResponse {
     #[prost(message, repeated, tag = "1")]
@@ -672,6 +738,7 @@ pub struct QueryContractHistoryResponse {
 }
 /// QueryContractsByCodeRequest is the request type for the Query/ContractsByCode
 /// RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryContractsByCodeRequest {
     /// grpc-gateway_out does not support Go style CodID
@@ -684,6 +751,7 @@ pub struct QueryContractsByCodeRequest {
 }
 /// QueryContractsByCodeResponse is the response type for the
 /// Query/ContractsByCode RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryContractsByCodeResponse {
     /// contracts are a set of contract addresses
@@ -696,6 +764,7 @@ pub struct QueryContractsByCodeResponse {
 }
 /// QueryAllContractStateRequest is the request type for the
 /// Query/AllContractState RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryAllContractStateRequest {
     /// address is the address of the contract
@@ -708,6 +777,7 @@ pub struct QueryAllContractStateRequest {
 }
 /// QueryAllContractStateResponse is the response type for the
 /// Query/AllContractState RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryAllContractStateResponse {
     #[prost(message, repeated, tag = "1")]
@@ -719,6 +789,7 @@ pub struct QueryAllContractStateResponse {
 }
 /// QueryRawContractStateRequest is the request type for the
 /// Query/RawContractState RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryRawContractStateRequest {
     /// address is the address of the contract
@@ -729,6 +800,7 @@ pub struct QueryRawContractStateRequest {
 }
 /// QueryRawContractStateResponse is the response type for the
 /// Query/RawContractState RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryRawContractStateResponse {
     /// Data contains the raw store data
@@ -737,6 +809,7 @@ pub struct QueryRawContractStateResponse {
 }
 /// QuerySmartContractStateRequest is the request type for the
 /// Query/SmartContractState RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QuerySmartContractStateRequest {
     /// address is the address of the contract
@@ -748,6 +821,7 @@ pub struct QuerySmartContractStateRequest {
 }
 /// QuerySmartContractStateResponse is the response type for the
 /// Query/SmartContractState RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QuerySmartContractStateResponse {
     /// Data contains the json data returned from the smart contract
@@ -755,6 +829,7 @@ pub struct QuerySmartContractStateResponse {
     pub data: ::prost::alloc::vec::Vec<u8>,
 }
 /// QueryCodeRequest is the request type for the Query/Code RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryCodeRequest {
     /// grpc-gateway_out does not support Go style CodID
@@ -762,6 +837,7 @@ pub struct QueryCodeRequest {
     pub code_id: u64,
 }
 /// CodeInfoResponse contains code meta data from CodeInfo
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CodeInfoResponse {
     /// id for legacy support
@@ -775,6 +851,7 @@ pub struct CodeInfoResponse {
     pub instantiate_permission: ::core::option::Option<AccessConfig>,
 }
 /// QueryCodeResponse is the response type for the Query/Code RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryCodeResponse {
     #[prost(message, optional, tag = "1")]
@@ -783,6 +860,7 @@ pub struct QueryCodeResponse {
     pub data: ::prost::alloc::vec::Vec<u8>,
 }
 /// QueryCodesRequest is the request type for the Query/Codes RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryCodesRequest {
     /// pagination defines an optional pagination for the request.
@@ -791,6 +869,7 @@ pub struct QueryCodesRequest {
         ::core::option::Option<super::super::super::cosmos::base::query::v1beta1::PageRequest>,
 }
 /// QueryCodesResponse is the response type for the Query/Codes RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryCodesResponse {
     #[prost(message, repeated, tag = "1")]
@@ -802,6 +881,7 @@ pub struct QueryCodesResponse {
 }
 /// QueryPinnedCodesRequest is the request type for the Query/PinnedCodes
 /// RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryPinnedCodesRequest {
     /// pagination defines an optional pagination for the request.
@@ -811,6 +891,7 @@ pub struct QueryPinnedCodesRequest {
 }
 /// QueryPinnedCodesResponse is the response type for the
 /// Query/PinnedCodes RPC method
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryPinnedCodesResponse {
     #[prost(uint64, repeated, packed = "false", tag = "1")]
@@ -821,9 +902,11 @@ pub struct QueryPinnedCodesResponse {
         ::core::option::Option<super::super::super::cosmos::base::query::v1beta1::PageResponse>,
 }
 /// QueryParamsRequest is the request type for the Query/Params RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryParamsRequest {}
 /// QueryParamsResponse is the response type for the Query/Params RPC method.
+#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QueryParamsResponse {
     /// params defines the parameters of the module.
diff --git a/cosmrs/Cargo.toml b/cosmrs/Cargo.toml
index 7939f2ce..dcee740e 100644
--- a/cosmrs/Cargo.toml
+++ b/cosmrs/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "cosmrs"
-version = "0.18.0"
+version = "0.19.0-pre"
 authors = ["Tony Arcieri <tony@iqlusion.io>"]
 license = "Apache-2.0"
 repository = "https://github.com/cosmos/cosmos-rust/tree/main/cosmrs"
@@ -12,7 +12,7 @@ edition = "2021"
 rust-version = "1.72"
 
 [dependencies]
-cosmos-sdk-proto = { version = "0.23", default-features = false, features = ["std"], path = "../cosmos-sdk-proto" }
+cosmos-sdk-proto = { version = "=0.24.0-pre", default-features = false, features = ["std"], path = "../cosmos-sdk-proto" }
 ecdsa = "0.16"
 eyre = "0.6"
 k256 = { version = "0.13", default-features = false, features = ["ecdsa", "sha256"] }
@@ -21,12 +21,12 @@ serde = { version = "1", features = ["serde_derive"] }
 serde_json = "1"
 signature = { version = "2", features = ["std"] }
 subtle-encoding = { version = "0.5", features = ["bech32-preview"] }
-tendermint = { version = "0.38", features = ["secp256k1"] }
+tendermint = { version = "0.39", features = ["secp256k1"] }
 thiserror = "1"
 
 # optional dependencies
 bip32 = { version = "0.5", optional = true, default-features = false, features = ["alloc", "secp256k1"] }
-tendermint-rpc = { version = "0.38", optional = true, features = ["http-client"] }
+tendermint-rpc = { version = "0.39", optional = true, features = ["http-client"] }
 tokio = { version = "1", optional = true }
 
 [dev-dependencies]
diff --git a/proto-build/buf.sdk.gen.yaml b/proto-build/buf.sdk.gen.yaml
index 3565fdcc..3ee8e4d2 100644
--- a/proto-build/buf.sdk.gen.yaml
+++ b/proto-build/buf.sdk.gen.yaml
@@ -1,10 +1,12 @@
 version: v1
 plugins:
-  - plugin: buf.build/community/neoeinstein-prost:v0.2.1
+  - plugin: buf.build/community/neoeinstein-prost:v0.3.1
     out: .
     opt:
       - extern_path=.tendermint=::tendermint_proto::v0_34
   - plugin: buf.build/community/neoeinstein-tonic:v0.3.0
     out: .
     opt:
+      - compile_well_known_types
+      - extern_path=.google.protobuf=::tendermint_proto::google::protobuf
       - extern_path=.tendermint=::tendermint_proto::v0_34
diff --git a/proto-build/buf.wasmd.gen.yaml b/proto-build/buf.wasmd.gen.yaml
index 17b5bb6e..b49ebab5 100644
--- a/proto-build/buf.wasmd.gen.yaml
+++ b/proto-build/buf.wasmd.gen.yaml
@@ -1,8 +1,10 @@
 version: v1
 plugins:
-  - plugin: buf.build/community/neoeinstein-prost:v0.2.1
+  - plugin: buf.build/community/neoeinstein-prost:v0.3.1
     out: .
   - plugin: buf.build/community/neoeinstein-tonic:v0.3.0
     out: .
     opt:
+      - compile_well_known_types
+      - extern_path=.google.protobuf=::tendermint_proto::google::protobuf
       - no_server=true
diff --git a/proto-build/src/main.rs b/proto-build/src/main.rs
index e4634862..82f965f6 100644
--- a/proto-build/src/main.rs
+++ b/proto-build/src/main.rs
@@ -354,6 +354,7 @@ fn copy_generated_files(from_dir: &Path, to_dir: &Path) {
 
 fn copy_and_patch(src: impl AsRef<Path>, dest: impl AsRef<Path>) -> io::Result<()> {
     /// Regex substitutions to apply to the prost-generated output
+    // TODO(tarcieri): use prost-build/tonic-build config for this instead
     const REPLACEMENTS: &[(&str, &str)] = &[
         // Use `tendermint-proto` proto definitions
         ("(super::)+tendermint", "tendermint_proto"),
@@ -375,6 +376,9 @@ fn copy_and_patch(src: impl AsRef<Path>, dest: impl AsRef<Path>) -> io::Result<(
             "/// Generated server implementations.\n\
              #[cfg(feature = \"grpc\")]",
         ),
+        // Use `tendermint_proto` as source of `google.protobuf` types
+        // TODO(tarcieri): figure out what's wrong with our `buf` config and do it there
+        ("::prost_types::", "::tendermint_proto::google::protobuf::"),
     ];
 
     // Skip proto files belonging to `EXCLUDED_PROTO_PACKAGES`