diff --git a/CHANGELOG.md b/CHANGELOG.md
index c5d0b2f8..4b76adeb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -35,7 +35,10 @@ and this project adheres to
- @cosmjs/stargate: Add `granteeGrants` and `granterGrants` queries to
`AuthzExtension` ([#1308]).
- @cosmjs/tendermint-rpc: Add new `Tendermint37Client` and remove unused
- `Tendermint35Client` ([#1376]).
+ `Tendermint35Client`; Add `TendermintClient` as a union type for
+ `Tendermint34Client` or `Tendermint37Client` and
+ `isTendermint34Client`/`isTendermint37Client` to get the specific type
+ ([#1376]).
[#1308]: https://github.com/cosmos/cosmjs/pull/1308
[#1376]: https://github.com/cosmos/cosmjs/pull/1376
diff --git a/packages/cosmwasm-stargate/src/cosmwasmclient.ts b/packages/cosmwasm-stargate/src/cosmwasmclient.ts
index 158d3eab..866daf4f 100644
--- a/packages/cosmwasm-stargate/src/cosmwasmclient.ts
+++ b/packages/cosmwasm-stargate/src/cosmwasmclient.ts
@@ -25,7 +25,12 @@ import {
TimeoutError,
TxExtension,
} from "@cosmjs/stargate";
-import { HttpEndpoint, Tendermint34Client, toRfc3339WithNanoseconds } from "@cosmjs/tendermint-rpc";
+import {
+ HttpEndpoint,
+ Tendermint34Client,
+ TendermintClient,
+ toRfc3339WithNanoseconds,
+} from "@cosmjs/tendermint-rpc";
import { assert, sleep } from "@cosmjs/utils";
import {
CodeInfoResponse,
@@ -77,14 +82,14 @@ export interface ContractCodeHistoryEntry {
/** Use for testing only */
export interface PrivateCosmWasmClient {
- readonly tmClient: Tendermint34Client | undefined;
+ readonly tmClient: TendermintClient | undefined;
readonly queryClient:
| (QueryClient & AuthExtension & BankExtension & TxExtension & WasmExtension)
| undefined;
}
export class CosmWasmClient {
- private readonly tmClient: Tendermint34Client | undefined;
+ private readonly tmClient: TendermintClient | undefined;
private readonly queryClient:
| (QueryClient & AuthExtension & BankExtension & TxExtension & WasmExtension)
| undefined;
@@ -96,7 +101,7 @@ export class CosmWasmClient {
return new CosmWasmClient(tmClient);
}
- protected constructor(tmClient: Tendermint34Client | undefined) {
+ protected constructor(tmClient: TendermintClient | undefined) {
if (tmClient) {
this.tmClient = tmClient;
this.queryClient = QueryClient.withExtensions(
@@ -109,11 +114,11 @@ export class CosmWasmClient {
}
}
- protected getTmClient(): Tendermint34Client | undefined {
+ protected getTmClient(): TendermintClient | undefined {
return this.tmClient;
}
- protected forceGetTmClient(): Tendermint34Client {
+ protected forceGetTmClient(): TendermintClient {
if (!this.tmClient) {
throw new Error(
"Tendermint client not available. You cannot use online functionality in offline mode.",
diff --git a/packages/cosmwasm-stargate/src/signingcosmwasmclient.ts b/packages/cosmwasm-stargate/src/signingcosmwasmclient.ts
index 5d03812a..e3843404 100644
--- a/packages/cosmwasm-stargate/src/signingcosmwasmclient.ts
+++ b/packages/cosmwasm-stargate/src/signingcosmwasmclient.ts
@@ -31,7 +31,7 @@ import {
SignerData,
StdFee,
} from "@cosmjs/stargate";
-import { HttpEndpoint, Tendermint34Client } from "@cosmjs/tendermint-rpc";
+import { HttpEndpoint, Tendermint34Client, TendermintClient } from "@cosmjs/tendermint-rpc";
import { assert, assertDefined } from "@cosmjs/utils";
import { MsgWithdrawDelegatorReward } from "cosmjs-types/cosmos/distribution/v1beta1/tx";
import { MsgDelegate, MsgUndelegate } from "cosmjs-types/cosmos/staking/v1beta1/tx";
@@ -209,7 +209,7 @@ export class SigningCosmWasmClient extends CosmWasmClient {
}
protected constructor(
- tmClient: Tendermint34Client | undefined,
+ tmClient: TendermintClient | undefined,
signer: OfflineSigner,
options: SigningCosmWasmClientOptions,
) {
diff --git a/packages/stargate/src/queryclient/queryclient.ts b/packages/stargate/src/queryclient/queryclient.ts
index 66644433..aaa000a9 100644
--- a/packages/stargate/src/queryclient/queryclient.ts
+++ b/packages/stargate/src/queryclient/queryclient.ts
@@ -2,7 +2,7 @@
import { iavlSpec, ics23, tendermintSpec, verifyExistence, verifyNonExistence } from "@confio/ics23";
import { toAscii, toHex } from "@cosmjs/encoding";
import { firstEvent } from "@cosmjs/stream";
-import { tendermint34, Tendermint34Client } from "@cosmjs/tendermint-rpc";
+import { tendermint34, TendermintClient } from "@cosmjs/tendermint-rpc";
import { arrayContentEquals, assert, assertDefined, isNonNullObject, sleep } from "@cosmjs/utils";
import { ProofOps } from "cosmjs-types/tendermint/crypto/proof";
import { Stream } from "xstream";
@@ -45,24 +45,24 @@ export interface QueryAbciResponse {
export class QueryClient {
/** Constructs a QueryClient with 0 extensions */
- public static withExtensions(tmClient: Tendermint34Client): QueryClient;
+ public static withExtensions(tmClient: TendermintClient): QueryClient;
/** Constructs a QueryClient with 1 extension */
public static withExtensions(
- tmClient: Tendermint34Client,
+ tmClient: TendermintClient,
setupExtensionA: QueryExtensionSetup,
): QueryClient & A;
/** Constructs a QueryClient with 2 extensions */
public static withExtensions(
- tmClient: Tendermint34Client,
+ tmClient: TendermintClient,
setupExtensionA: QueryExtensionSetup,
setupExtensionB: QueryExtensionSetup,
): QueryClient & A & B;
/** Constructs a QueryClient with 3 extensions */
public static withExtensions(
- tmClient: Tendermint34Client,
+ tmClient: TendermintClient,
setupExtensionA: QueryExtensionSetup,
setupExtensionB: QueryExtensionSetup,
setupExtensionC: QueryExtensionSetup,
@@ -70,7 +70,7 @@ export class QueryClient {
/** Constructs a QueryClient with 4 extensions */
public static withExtensions(
- tmClient: Tendermint34Client,
+ tmClient: TendermintClient,
setupExtensionA: QueryExtensionSetup,
setupExtensionB: QueryExtensionSetup,
setupExtensionC: QueryExtensionSetup,
@@ -85,7 +85,7 @@ export class QueryClient {
D extends object,
E extends object,
>(
- tmClient: Tendermint34Client,
+ tmClient: TendermintClient,
setupExtensionA: QueryExtensionSetup,
setupExtensionB: QueryExtensionSetup,
setupExtensionC: QueryExtensionSetup,
@@ -102,7 +102,7 @@ export class QueryClient {
E extends object,
F extends object,
>(
- tmClient: Tendermint34Client,
+ tmClient: TendermintClient,
setupExtensionA: QueryExtensionSetup,
setupExtensionB: QueryExtensionSetup,
setupExtensionC: QueryExtensionSetup,
@@ -121,7 +121,7 @@ export class QueryClient {
F extends object,
G extends object,
>(
- tmClient: Tendermint34Client,
+ tmClient: TendermintClient,
setupExtensionA: QueryExtensionSetup,
setupExtensionB: QueryExtensionSetup,
setupExtensionC: QueryExtensionSetup,
@@ -142,7 +142,7 @@ export class QueryClient {
G extends object,
H extends object,
>(
- tmClient: Tendermint34Client,
+ tmClient: TendermintClient,
setupExtensionA: QueryExtensionSetup,
setupExtensionB: QueryExtensionSetup,
setupExtensionC: QueryExtensionSetup,
@@ -165,7 +165,7 @@ export class QueryClient {
H extends object,
I extends object,
>(
- tmClient: Tendermint34Client,
+ tmClient: TendermintClient,
setupExtensionA: QueryExtensionSetup,
setupExtensionB: QueryExtensionSetup,
setupExtensionC: QueryExtensionSetup,
@@ -190,7 +190,7 @@ export class QueryClient {
I extends object,
J extends object,
>(
- tmClient: Tendermint34Client,
+ tmClient: TendermintClient,
setupExtensionA: QueryExtensionSetup,
setupExtensionB: QueryExtensionSetup,
setupExtensionC: QueryExtensionSetup,
@@ -217,7 +217,7 @@ export class QueryClient {
J extends object,
K extends object,
>(
- tmClient: Tendermint34Client,
+ tmClient: TendermintClient,
setupExtensionA: QueryExtensionSetup,
setupExtensionB: QueryExtensionSetup,
setupExtensionC: QueryExtensionSetup,
@@ -246,7 +246,7 @@ export class QueryClient {
K extends object,
L extends object,
>(
- tmClient: Tendermint34Client,
+ tmClient: TendermintClient,
setupExtensionA: QueryExtensionSetup,
setupExtensionB: QueryExtensionSetup,
setupExtensionC: QueryExtensionSetup,
@@ -277,7 +277,7 @@ export class QueryClient {
L extends object,
M extends object,
>(
- tmClient: Tendermint34Client,
+ tmClient: TendermintClient,
setupExtensionA: QueryExtensionSetup,
setupExtensionB: QueryExtensionSetup,
setupExtensionC: QueryExtensionSetup,
@@ -310,7 +310,7 @@ export class QueryClient {
M extends object,
N extends object,
>(
- tmClient: Tendermint34Client,
+ tmClient: TendermintClient,
setupExtensionA: QueryExtensionSetup,
setupExtensionB: QueryExtensionSetup,
setupExtensionC: QueryExtensionSetup,
@@ -345,7 +345,7 @@ export class QueryClient {
N extends object,
O extends object,
>(
- tmClient: Tendermint34Client,
+ tmClient: TendermintClient,
setupExtensionA: QueryExtensionSetup,
setupExtensionB: QueryExtensionSetup,
setupExtensionC: QueryExtensionSetup,
@@ -382,7 +382,7 @@ export class QueryClient {
O extends object,
P extends object,
>(
- tmClient: Tendermint34Client,
+ tmClient: TendermintClient,
setupExtensionA: QueryExtensionSetup,
setupExtensionB: QueryExtensionSetup,
setupExtensionC: QueryExtensionSetup,
@@ -421,7 +421,7 @@ export class QueryClient {
P extends object,
Q extends object,
>(
- tmClient: Tendermint34Client,
+ tmClient: TendermintClient,
setupExtensionA: QueryExtensionSetup,
setupExtensionB: QueryExtensionSetup,
setupExtensionC: QueryExtensionSetup,
@@ -462,7 +462,7 @@ export class QueryClient {
Q extends object,
R extends object,
>(
- tmClient: Tendermint34Client,
+ tmClient: TendermintClient,
setupExtensionA: QueryExtensionSetup,
setupExtensionB: QueryExtensionSetup,
setupExtensionC: QueryExtensionSetup,
@@ -484,7 +484,7 @@ export class QueryClient {
): QueryClient & A & B & C & D & E & F & G & H & I & J & K & L & M & N & O & P & Q & R;
public static withExtensions(
- tmClient: Tendermint34Client,
+ tmClient: TendermintClient,
...extensionSetups: Array>
): any {
const client = new QueryClient(tmClient);
@@ -506,9 +506,9 @@ export class QueryClient {
return client;
}
- private readonly tmClient: Tendermint34Client;
+ private readonly tmClient: TendermintClient;
- public constructor(tmClient: Tendermint34Client) {
+ public constructor(tmClient: TendermintClient) {
this.tmClient = tmClient;
}
diff --git a/packages/stargate/src/signingstargateclient.ts b/packages/stargate/src/signingstargateclient.ts
index ed89c7e9..73fa8143 100644
--- a/packages/stargate/src/signingstargateclient.ts
+++ b/packages/stargate/src/signingstargateclient.ts
@@ -12,7 +12,7 @@ import {
Registry,
TxBodyEncodeObject,
} from "@cosmjs/proto-signing";
-import { HttpEndpoint, Tendermint34Client } from "@cosmjs/tendermint-rpc";
+import { HttpEndpoint, Tendermint34Client, TendermintClient } from "@cosmjs/tendermint-rpc";
import { assert, assertDefined } from "@cosmjs/utils";
import { Coin } from "cosmjs-types/cosmos/base/v1beta1/coin";
import { MsgWithdrawDelegatorReward } from "cosmjs-types/cosmos/distribution/v1beta1/tx";
@@ -140,7 +140,7 @@ export class SigningStargateClient extends StargateClient {
}
protected constructor(
- tmClient: Tendermint34Client | undefined,
+ tmClient: TendermintClient | undefined,
signer: OfflineSigner,
options: SigningStargateClientOptions,
) {
diff --git a/packages/stargate/src/stargateclient.ts b/packages/stargate/src/stargateclient.ts
index 400f59ff..ddcf763a 100644
--- a/packages/stargate/src/stargateclient.ts
+++ b/packages/stargate/src/stargateclient.ts
@@ -2,7 +2,12 @@
import { addCoins } from "@cosmjs/amino";
import { toHex } from "@cosmjs/encoding";
import { Uint53 } from "@cosmjs/math";
-import { HttpEndpoint, Tendermint34Client, toRfc3339WithNanoseconds } from "@cosmjs/tendermint-rpc";
+import {
+ HttpEndpoint,
+ Tendermint34Client,
+ TendermintClient,
+ toRfc3339WithNanoseconds,
+} from "@cosmjs/tendermint-rpc";
import { assert, sleep } from "@cosmjs/utils";
import { MsgData } from "cosmjs-types/cosmos/base/abci/v1beta1/abci";
import { Coin } from "cosmjs-types/cosmos/base/v1beta1/coin";
@@ -171,7 +176,7 @@ export class BroadcastTxError extends Error {
/** Use for testing only */
export interface PrivateStargateClient {
- readonly tmClient: Tendermint34Client | undefined;
+ readonly tmClient: TendermintClient | undefined;
}
export interface StargateClientOptions {
@@ -179,7 +184,7 @@ export interface StargateClientOptions {
}
export class StargateClient {
- private readonly tmClient: Tendermint34Client | undefined;
+ private readonly tmClient: TendermintClient | undefined;
private readonly queryClient:
| (QueryClient & AuthExtension & BankExtension & StakingExtension & TxExtension)
| undefined;
@@ -194,7 +199,7 @@ export class StargateClient {
return new StargateClient(tmClient, options);
}
- protected constructor(tmClient: Tendermint34Client | undefined, options: StargateClientOptions) {
+ protected constructor(tmClient: TendermintClient | undefined, options: StargateClientOptions) {
if (tmClient) {
this.tmClient = tmClient;
this.queryClient = QueryClient.withExtensions(
@@ -209,11 +214,11 @@ export class StargateClient {
this.accountParser = accountParser;
}
- protected getTmClient(): Tendermint34Client | undefined {
+ protected getTmClient(): TendermintClient | undefined {
return this.tmClient;
}
- protected forceGetTmClient(): Tendermint34Client {
+ protected forceGetTmClient(): TendermintClient {
if (!this.tmClient) {
throw new Error(
"Tendermint client not available. You cannot use online functionality in offline mode.",
diff --git a/packages/tendermint-rpc/src/index.ts b/packages/tendermint-rpc/src/index.ts
index 757012a3..5b645eff 100644
--- a/packages/tendermint-rpc/src/index.ts
+++ b/packages/tendermint-rpc/src/index.ts
@@ -97,6 +97,7 @@ export * as tendermint34 from "./tendermint34";
export { Tendermint34Client } from "./tendermint34";
export * as tendermint37 from "./tendermint37";
export { Tendermint37Client } from "./tendermint37";
+export { isTendermint34Client, isTendermint37Client, TendermintClient } from "./tendermintclient";
export {
BlockIdFlag,
CommitSignature,
diff --git a/packages/tendermint-rpc/src/tendermintclient.ts b/packages/tendermint-rpc/src/tendermintclient.ts
new file mode 100644
index 00000000..3d07558b
--- /dev/null
+++ b/packages/tendermint-rpc/src/tendermintclient.ts
@@ -0,0 +1,13 @@
+import { Tendermint34Client } from "./tendermint34";
+import { Tendermint37Client } from "./tendermint37";
+
+/** A TendermintClient is either a Tendermint34Client or a Tendermint37Client */
+export type TendermintClient = Tendermint34Client | Tendermint37Client;
+
+export function isTendermint34Client(client: TendermintClient): client is Tendermint34Client {
+ return client instanceof Tendermint34Client;
+}
+
+export function isTendermint37Client(client: TendermintClient): client is Tendermint37Client {
+ return client instanceof Tendermint37Client;
+}