diff --git a/source/includes/_changelog.md b/source/includes/_changelog.md
index 90681f37..dd4c5044 100644
--- a/source/includes/_changelog.md
+++ b/source/includes/_changelog.md
@@ -6,6 +6,7 @@
- Added support for all queries from the `tendermint` module
- Added support for all queries from the `IBC transfer` module
- Added support for all queries from the `IBC core channel` module
+ - Added support for all queries from the `IBC core client` module
## 2024-03-08
- Updated the API documentation to include all queries and messages for the `distribution` and `chain exchange` modules
diff --git a/source/includes/_ibccoreclient.md b/source/includes/_ibccoreclient.md
new file mode 100644
index 00000000..70aa0a6e
--- /dev/null
+++ b/source/includes/_ibccoreclient.md
@@ -0,0 +1,1960 @@
+# - IBC Core Client
+
+Includes all the messages and queries associated to clients and consensus from the IBC core client module
+
+## ClientState
+
+Queries an IBC light client
+
+**IP rate limit group:** `chain`
+
+### Request Parameters
+> Request Example:
+
+
+
+```py
+import asyncio
+
+from google.protobuf import symbol_database
+
+from pyinjective.async_client import AsyncClient
+from pyinjective.core.network import Network
+
+
+async def main() -> None:
+ network = Network.testnet()
+ client = AsyncClient(network)
+
+ client_id = "07-tendermint-0"
+
+ state = await client.fetch_ibc_client_state(client_id=client_id)
+ print(state)
+
+
+if __name__ == "__main__":
+ symbol_db = symbol_database.Default()
+ asyncio.get_event_loop().run_until_complete(main())
+```
+
+
+
+
+```go
+package main
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/InjectiveLabs/sdk-go/client"
+
+ chainclient "github.com/InjectiveLabs/sdk-go/client/chain"
+ "github.com/InjectiveLabs/sdk-go/client/common"
+ rpchttp "github.com/cometbft/cometbft/rpc/client/http"
+
+ "os"
+)
+
+func main() {
+ network := common.LoadNetwork("testnet", "lb")
+ tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket")
+ if err != nil {
+ panic(err)
+ }
+
+ senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring(
+ os.Getenv("HOME")+"/.injectived",
+ "injectived",
+ "file",
+ "inj-user",
+ "12345678",
+ "5d386fbdbf11f1141010f81a46b40f94887367562bd33b452bbaa6ce1cd1381e", // keyring will be used if pk not provided
+ false,
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ clientCtx, err := chainclient.NewClientContext(
+ network.ChainId,
+ senderAddress.String(),
+ cosmosKeyring,
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient)
+
+ chainClient, err := chainclient.NewChainClient(
+ clientCtx,
+ network,
+ common.OptionGasPrices(client.DefaultGasPriceWithDenom),
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ clientId := "07-tendermint-0"
+ ctx := context.Background()
+
+ res, err := chainClient.FetchIBCClientState(ctx, clientId)
+ if err != nil {
+ fmt.Println(err)
+ }
+
+ fmt.Print(res)
+
+}
+```
+
+
+
+
Parameter | Type | Description | Required |
---|
client_id | String | Client state unique identifier | Yes |
+
+
+### Response Parameters
+> Response Example:
+
+``` json
+{
+ "clientState":{
+ "@type":"/ibc.lightclients.tendermint.v1.ClientState",
+ "chainId":"band-laozi-testnet4",
+ "trustLevel":{
+ "numerator":"1",
+ "denominator":"3"
+ },
+ "trustingPeriod":"1209600s",
+ "unbondingPeriod":"1814400s",
+ "maxClockDrift":"20s",
+ "frozenHeight":{
+ "revisionNumber":"0",
+ "revisionHeight":"0"
+ },
+ "latestHeight":{
+ "revisionHeight":"7379538",
+ "revisionNumber":"0"
+ },
+ "proofSpecs":[
+ {
+ "leafSpec":{
+ "hash":"SHA256",
+ "prehashValue":"SHA256",
+ "length":"VAR_PROTO",
+ "prefix":"AA==",
+ "prehashKey":"NO_HASH"
+ },
+ "innerSpec":{
+ "childOrder":[
+ 0,
+ 1
+ ],
+ "childSize":33,
+ "minPrefixLength":4,
+ "maxPrefixLength":12,
+ "hash":"SHA256",
+ "emptyChild":""
+ },
+ "maxDepth":0,
+ "minDepth":0,
+ "prehashKeyBeforeComparison":false
+ },
+ {
+ "leafSpec":{
+ "hash":"SHA256",
+ "prehashValue":"SHA256",
+ "length":"VAR_PROTO",
+ "prefix":"AA==",
+ "prehashKey":"NO_HASH"
+ },
+ "innerSpec":{
+ "childOrder":[
+ 0,
+ 1
+ ],
+ "childSize":32,
+ "minPrefixLength":1,
+ "maxPrefixLength":1,
+ "hash":"SHA256",
+ "emptyChild":""
+ },
+ "maxDepth":0,
+ "minDepth":0,
+ "prehashKeyBeforeComparison":false
+ }
+ ],
+ "upgradePath":[
+ "upgrade",
+ "upgradedIBCState"
+ ],
+ "allowUpdateAfterExpiry":true,
+ "allowUpdateAfterMisbehaviour":true
+ },
+ "proofHeight":{
+ "revisionNumber":"888",
+ "revisionHeight":"27527237"
+ },
+ "proof":""
+}
+```
+
+
+Parameter | Type | Description |
---|
client_state | Any | Client state associated with the request identifier |
+proof | Byte Array | Merkle proof of existence |
+proof_height | Height | Height at which the proof was retrieved |
+
+
+
+
+**Height**
+
+
+Parameter | Type | Description |
---|
revision_number | Integer | The revision that the client is currently on |
+revision_height | Integer | The height within the given revision |
+
+
+
+## ClientStates
+
+Queries all the IBC light clients of a chain
+
+**IP rate limit group:** `chain`
+
+### Request Parameters
+> Request Example:
+
+
+
+```py
+import asyncio
+
+from google.protobuf import symbol_database
+
+from pyinjective.async_client import AsyncClient
+from pyinjective.client.model.pagination import PaginationOption
+from pyinjective.core.network import Network
+
+
+async def main() -> None:
+ network = Network.testnet()
+ client = AsyncClient(network)
+
+ pagination = PaginationOption(skip=2, limit=4)
+
+ states = await client.fetch_ibc_client_states(pagination=pagination)
+ print(states)
+
+
+if __name__ == "__main__":
+ symbol_db = symbol_database.Default()
+ asyncio.get_event_loop().run_until_complete(main())
+```
+
+
+
+
+```go
+package main
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/cosmos/cosmos-sdk/types/query"
+
+ "github.com/InjectiveLabs/sdk-go/client"
+
+ chainclient "github.com/InjectiveLabs/sdk-go/client/chain"
+ "github.com/InjectiveLabs/sdk-go/client/common"
+ rpchttp "github.com/cometbft/cometbft/rpc/client/http"
+
+ "os"
+)
+
+func main() {
+ network := common.LoadNetwork("testnet", "lb")
+ tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket")
+ if err != nil {
+ panic(err)
+ }
+
+ senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring(
+ os.Getenv("HOME")+"/.injectived",
+ "injectived",
+ "file",
+ "inj-user",
+ "12345678",
+ "5d386fbdbf11f1141010f81a46b40f94887367562bd33b452bbaa6ce1cd1381e", // keyring will be used if pk not provided
+ false,
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ clientCtx, err := chainclient.NewClientContext(
+ network.ChainId,
+ senderAddress.String(),
+ cosmosKeyring,
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient)
+
+ chainClient, err := chainclient.NewChainClient(
+ clientCtx,
+ network,
+ common.OptionGasPrices(client.DefaultGasPriceWithDenom),
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ pagination := query.PageRequest{Offset: 2, Limit: 4}
+ ctx := context.Background()
+
+ res, err := chainClient.FetchIBCClientStates(ctx, &pagination)
+ if err != nil {
+ fmt.Println(err)
+ }
+
+ fmt.Print(res)
+
+}
+```
+
+
+
+Parameter | Type | Description | Required |
---|
pagination | PageRequest | The optional pagination for the request | No |
+
+
+### Response Parameters
+> Response Example:
+
+``` json
+{
+ "clientStates":[
+ {
+ "clientId":"07-tendermint-0",
+ "clientState":{
+ "@type":"/ibc.lightclients.tendermint.v1.ClientState",
+ "chainId":"band-laozi-testnet4",
+ "trustLevel":{
+ "numerator":"1",
+ "denominator":"3"
+ },
+ "trustingPeriod":"1209600s",
+ "unbondingPeriod":"1814400s",
+ "maxClockDrift":"20s",
+ "frozenHeight":{
+ "revisionNumber":"0",
+ "revisionHeight":"0"
+ },
+ "latestHeight":{
+ "revisionHeight":"7379538",
+ "revisionNumber":"0"
+ },
+ "proofSpecs":[
+ {
+ "leafSpec":{
+ "hash":"SHA256",
+ "prehashValue":"SHA256",
+ "length":"VAR_PROTO",
+ "prefix":"AA==",
+ "prehashKey":"NO_HASH"
+ },
+ "innerSpec":{
+ "childOrder":[
+ 0,
+ 1
+ ],
+ "childSize":33,
+ "minPrefixLength":4,
+ "maxPrefixLength":12,
+ "hash":"SHA256",
+ "emptyChild":""
+ },
+ "maxDepth":0,
+ "minDepth":0,
+ "prehashKeyBeforeComparison":false
+ },
+ {
+ "leafSpec":{
+ "hash":"SHA256",
+ "prehashValue":"SHA256",
+ "length":"VAR_PROTO",
+ "prefix":"AA==",
+ "prehashKey":"NO_HASH"
+ },
+ "innerSpec":{
+ "childOrder":[
+ 0,
+ 1
+ ],
+ "childSize":32,
+ "minPrefixLength":1,
+ "maxPrefixLength":1,
+ "hash":"SHA256",
+ "emptyChild":""
+ },
+ "maxDepth":0,
+ "minDepth":0,
+ "prehashKeyBeforeComparison":false
+ }
+ ],
+ "upgradePath":[
+ "upgrade",
+ "upgradedIBCState"
+ ],
+ "allowUpdateAfterExpiry":true,
+ "allowUpdateAfterMisbehaviour":true
+ }
+ },
+ {
+ "clientId":"07-tendermint-1",
+ "clientState":{
+ "@type":"/ibc.lightclients.tendermint.v1.ClientState",
+ "chainId":"band-laozi-testnet4",
+ "trustLevel":{
+ "numerator":"1",
+ "denominator":"3"
+ },
+ "trustingPeriod":"1209600s",
+ "unbondingPeriod":"1814400s",
+ "maxClockDrift":"20s",
+ "frozenHeight":{
+ "revisionNumber":"0",
+ "revisionHeight":"0"
+ },
+ "latestHeight":{
+ "revisionHeight":"7692651",
+ "revisionNumber":"0"
+ },
+ "proofSpecs":[
+ {
+ "leafSpec":{
+ "hash":"SHA256",
+ "prehashValue":"SHA256",
+ "length":"VAR_PROTO",
+ "prefix":"AA==",
+ "prehashKey":"NO_HASH"
+ },
+ "innerSpec":{
+ "childOrder":[
+ 0,
+ 1
+ ],
+ "childSize":33,
+ "minPrefixLength":4,
+ "maxPrefixLength":12,
+ "hash":"SHA256",
+ "emptyChild":""
+ },
+ "maxDepth":0,
+ "minDepth":0,
+ "prehashKeyBeforeComparison":false
+ },
+ {
+ "leafSpec":{
+ "hash":"SHA256",
+ "prehashValue":"SHA256",
+ "length":"VAR_PROTO",
+ "prefix":"AA==",
+ "prehashKey":"NO_HASH"
+ },
+ "innerSpec":{
+ "childOrder":[
+ 0,
+ 1
+ ],
+ "childSize":32,
+ "minPrefixLength":1,
+ "maxPrefixLength":1,
+ "hash":"SHA256",
+ "emptyChild":""
+ },
+ "maxDepth":0,
+ "minDepth":0,
+ "prehashKeyBeforeComparison":false
+ }
+ ],
+ "upgradePath":[
+ "upgrade",
+ "upgradedIBCState"
+ ],
+ "allowUpdateAfterExpiry":true,
+ "allowUpdateAfterMisbehaviour":true
+ }
+ },
+ {
+ "clientId":"07-tendermint-10",
+ "clientState":{
+ "@type":"/ibc.lightclients.tendermint.v1.ClientState",
+ "chainId":"pisco-1",
+ "trustLevel":{
+ "numerator":"1",
+ "denominator":"3"
+ },
+ "trustingPeriod":"345600s",
+ "unbondingPeriod":"432000s",
+ "maxClockDrift":"50s",
+ "frozenHeight":{
+ "revisionNumber":"0",
+ "revisionHeight":"0"
+ },
+ "latestHeight":{
+ "revisionNumber":"1",
+ "revisionHeight":"2304261"
+ },
+ "proofSpecs":[
+ {
+ "leafSpec":{
+ "hash":"SHA256",
+ "prehashValue":"SHA256",
+ "length":"VAR_PROTO",
+ "prefix":"AA==",
+ "prehashKey":"NO_HASH"
+ },
+ "innerSpec":{
+ "childOrder":[
+ 0,
+ 1
+ ],
+ "childSize":33,
+ "minPrefixLength":4,
+ "maxPrefixLength":12,
+ "hash":"SHA256",
+ "emptyChild":""
+ },
+ "maxDepth":0,
+ "minDepth":0,
+ "prehashKeyBeforeComparison":false
+ },
+ {
+ "leafSpec":{
+ "hash":"SHA256",
+ "prehashValue":"SHA256",
+ "length":"VAR_PROTO",
+ "prefix":"AA==",
+ "prehashKey":"NO_HASH"
+ },
+ "innerSpec":{
+ "childOrder":[
+ 0,
+ 1
+ ],
+ "childSize":32,
+ "minPrefixLength":1,
+ "maxPrefixLength":1,
+ "hash":"SHA256",
+ "emptyChild":""
+ },
+ "maxDepth":0,
+ "minDepth":0,
+ "prehashKeyBeforeComparison":false
+ }
+ ],
+ "upgradePath":[
+ "upgrade",
+ "upgradedIBCState"
+ ],
+ "allowUpdateAfterExpiry":true,
+ "allowUpdateAfterMisbehaviour":true
+ }
+ },
+ {
+ "clientId":"07-tendermint-100",
+ "clientState":{
+ "@type":"/ibc.lightclients.tendermint.v1.ClientState",
+ "chainId":"osmo-test-4",
+ "trustLevel":{
+ "numerator":"1",
+ "denominator":"3"
+ },
+ "trustingPeriod":"806400s",
+ "unbondingPeriod":"1209600s",
+ "maxClockDrift":"20s",
+ "frozenHeight":{
+ "revisionNumber":"0",
+ "revisionHeight":"0"
+ },
+ "latestHeight":{
+ "revisionNumber":"4",
+ "revisionHeight":"10356505"
+ },
+ "proofSpecs":[
+ {
+ "leafSpec":{
+ "hash":"SHA256",
+ "prehashValue":"SHA256",
+ "length":"VAR_PROTO",
+ "prefix":"AA==",
+ "prehashKey":"NO_HASH"
+ },
+ "innerSpec":{
+ "childOrder":[
+ 0,
+ 1
+ ],
+ "childSize":33,
+ "minPrefixLength":4,
+ "maxPrefixLength":12,
+ "hash":"SHA256",
+ "emptyChild":""
+ },
+ "maxDepth":0,
+ "minDepth":0,
+ "prehashKeyBeforeComparison":false
+ },
+ {
+ "leafSpec":{
+ "hash":"SHA256",
+ "prehashValue":"SHA256",
+ "length":"VAR_PROTO",
+ "prefix":"AA==",
+ "prehashKey":"NO_HASH"
+ },
+ "innerSpec":{
+ "childOrder":[
+ 0,
+ 1
+ ],
+ "childSize":32,
+ "minPrefixLength":1,
+ "maxPrefixLength":1,
+ "hash":"SHA256",
+ "emptyChild":""
+ },
+ "maxDepth":0,
+ "minDepth":0,
+ "prehashKeyBeforeComparison":false
+ }
+ ],
+ "upgradePath":[
+ "upgrade",
+ "upgradedIBCState"
+ ],
+ "allowUpdateAfterExpiry":true,
+ "allowUpdateAfterMisbehaviour":true
+ }
+ },
+ {
+ "clientId":"07-tendermint-101",
+ "clientState":{
+ "@type":"/ibc.lightclients.tendermint.v1.ClientState",
+ "chainId":"osmo-test-4",
+ "trustLevel":{
+ "numerator":"1",
+ "denominator":"3"
+ },
+ "trustingPeriod":"806400s",
+ "unbondingPeriod":"1209600s",
+ "maxClockDrift":"20s",
+ "frozenHeight":{
+ "revisionNumber":"0",
+ "revisionHeight":"0"
+ },
+ "latestHeight":{
+ "revisionNumber":"4",
+ "revisionHeight":"10356847"
+ },
+ "proofSpecs":[
+ {
+ "leafSpec":{
+ "hash":"SHA256",
+ "prehashValue":"SHA256",
+ "length":"VAR_PROTO",
+ "prefix":"AA==",
+ "prehashKey":"NO_HASH"
+ },
+ "innerSpec":{
+ "childOrder":[
+ 0,
+ 1
+ ],
+ "childSize":33,
+ "minPrefixLength":4,
+ "maxPrefixLength":12,
+ "hash":"SHA256",
+ "emptyChild":""
+ },
+ "maxDepth":0,
+ "minDepth":0,
+ "prehashKeyBeforeComparison":false
+ },
+ {
+ "leafSpec":{
+ "hash":"SHA256",
+ "prehashValue":"SHA256",
+ "length":"VAR_PROTO",
+ "prefix":"AA==",
+ "prehashKey":"NO_HASH"
+ },
+ "innerSpec":{
+ "childOrder":[
+ 0,
+ 1
+ ],
+ "childSize":32,
+ "minPrefixLength":1,
+ "maxPrefixLength":1,
+ "hash":"SHA256",
+ "emptyChild":""
+ },
+ "maxDepth":0,
+ "minDepth":0,
+ "prehashKeyBeforeComparison":false
+ }
+ ],
+ "upgradePath":[
+ "upgrade",
+ "upgradedIBCState"
+ ],
+ "allowUpdateAfterExpiry":true,
+ "allowUpdateAfterMisbehaviour":true
+ }
+ },
+ {
+ "clientId":"07-tendermint-102",
+ "clientState":{
+ "@type":"/ibc.lightclients.tendermint.v1.ClientState",
+ "chainId":"osmo-test-4",
+ "trustLevel":{
+ "numerator":"1",
+ "denominator":"3"
+ },
+ "trustingPeriod":"806400s",
+ "unbondingPeriod":"1209600s",
+ "maxClockDrift":"20s",
+ "frozenHeight":{
+ "revisionNumber":"0",
+ "revisionHeight":"0"
+ },
+ "latestHeight":{
+ "revisionNumber":"4",
+ "revisionHeight":"10357322"
+ },
+ "proofSpecs":[
+ {
+ "leafSpec":{
+ "hash":"SHA256",
+ "prehashValue":"SHA256",
+ "length":"VAR_PROTO",
+ "prefix":"AA==",
+ "prehashKey":"NO_HASH"
+ },
+ "innerSpec":{
+ "childOrder":[
+ 0,
+ 1
+ ],
+ "childSize":33,
+ "minPrefixLength":4,
+ "maxPrefixLength":12,
+ "hash":"SHA256",
+ "emptyChild":""
+ },
+ "maxDepth":0,
+ "minDepth":0,
+ "prehashKeyBeforeComparison":false
+ },
+ {
+ "leafSpec":{
+ "hash":"SHA256",
+ "prehashValue":"SHA256",
+ "length":"VAR_PROTO",
+ "prefix":"AA==",
+ "prehashKey":"NO_HASH"
+ },
+ "innerSpec":{
+ "childOrder":[
+ 0,
+ 1
+ ],
+ "childSize":32,
+ "minPrefixLength":1,
+ "maxPrefixLength":1,
+ "hash":"SHA256",
+ "emptyChild":""
+ },
+ "maxDepth":0,
+ "minDepth":0,
+ "prehashKeyBeforeComparison":false
+ }
+ ],
+ "upgradePath":[
+ "upgrade",
+ "upgradedIBCState"
+ ],
+ "allowUpdateAfterExpiry":true,
+ "allowUpdateAfterMisbehaviour":true
+ }
+ },
+ {
+ "clientId":"07-tendermint-103",
+ "clientState":{
+ "@type":"/ibc.lightclients.tendermint.v1.ClientState",
+ "chainId":"galileo-3",
+ "trustLevel":{
+ "numerator":"1",
+ "denominator":"3"
+ },
+ "trustingPeriod":"604800s",
+ "unbondingPeriod":"1814400s",
+ "maxClockDrift":"30s",
+ "frozenHeight":{
+ "revisionNumber":"0",
+ "revisionHeight":"0"
+ },
+ "latestHeight":{
+ "revisionNumber":"3",
+ "revisionHeight":"2848767"
+ },
+ "proofSpecs":[
+ {
+ "leafSpec":{
+ "hash":"SHA256",
+ "prehashValue":"SHA256",
+ "length":"VAR_PROTO",
+ "prefix":"AA==",
+ "prehashKey":"NO_HASH"
+ },
+ "innerSpec":{
+ "childOrder":[
+ 0,
+ 1
+ ],
+ "childSize":33,
+ "minPrefixLength":4,
+ "maxPrefixLength":12,
+ "hash":"SHA256",
+ "emptyChild":""
+ },
+ "maxDepth":0,
+ "minDepth":0,
+ "prehashKeyBeforeComparison":false
+ },
+ {
+ "leafSpec":{
+ "hash":"SHA256",
+ "prehashValue":"SHA256",
+ "length":"VAR_PROTO",
+ "prefix":"AA==",
+ "prehashKey":"NO_HASH"
+ },
+ "innerSpec":{
+ "childOrder":[
+ 0,
+ 1
+ ],
+ "childSize":32,
+ "minPrefixLength":1,
+ "maxPrefixLength":1,
+ "hash":"SHA256",
+ "emptyChild":""
+ },
+ "maxDepth":0,
+ "minDepth":0,
+ "prehashKeyBeforeComparison":false
+ }
+ ],
+ "upgradePath":[
+ "upgrade",
+ "upgradedIBCState"
+ ],
+ "allowUpdateAfterExpiry":true,
+ "allowUpdateAfterMisbehaviour":true
+ }
+ }
+ ],
+ "pagination":{
+ "nextKey":"LzA3LXRlbmRlcm1pbnQtMTAzL2NsaWVudFN0YXRl",
+ "total":"0"
+ }
+}
+```
+
+
+Parameter | Type | Description |
---|
client_states | IdentifiedClientState Array | Client state associated with the request identifier |
+pagination | PageResponse | Pagination information in the response |
+
+
+
+
+**IdentifiedClientState**
+
+
+Parameter | Type | Description |
---|
client_id | String | Client identifier |
+client_state | Any | Client state |
+
+
+
+## ConsensusState
+
+Queries a consensus state associated with a client state at a given height
+
+**IP rate limit group:** `chain`
+
+### Request Parameters
+> Request Example:
+
+
+
+```py
+import asyncio
+
+from google.protobuf import symbol_database
+
+from pyinjective.async_client import AsyncClient
+from pyinjective.core.network import Network
+
+
+async def main() -> None:
+ network = Network.testnet()
+ client = AsyncClient(network)
+
+ client_id = "07-tendermint-0"
+ revision_number = 0
+ revision_height = 7379538
+
+ state = await client.fetch_ibc_consensus_state(
+ client_id=client_id, revision_number=revision_number, revision_height=revision_height
+ )
+ print(state)
+
+
+if __name__ == "__main__":
+ symbol_db = symbol_database.Default()
+ asyncio.get_event_loop().run_until_complete(main())
+```
+
+
+
+
+```go
+package main
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/InjectiveLabs/sdk-go/client"
+
+ chainclient "github.com/InjectiveLabs/sdk-go/client/chain"
+ "github.com/InjectiveLabs/sdk-go/client/common"
+ rpchttp "github.com/cometbft/cometbft/rpc/client/http"
+
+ "os"
+)
+
+func main() {
+ network := common.LoadNetwork("testnet", "lb")
+ tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket")
+ if err != nil {
+ panic(err)
+ }
+
+ senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring(
+ os.Getenv("HOME")+"/.injectived",
+ "injectived",
+ "file",
+ "inj-user",
+ "12345678",
+ "5d386fbdbf11f1141010f81a46b40f94887367562bd33b452bbaa6ce1cd1381e", // keyring will be used if pk not provided
+ false,
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ clientCtx, err := chainclient.NewClientContext(
+ network.ChainId,
+ senderAddress.String(),
+ cosmosKeyring,
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient)
+
+ chainClient, err := chainclient.NewChainClient(
+ clientCtx,
+ network,
+ common.OptionGasPrices(client.DefaultGasPriceWithDenom),
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ clientId := "07-tendermint-0"
+ revisionNumber := uint64(0)
+ revisionHeight := uint64(7379538)
+ latestHeight := false
+
+ ctx := context.Background()
+
+ res, err := chainClient.FetchIBCConsensusState(ctx, clientId, revisionNumber, revisionHeight, latestHeight)
+ if err != nil {
+ fmt.Println(err)
+ }
+
+ fmt.Print(res)
+
+}
+```
+
+
+
+Parameter | Type | Description | Required |
---|
client_id | String | Client identifier | Yes |
+revision_number | Integer | Consensus state revision number | Yes |
+client_id | Integer | Consensus state revision height | Yes |
+latest_height | Boolean | Overrrides the height field and queries the latest stored ConsensusState | No |
+
+
+### Response Parameters
+> Response Example:
+
+``` json
+{
+ "consensusState":{
+ "@type":"/ibc.lightclients.tendermint.v1.ConsensusState",
+ "timestamp":"2022-07-04T10:34:53.874345276Z",
+ "root":{
+ "hash":"viI6JuzZ/kOAh6jIeecglN7Xt+mGQT/PpvAGqGLcVmM="
+ },
+ "nextValidatorsHash":"olPEfP4dzPCC07Oyg/3+6U5/uumw/HmELk2MwpMogSg="
+ },
+ "proofHeight":{
+ "revisionNumber":"888",
+ "revisionHeight":"27531028"
+ },
+ "proof":""
+}
+```
+
+
+Parameter | Type | Description |
---|
consensus_state | Any | Client state associated with the request identifier |
+proof | Byte Array | Merkle proof of existence |
+proof_height | Height | Height at which the proof was retrieved |
+
+
+
+
+**Height**
+
+
+Parameter | Type | Description |
---|
revision_number | Integer | The revision that the client is currently on |
+revision_height | Integer | The height within the given revision |
+
+
+
+## ConsensusStates
+
+Queries all the consensus state associated with a given client
+
+**IP rate limit group:** `chain`
+
+### Request Parameters
+> Request Example:
+
+
+
+```py
+import asyncio
+
+from google.protobuf import symbol_database
+
+from pyinjective.async_client import AsyncClient
+from pyinjective.client.model.pagination import PaginationOption
+from pyinjective.core.network import Network
+
+
+async def main() -> None:
+ network = Network.testnet()
+ client = AsyncClient(network)
+
+ client_id = "07-tendermint-0"
+ pagination = PaginationOption(skip=2, limit=4)
+
+ states = await client.fetch_ibc_consensus_states(client_id=client_id, pagination=pagination)
+ print(states)
+
+
+if __name__ == "__main__":
+ symbol_db = symbol_database.Default()
+ asyncio.get_event_loop().run_until_complete(main())
+```
+
+
+
+
+```go
+package main
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/cosmos/cosmos-sdk/types/query"
+
+ "github.com/InjectiveLabs/sdk-go/client"
+
+ chainclient "github.com/InjectiveLabs/sdk-go/client/chain"
+ "github.com/InjectiveLabs/sdk-go/client/common"
+ rpchttp "github.com/cometbft/cometbft/rpc/client/http"
+
+ "os"
+)
+
+func main() {
+ network := common.LoadNetwork("testnet", "lb")
+ tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket")
+ if err != nil {
+ panic(err)
+ }
+
+ senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring(
+ os.Getenv("HOME")+"/.injectived",
+ "injectived",
+ "file",
+ "inj-user",
+ "12345678",
+ "5d386fbdbf11f1141010f81a46b40f94887367562bd33b452bbaa6ce1cd1381e", // keyring will be used if pk not provided
+ false,
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ clientCtx, err := chainclient.NewClientContext(
+ network.ChainId,
+ senderAddress.String(),
+ cosmosKeyring,
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient)
+
+ chainClient, err := chainclient.NewChainClient(
+ clientCtx,
+ network,
+ common.OptionGasPrices(client.DefaultGasPriceWithDenom),
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ clientId := "07-tendermint-0"
+ pagination := query.PageRequest{Offset: 2, Limit: 4}
+ ctx := context.Background()
+
+ res, err := chainClient.FetchIBCConsensusStates(ctx, clientId, &pagination)
+ if err != nil {
+ fmt.Println(err)
+ }
+
+ fmt.Print(res)
+
+}
+```
+
+
+
+Parameter | Type | Description | Required |
---|
client_id | String | Client identifier | Yes |
+pagination | PageRequest | The optional pagination for the request | No |
+
+
+### Response Parameters
+> Response Example:
+
+``` json
+{
+ "consensusStates":[
+ {
+ "height":{
+ "revisionHeight":"7379500",
+ "revisionNumber":"0"
+ },
+ "consensusState":{
+ "@type":"/ibc.lightclients.tendermint.v1.ConsensusState",
+ "timestamp":"2022-07-04T10:32:23.232327085Z",
+ "root":{
+ "hash":"PlwKOemX6GQh/sGlPzvT89sRijeZa0pUK+sjvASu/5s="
+ },
+ "nextValidatorsHash":"olPEfP4dzPCC07Oyg/3+6U5/uumw/HmELk2MwpMogSg="
+ }
+ },
+ {
+ "height":{
+ "revisionHeight":"7379506",
+ "revisionNumber":"0"
+ },
+ "consensusState":{
+ "@type":"/ibc.lightclients.tendermint.v1.ConsensusState",
+ "timestamp":"2022-07-04T10:32:46.188675417Z",
+ "root":{
+ "hash":"LTmLr8YzxO/yfajKO1RrnZeTK3JUMrvYcm/IZyi0XeY="
+ },
+ "nextValidatorsHash":"olPEfP4dzPCC07Oyg/3+6U5/uumw/HmELk2MwpMogSg="
+ }
+ },
+ {
+ "height":{
+ "revisionHeight":"7379521",
+ "revisionNumber":"0"
+ },
+ "consensusState":{
+ "@type":"/ibc.lightclients.tendermint.v1.ConsensusState",
+ "timestamp":"2022-07-04T10:33:46.953207174Z",
+ "root":{
+ "hash":"lyXb+gmcyDOcHL35Zppqv10y0irbqlnsllERaOEb9R4="
+ },
+ "nextValidatorsHash":"olPEfP4dzPCC07Oyg/3+6U5/uumw/HmELk2MwpMogSg="
+ }
+ },
+ {
+ "height":{
+ "revisionHeight":"7379538",
+ "revisionNumber":"0"
+ },
+ "consensusState":{
+ "@type":"/ibc.lightclients.tendermint.v1.ConsensusState",
+ "timestamp":"2022-07-04T10:34:53.874345276Z",
+ "root":{
+ "hash":"viI6JuzZ/kOAh6jIeecglN7Xt+mGQT/PpvAGqGLcVmM="
+ },
+ "nextValidatorsHash":"olPEfP4dzPCC07Oyg/3+6U5/uumw/HmELk2MwpMogSg="
+ }
+ }
+ ],
+ "pagination":{
+ "nextKey":"",
+ "total":"0"
+ }
+}
+```
+
+
+Parameter | Type | Description |
---|
consensus_states | ConsensusStateWithHeight Array | Consensus states associated with the identifier |
+pagination | PageResponse | Pagination information in the response |
+
+
+
+
+**ConsensusStateWithHeight**
+
+
+Parameter | Type | Description |
---|
height | Height | Consensus state height |
+consensus_state | Any | Consensus state |
+
+
+
+
+**Height**
+
+
+Parameter | Type | Description |
---|
revision_number | Integer | The revision that the client is currently on |
+revision_height | Integer | The height within the given revision |
+
+
+
+## ConsensusStateHeights
+
+Queries the height of every consensus states associated with a given client
+
+**IP rate limit group:** `chain`
+
+### Request Parameters
+> Request Example:
+
+
+
+```py
+import asyncio
+
+from google.protobuf import symbol_database
+
+from pyinjective.async_client import AsyncClient
+from pyinjective.client.model.pagination import PaginationOption
+from pyinjective.core.network import Network
+
+
+async def main() -> None:
+ network = Network.testnet()
+ client = AsyncClient(network)
+
+ client_id = "07-tendermint-0"
+ pagination = PaginationOption(skip=2, limit=4)
+
+ states = await client.fetch_ibc_consensus_state_heights(client_id=client_id, pagination=pagination)
+ print(states)
+
+
+if __name__ == "__main__":
+ symbol_db = symbol_database.Default()
+ asyncio.get_event_loop().run_until_complete(main())
+```
+
+
+
+
+```go
+package main
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/cosmos/cosmos-sdk/types/query"
+
+ "github.com/InjectiveLabs/sdk-go/client"
+
+ chainclient "github.com/InjectiveLabs/sdk-go/client/chain"
+ "github.com/InjectiveLabs/sdk-go/client/common"
+ rpchttp "github.com/cometbft/cometbft/rpc/client/http"
+
+ "os"
+)
+
+func main() {
+ network := common.LoadNetwork("testnet", "lb")
+ tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket")
+ if err != nil {
+ panic(err)
+ }
+
+ senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring(
+ os.Getenv("HOME")+"/.injectived",
+ "injectived",
+ "file",
+ "inj-user",
+ "12345678",
+ "5d386fbdbf11f1141010f81a46b40f94887367562bd33b452bbaa6ce1cd1381e", // keyring will be used if pk not provided
+ false,
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ clientCtx, err := chainclient.NewClientContext(
+ network.ChainId,
+ senderAddress.String(),
+ cosmosKeyring,
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient)
+
+ chainClient, err := chainclient.NewChainClient(
+ clientCtx,
+ network,
+ common.OptionGasPrices(client.DefaultGasPriceWithDenom),
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ clientId := "07-tendermint-0"
+ pagination := query.PageRequest{Offset: 2, Limit: 4}
+ ctx := context.Background()
+
+ res, err := chainClient.FetchIBCConsensusStateHeights(ctx, clientId, &pagination)
+ if err != nil {
+ fmt.Println(err)
+ }
+
+ fmt.Print(res)
+
+}
+```
+
+
+
+Parameter | Type | Description | Required |
---|
client_id | String | Client identifier | Yes |
+pagination | PageRequest | The optional pagination for the request | No |
+
+
+### Response Parameters
+> Response Example:
+
+``` json
+{
+ "consensusStateHeights":[
+ {
+ "revisionHeight":"7379500",
+ "revisionNumber":"0"
+ },
+ {
+ "revisionHeight":"7379506",
+ "revisionNumber":"0"
+ },
+ {
+ "revisionHeight":"7379521",
+ "revisionNumber":"0"
+ },
+ {
+ "revisionHeight":"7379538",
+ "revisionNumber":"0"
+ }
+ ],
+ "pagination":{
+ "nextKey":"",
+ "total":"0"
+ }
+}
+```
+
+
+Parameter | Type | Description |
---|
consensus_state_heights | Height Array | Consensus state heights |
+pagination | PageResponse | Pagination information in the response |
+
+
+
+
+**Height**
+
+
+Parameter | Type | Description |
---|
revision_number | Integer | The revision that the client is currently on |
+revision_height | Integer | The height within the given revision |
+
+
+
+## ClientStatus
+
+Queries the status of an IBC client
+
+**IP rate limit group:** `chain`
+
+### Request Parameters
+> Request Example:
+
+
+
+```py
+import asyncio
+
+from google.protobuf import symbol_database
+
+from pyinjective.async_client import AsyncClient
+from pyinjective.core.network import Network
+
+
+async def main() -> None:
+ network = Network.testnet()
+ client = AsyncClient(network)
+
+ client_id = "07-tendermint-0"
+
+ state = await client.fetch_ibc_client_status(client_id=client_id)
+ print(state)
+
+
+if __name__ == "__main__":
+ symbol_db = symbol_database.Default()
+ asyncio.get_event_loop().run_until_complete(main())
+```
+
+
+
+
+```go
+package main
+
+import (
+ "context"
+ "encoding/json"
+ "fmt"
+
+ "github.com/InjectiveLabs/sdk-go/client"
+
+ chainclient "github.com/InjectiveLabs/sdk-go/client/chain"
+ "github.com/InjectiveLabs/sdk-go/client/common"
+ rpchttp "github.com/cometbft/cometbft/rpc/client/http"
+
+ "os"
+)
+
+func main() {
+ network := common.LoadNetwork("testnet", "lb")
+ tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket")
+ if err != nil {
+ panic(err)
+ }
+
+ senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring(
+ os.Getenv("HOME")+"/.injectived",
+ "injectived",
+ "file",
+ "inj-user",
+ "12345678",
+ "5d386fbdbf11f1141010f81a46b40f94887367562bd33b452bbaa6ce1cd1381e", // keyring will be used if pk not provided
+ false,
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ clientCtx, err := chainclient.NewClientContext(
+ network.ChainId,
+ senderAddress.String(),
+ cosmosKeyring,
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient)
+
+ chainClient, err := chainclient.NewChainClient(
+ clientCtx,
+ network,
+ common.OptionGasPrices(client.DefaultGasPriceWithDenom),
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ clientId := "07-tendermint-0"
+ ctx := context.Background()
+
+ res, err := chainClient.FetchIBCClientStatus(ctx, clientId)
+ if err != nil {
+ fmt.Println(err)
+ }
+
+ str, _ := json.MarshalIndent(res, "", " ")
+ fmt.Print(string(str))
+
+}
+```
+
+
+
+Parameter | Type | Description | Required |
---|
client_id | String | Client unique identifier | Yes |
+
+
+### Response Parameters
+> Response Example:
+
+``` json
+{
+ "status":"Expired"
+}
+```
+
+
+Parameter | Type | Description |
---|
status | String | Client status |
+
+
+
+## ClientParams
+
+Queries all parameters of the ibc client submodule
+
+**IP rate limit group:** `chain`
+
+### Request Parameters
+> Request Example:
+
+
+
+```py
+import asyncio
+
+from google.protobuf import symbol_database
+
+from pyinjective.async_client import AsyncClient
+from pyinjective.core.network import Network
+
+
+async def main() -> None:
+ network = Network.testnet()
+ client = AsyncClient(network)
+
+ params = await client.fetch_ibc_client_params()
+ print(params)
+
+
+if __name__ == "__main__":
+ symbol_db = symbol_database.Default()
+ asyncio.get_event_loop().run_until_complete(main())
+```
+
+
+
+
+```go
+package main
+
+import (
+ "context"
+ "encoding/json"
+ "fmt"
+
+ "github.com/InjectiveLabs/sdk-go/client"
+
+ chainclient "github.com/InjectiveLabs/sdk-go/client/chain"
+ "github.com/InjectiveLabs/sdk-go/client/common"
+ rpchttp "github.com/cometbft/cometbft/rpc/client/http"
+
+ "os"
+)
+
+func main() {
+ network := common.LoadNetwork("testnet", "lb")
+ tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket")
+ if err != nil {
+ panic(err)
+ }
+
+ senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring(
+ os.Getenv("HOME")+"/.injectived",
+ "injectived",
+ "file",
+ "inj-user",
+ "12345678",
+ "5d386fbdbf11f1141010f81a46b40f94887367562bd33b452bbaa6ce1cd1381e", // keyring will be used if pk not provided
+ false,
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ clientCtx, err := chainclient.NewClientContext(
+ network.ChainId,
+ senderAddress.String(),
+ cosmosKeyring,
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient)
+
+ chainClient, err := chainclient.NewChainClient(
+ clientCtx,
+ network,
+ common.OptionGasPrices(client.DefaultGasPriceWithDenom),
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ ctx := context.Background()
+
+ res, err := chainClient.FetchIBCClientParams(ctx)
+ if err != nil {
+ fmt.Println(err)
+ }
+
+ str, _ := json.MarshalIndent(res, "", " ")
+ fmt.Print(string(str))
+
+}
+```
+
+
+No parameters
+
+### Response Parameters
+> Response Example:
+
+``` json
+{
+ "params":{
+ "allowedClients":[
+ "06-solomachine",
+ "07-tendermint"
+ ]
+ }
+}
+```
+
+
+Parameter | Type | Description |
---|
params | params | Module's parameters |
+
+
+
+
+**Params**
+
+
+Parameter | Type | Description |
---|
allowed_clients | String Array | Allowed_clients defines the list of allowed client state types which can be created and interacted with. If a client type is removed from the allowed clients list, usage of this client will be disabled until it is added again to the list |
+
+
+
+## UpgradedClientState
+
+Queries an Upgraded IBC light client
+
+**IP rate limit group:** `chain`
+
+### Request Parameters
+> Request Example:
+
+
+
+```py
+import asyncio
+
+from google.protobuf import symbol_database
+
+from pyinjective.async_client import AsyncClient
+from pyinjective.core.network import Network
+
+
+async def main() -> None:
+ network = Network.testnet()
+ client = AsyncClient(network)
+
+ state = await client.fetch_ibc_upgraded_client_state()
+ print(state)
+
+
+if __name__ == "__main__":
+ symbol_db = symbol_database.Default()
+ asyncio.get_event_loop().run_until_complete(main())
+```
+
+
+
+
+```go
+package main
+
+import (
+ "context"
+ "encoding/json"
+ "fmt"
+
+ "github.com/InjectiveLabs/sdk-go/client"
+
+ chainclient "github.com/InjectiveLabs/sdk-go/client/chain"
+ "github.com/InjectiveLabs/sdk-go/client/common"
+ rpchttp "github.com/cometbft/cometbft/rpc/client/http"
+
+ "os"
+)
+
+func main() {
+ network := common.LoadNetwork("testnet", "lb")
+ tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket")
+ if err != nil {
+ panic(err)
+ }
+
+ senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring(
+ os.Getenv("HOME")+"/.injectived",
+ "injectived",
+ "file",
+ "inj-user",
+ "12345678",
+ "5d386fbdbf11f1141010f81a46b40f94887367562bd33b452bbaa6ce1cd1381e", // keyring will be used if pk not provided
+ false,
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ clientCtx, err := chainclient.NewClientContext(
+ network.ChainId,
+ senderAddress.String(),
+ cosmosKeyring,
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient)
+
+ chainClient, err := chainclient.NewChainClient(
+ clientCtx,
+ network,
+ common.OptionGasPrices(client.DefaultGasPriceWithDenom),
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ ctx := context.Background()
+
+ res, err := chainClient.FetchIBCUpgradedClientState(ctx)
+ if err != nil {
+ fmt.Println(err)
+ }
+
+ str, _ := json.MarshalIndent(res, "", " ")
+ fmt.Print(string(str))
+
+}
+```
+
+
+No parameters
+
+### Response Parameters
+> Response Example:
+
+``` json
+
+```
+
+
+Parameter | Type | Description |
---|
upgraded_client_state | Any | Client state associated with the request identifier |
+
+
+
+## UpgradedConsensusState
+
+Queries an Upgraded IBC consensus state
+
+**IP rate limit group:** `chain`
+
+### Request Parameters
+> Request Example:
+
+
+
+```py
+import asyncio
+
+from google.protobuf import symbol_database
+
+from pyinjective.async_client import AsyncClient
+from pyinjective.core.network import Network
+
+
+async def main() -> None:
+ network = Network.testnet()
+ client = AsyncClient(network)
+
+ state = await client.fetch_ibc_upgraded_consensus_state()
+ print(state)
+
+
+if __name__ == "__main__":
+ symbol_db = symbol_database.Default()
+ asyncio.get_event_loop().run_until_complete(main())
+```
+
+
+
+
+```go
+package main
+
+import (
+ "context"
+ "encoding/json"
+ "fmt"
+
+ "github.com/InjectiveLabs/sdk-go/client"
+
+ chainclient "github.com/InjectiveLabs/sdk-go/client/chain"
+ "github.com/InjectiveLabs/sdk-go/client/common"
+ rpchttp "github.com/cometbft/cometbft/rpc/client/http"
+
+ "os"
+)
+
+func main() {
+ network := common.LoadNetwork("testnet", "lb")
+ tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket")
+ if err != nil {
+ panic(err)
+ }
+
+ senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring(
+ os.Getenv("HOME")+"/.injectived",
+ "injectived",
+ "file",
+ "inj-user",
+ "12345678",
+ "5d386fbdbf11f1141010f81a46b40f94887367562bd33b452bbaa6ce1cd1381e", // keyring will be used if pk not provided
+ false,
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ clientCtx, err := chainclient.NewClientContext(
+ network.ChainId,
+ senderAddress.String(),
+ cosmosKeyring,
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient)
+
+ chainClient, err := chainclient.NewChainClient(
+ clientCtx,
+ network,
+ common.OptionGasPrices(client.DefaultGasPriceWithDenom),
+ )
+
+ if err != nil {
+ panic(err)
+ }
+
+ ctx := context.Background()
+
+ res, err := chainClient.FetchIBCUpgradedConsensusState(ctx)
+ if err != nil {
+ fmt.Println(err)
+ }
+
+ str, _ := json.MarshalIndent(res, "", " ")
+ fmt.Print(string(str))
+
+}
+```
+
+
+No parameters
+
+### Response Parameters
+> Response Example:
+
+``` json
+
+```
+
+
+Parameter | Type | Description |
---|
upgraded_consensus_state | Any | Consensus state associated with the request identifier |
+
\ No newline at end of file
diff --git a/source/index.html.md b/source/index.html.md
index f739319d..e8198d00 100644
--- a/source/index.html.md
+++ b/source/index.html.md
@@ -37,6 +37,7 @@ includes:
- spot
- binaryoptions
- ibccorechannel
+ - ibccoreclient
- ibctransfer
- insurance
- oracle
diff --git a/source/json_tables/chain/ibc/core/client/consensusStateWithHeight.json b/source/json_tables/chain/ibc/core/client/consensusStateWithHeight.json
new file mode 100644
index 00000000..6931aff1
--- /dev/null
+++ b/source/json_tables/chain/ibc/core/client/consensusStateWithHeight.json
@@ -0,0 +1,4 @@
+[
+ {"Parameter": "height", "Type": "Height", "Description": "Consensus state height"},
+ {"Parameter": "consensus_state", "Type": "Any", "Description": "Consensus state"}
+]
\ No newline at end of file
diff --git a/source/json_tables/chain/ibc/core/client/identifiedClientState.json b/source/json_tables/chain/ibc/core/client/identifiedClientState.json
new file mode 100644
index 00000000..6b6e737f
--- /dev/null
+++ b/source/json_tables/chain/ibc/core/client/identifiedClientState.json
@@ -0,0 +1,4 @@
+[
+ {"Parameter": "client_id", "Type": "String", "Description": "Client identifier"},
+ {"Parameter": "client_state", "Type": "Any", "Description": "Client state"}
+]
\ No newline at end of file
diff --git a/source/json_tables/chain/ibc/core/client/params.json b/source/json_tables/chain/ibc/core/client/params.json
new file mode 100644
index 00000000..31c14807
--- /dev/null
+++ b/source/json_tables/chain/ibc/core/client/params.json
@@ -0,0 +1,3 @@
+[
+ {"Parameter": "allowed_clients", "Type": "String Array", "Description": "Allowed_clients defines the list of allowed client state types which can be created and interacted with. If a client type is removed from the allowed clients list, usage of this client will be disabled until it is added again to the list"}
+]
\ No newline at end of file
diff --git a/source/json_tables/chain/ibc/core/client/queryClientParamsResponse.json b/source/json_tables/chain/ibc/core/client/queryClientParamsResponse.json
new file mode 100644
index 00000000..973f011e
--- /dev/null
+++ b/source/json_tables/chain/ibc/core/client/queryClientParamsResponse.json
@@ -0,0 +1,3 @@
+[
+ {"Parameter": "params", "Type": "params", "Description": "Module's parameters"}
+]
\ No newline at end of file
diff --git a/source/json_tables/chain/ibc/core/client/queryClientStateRequest.json b/source/json_tables/chain/ibc/core/client/queryClientStateRequest.json
new file mode 100644
index 00000000..486be60e
--- /dev/null
+++ b/source/json_tables/chain/ibc/core/client/queryClientStateRequest.json
@@ -0,0 +1,3 @@
+[
+ {"Parameter": "client_id", "Type": "String", "Description": "Client state unique identifier", "Required": "Yes"}
+]
\ No newline at end of file
diff --git a/source/json_tables/chain/ibc/core/client/queryClientStateResponse.json b/source/json_tables/chain/ibc/core/client/queryClientStateResponse.json
new file mode 100644
index 00000000..9ef3661e
--- /dev/null
+++ b/source/json_tables/chain/ibc/core/client/queryClientStateResponse.json
@@ -0,0 +1,5 @@
+[
+ {"Parameter": "client_state", "Type": "Any", "Description": "Client state associated with the request identifier"},
+ {"Parameter": "proof", "Type": "Byte Array", "Description": "Merkle proof of existence"},
+ {"Parameter": "proof_height", "Type": "Height", "Description": "Height at which the proof was retrieved"}
+]
\ No newline at end of file
diff --git a/source/json_tables/chain/ibc/core/client/queryClientStatesRequest.json b/source/json_tables/chain/ibc/core/client/queryClientStatesRequest.json
new file mode 100644
index 00000000..9da294d1
--- /dev/null
+++ b/source/json_tables/chain/ibc/core/client/queryClientStatesRequest.json
@@ -0,0 +1,3 @@
+[
+ {"Parameter": "pagination", "Type": "PageRequest", "Description": "The optional pagination for the request", "Required": "No"}
+]
\ No newline at end of file
diff --git a/source/json_tables/chain/ibc/core/client/queryClientStatesResponse.json b/source/json_tables/chain/ibc/core/client/queryClientStatesResponse.json
new file mode 100644
index 00000000..7d0d42d8
--- /dev/null
+++ b/source/json_tables/chain/ibc/core/client/queryClientStatesResponse.json
@@ -0,0 +1,4 @@
+[
+ {"Parameter": "client_states", "Type": "IdentifiedClientState Array", "Description": "Client state associated with the request identifier"},
+ {"Parameter": "pagination", "Type": "PageResponse", "Description": "Pagination information in the response"}
+]
\ No newline at end of file
diff --git a/source/json_tables/chain/ibc/core/client/queryClientStatusRequest.json b/source/json_tables/chain/ibc/core/client/queryClientStatusRequest.json
new file mode 100644
index 00000000..77a27792
--- /dev/null
+++ b/source/json_tables/chain/ibc/core/client/queryClientStatusRequest.json
@@ -0,0 +1,3 @@
+[
+ {"Parameter": "client_id", "Type": "String", "Description": "Client unique identifier", "Required": "Yes"}
+]
\ No newline at end of file
diff --git a/source/json_tables/chain/ibc/core/client/queryClientStatusResponse.json b/source/json_tables/chain/ibc/core/client/queryClientStatusResponse.json
new file mode 100644
index 00000000..51ea3f45
--- /dev/null
+++ b/source/json_tables/chain/ibc/core/client/queryClientStatusResponse.json
@@ -0,0 +1,3 @@
+[
+ {"Parameter": "status", "Type": "String", "Description": "Client status"}
+]
\ No newline at end of file
diff --git a/source/json_tables/chain/ibc/core/client/queryConsensusStateHeightsRequest.json b/source/json_tables/chain/ibc/core/client/queryConsensusStateHeightsRequest.json
new file mode 100644
index 00000000..99fe4f32
--- /dev/null
+++ b/source/json_tables/chain/ibc/core/client/queryConsensusStateHeightsRequest.json
@@ -0,0 +1,4 @@
+[
+ {"Parameter": "client_id", "Type": "String", "Description": "Client identifier", "Required": "Yes"},
+ {"Parameter": "pagination", "Type": "PageRequest", "Description": "The optional pagination for the request", "Required": "No"}
+]
\ No newline at end of file
diff --git a/source/json_tables/chain/ibc/core/client/queryConsensusStateHeightsResponse.json b/source/json_tables/chain/ibc/core/client/queryConsensusStateHeightsResponse.json
new file mode 100644
index 00000000..25cb1581
--- /dev/null
+++ b/source/json_tables/chain/ibc/core/client/queryConsensusStateHeightsResponse.json
@@ -0,0 +1,4 @@
+[
+ {"Parameter": "consensus_state_heights", "Type": "Height Array", "Description": "Consensus state heights"},
+ {"Parameter": "pagination", "Type": "PageResponse", "Description": "Pagination information in the response"}
+]
\ No newline at end of file
diff --git a/source/json_tables/chain/ibc/core/client/queryConsensusStateRequest.json b/source/json_tables/chain/ibc/core/client/queryConsensusStateRequest.json
new file mode 100644
index 00000000..ca0076b7
--- /dev/null
+++ b/source/json_tables/chain/ibc/core/client/queryConsensusStateRequest.json
@@ -0,0 +1,6 @@
+[
+ {"Parameter": "client_id", "Type": "String", "Description": "Client identifier", "Required": "Yes"},
+ {"Parameter": "revision_number", "Type": "Integer", "Description": "Consensus state revision number", "Required": "Yes"},
+ {"Parameter": "client_id", "Type": "Integer", "Description": "Consensus state revision height", "Required": "Yes"},
+ {"Parameter": "latest_height", "Type": "Boolean", "Description": "Overrrides the height field and queries the latest stored ConsensusState", "Required": "No"}
+]
\ No newline at end of file
diff --git a/source/json_tables/chain/ibc/core/client/queryConsensusStateResponse.json b/source/json_tables/chain/ibc/core/client/queryConsensusStateResponse.json
new file mode 100644
index 00000000..f4b7bdf0
--- /dev/null
+++ b/source/json_tables/chain/ibc/core/client/queryConsensusStateResponse.json
@@ -0,0 +1,5 @@
+[
+ {"Parameter": "consensus_state", "Type": "Any", "Description": "Client state associated with the request identifier"},
+ {"Parameter": "proof", "Type": "Byte Array", "Description": "Merkle proof of existence"},
+ {"Parameter": "proof_height", "Type": "Height", "Description": "Height at which the proof was retrieved"}
+]
\ No newline at end of file
diff --git a/source/json_tables/chain/ibc/core/client/queryConsensusStatesRequest.json b/source/json_tables/chain/ibc/core/client/queryConsensusStatesRequest.json
new file mode 100644
index 00000000..99fe4f32
--- /dev/null
+++ b/source/json_tables/chain/ibc/core/client/queryConsensusStatesRequest.json
@@ -0,0 +1,4 @@
+[
+ {"Parameter": "client_id", "Type": "String", "Description": "Client identifier", "Required": "Yes"},
+ {"Parameter": "pagination", "Type": "PageRequest", "Description": "The optional pagination for the request", "Required": "No"}
+]
\ No newline at end of file
diff --git a/source/json_tables/chain/ibc/core/client/queryConsensusStatesResponse.json b/source/json_tables/chain/ibc/core/client/queryConsensusStatesResponse.json
new file mode 100644
index 00000000..639cef2e
--- /dev/null
+++ b/source/json_tables/chain/ibc/core/client/queryConsensusStatesResponse.json
@@ -0,0 +1,4 @@
+[
+ {"Parameter": "consensus_states", "Type": "ConsensusStateWithHeight Array", "Description": "Consensus states associated with the identifier"},
+ {"Parameter": "pagination", "Type": "PageResponse", "Description": "Pagination information in the response"}
+]
\ No newline at end of file
diff --git a/source/json_tables/chain/ibc/core/client/queryUpgradedClientStateResponse.json b/source/json_tables/chain/ibc/core/client/queryUpgradedClientStateResponse.json
new file mode 100644
index 00000000..99567127
--- /dev/null
+++ b/source/json_tables/chain/ibc/core/client/queryUpgradedClientStateResponse.json
@@ -0,0 +1,3 @@
+[
+ {"Parameter": "upgraded_client_state", "Type": "Any", "Description": "Client state associated with the request identifier"}
+]
\ No newline at end of file
diff --git a/source/json_tables/chain/ibc/core/client/queryUpgradedConsensusStateResponse.json b/source/json_tables/chain/ibc/core/client/queryUpgradedConsensusStateResponse.json
new file mode 100644
index 00000000..948ae7ab
--- /dev/null
+++ b/source/json_tables/chain/ibc/core/client/queryUpgradedConsensusStateResponse.json
@@ -0,0 +1,3 @@
+[
+ {"Parameter": "upgraded_consensus_state", "Type": "Any", "Description": "Consensus state associated with the request identifier"}
+]
\ No newline at end of file