func QueryClientState(
	clientCtx client.Context, chainName string, prove bool,
) (*types.QueryClientStateResponse, error) {
	if prove {
		return QueryClientStateABCI(clientCtx, chainName)
	}
	queryClient := types.NewQueryClient(clientCtx)
	req := &types.QueryClientStateRequest{
		ChainName: chainName,
	}
	return queryClient.ClientState(context.Background(), req)
}
QueryClientState returns a client state. If prove is true, it performs an ABCI store query
in order to retrieve the merkle proof. Otherwise, it uses the gRPC query client.
package utils
import (
	"context"
	tmtypes "github.com/tendermint/tendermint/types"
	"github.com/cosmos/cosmos-sdk/client"
	"github.com/cosmos/cosmos-sdk/codec"
	sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
	"github.com/bianjieai/tibc-go/modules/tibc/core/02-client/types"
	commitmenttypes "github.com/bianjieai/tibc-go/modules/tibc/core/23-commitment/types"
	host "github.com/bianjieai/tibc-go/modules/tibc/core/24-host"
	tibcclient "github.com/bianjieai/tibc-go/modules/tibc/core/client"
	"github.com/bianjieai/tibc-go/modules/tibc/core/exported"
	tibctmtypes "github.com/bianjieai/tibc-go/modules/tibc/light-clients/07-tendermint/types"
)