Add TendermintClient
This commit is contained in:
parent
3daa7b6c4a
commit
a808a8218c
@ -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
|
||||
|
||||
@ -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.",
|
||||
|
||||
@ -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,
|
||||
) {
|
||||
|
||||
@ -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<A extends object>(
|
||||
tmClient: Tendermint34Client,
|
||||
tmClient: TendermintClient,
|
||||
setupExtensionA: QueryExtensionSetup<A>,
|
||||
): QueryClient & A;
|
||||
|
||||
/** Constructs a QueryClient with 2 extensions */
|
||||
public static withExtensions<A extends object, B extends object>(
|
||||
tmClient: Tendermint34Client,
|
||||
tmClient: TendermintClient,
|
||||
setupExtensionA: QueryExtensionSetup<A>,
|
||||
setupExtensionB: QueryExtensionSetup<B>,
|
||||
): QueryClient & A & B;
|
||||
|
||||
/** Constructs a QueryClient with 3 extensions */
|
||||
public static withExtensions<A extends object, B extends object, C extends object>(
|
||||
tmClient: Tendermint34Client,
|
||||
tmClient: TendermintClient,
|
||||
setupExtensionA: QueryExtensionSetup<A>,
|
||||
setupExtensionB: QueryExtensionSetup<B>,
|
||||
setupExtensionC: QueryExtensionSetup<C>,
|
||||
@ -70,7 +70,7 @@ export class QueryClient {
|
||||
|
||||
/** Constructs a QueryClient with 4 extensions */
|
||||
public static withExtensions<A extends object, B extends object, C extends object, D extends object>(
|
||||
tmClient: Tendermint34Client,
|
||||
tmClient: TendermintClient,
|
||||
setupExtensionA: QueryExtensionSetup<A>,
|
||||
setupExtensionB: QueryExtensionSetup<B>,
|
||||
setupExtensionC: QueryExtensionSetup<C>,
|
||||
@ -85,7 +85,7 @@ export class QueryClient {
|
||||
D extends object,
|
||||
E extends object,
|
||||
>(
|
||||
tmClient: Tendermint34Client,
|
||||
tmClient: TendermintClient,
|
||||
setupExtensionA: QueryExtensionSetup<A>,
|
||||
setupExtensionB: QueryExtensionSetup<B>,
|
||||
setupExtensionC: QueryExtensionSetup<C>,
|
||||
@ -102,7 +102,7 @@ export class QueryClient {
|
||||
E extends object,
|
||||
F extends object,
|
||||
>(
|
||||
tmClient: Tendermint34Client,
|
||||
tmClient: TendermintClient,
|
||||
setupExtensionA: QueryExtensionSetup<A>,
|
||||
setupExtensionB: QueryExtensionSetup<B>,
|
||||
setupExtensionC: QueryExtensionSetup<C>,
|
||||
@ -121,7 +121,7 @@ export class QueryClient {
|
||||
F extends object,
|
||||
G extends object,
|
||||
>(
|
||||
tmClient: Tendermint34Client,
|
||||
tmClient: TendermintClient,
|
||||
setupExtensionA: QueryExtensionSetup<A>,
|
||||
setupExtensionB: QueryExtensionSetup<B>,
|
||||
setupExtensionC: QueryExtensionSetup<C>,
|
||||
@ -142,7 +142,7 @@ export class QueryClient {
|
||||
G extends object,
|
||||
H extends object,
|
||||
>(
|
||||
tmClient: Tendermint34Client,
|
||||
tmClient: TendermintClient,
|
||||
setupExtensionA: QueryExtensionSetup<A>,
|
||||
setupExtensionB: QueryExtensionSetup<B>,
|
||||
setupExtensionC: QueryExtensionSetup<C>,
|
||||
@ -165,7 +165,7 @@ export class QueryClient {
|
||||
H extends object,
|
||||
I extends object,
|
||||
>(
|
||||
tmClient: Tendermint34Client,
|
||||
tmClient: TendermintClient,
|
||||
setupExtensionA: QueryExtensionSetup<A>,
|
||||
setupExtensionB: QueryExtensionSetup<B>,
|
||||
setupExtensionC: QueryExtensionSetup<C>,
|
||||
@ -190,7 +190,7 @@ export class QueryClient {
|
||||
I extends object,
|
||||
J extends object,
|
||||
>(
|
||||
tmClient: Tendermint34Client,
|
||||
tmClient: TendermintClient,
|
||||
setupExtensionA: QueryExtensionSetup<A>,
|
||||
setupExtensionB: QueryExtensionSetup<B>,
|
||||
setupExtensionC: QueryExtensionSetup<C>,
|
||||
@ -217,7 +217,7 @@ export class QueryClient {
|
||||
J extends object,
|
||||
K extends object,
|
||||
>(
|
||||
tmClient: Tendermint34Client,
|
||||
tmClient: TendermintClient,
|
||||
setupExtensionA: QueryExtensionSetup<A>,
|
||||
setupExtensionB: QueryExtensionSetup<B>,
|
||||
setupExtensionC: QueryExtensionSetup<C>,
|
||||
@ -246,7 +246,7 @@ export class QueryClient {
|
||||
K extends object,
|
||||
L extends object,
|
||||
>(
|
||||
tmClient: Tendermint34Client,
|
||||
tmClient: TendermintClient,
|
||||
setupExtensionA: QueryExtensionSetup<A>,
|
||||
setupExtensionB: QueryExtensionSetup<B>,
|
||||
setupExtensionC: QueryExtensionSetup<C>,
|
||||
@ -277,7 +277,7 @@ export class QueryClient {
|
||||
L extends object,
|
||||
M extends object,
|
||||
>(
|
||||
tmClient: Tendermint34Client,
|
||||
tmClient: TendermintClient,
|
||||
setupExtensionA: QueryExtensionSetup<A>,
|
||||
setupExtensionB: QueryExtensionSetup<B>,
|
||||
setupExtensionC: QueryExtensionSetup<C>,
|
||||
@ -310,7 +310,7 @@ export class QueryClient {
|
||||
M extends object,
|
||||
N extends object,
|
||||
>(
|
||||
tmClient: Tendermint34Client,
|
||||
tmClient: TendermintClient,
|
||||
setupExtensionA: QueryExtensionSetup<A>,
|
||||
setupExtensionB: QueryExtensionSetup<B>,
|
||||
setupExtensionC: QueryExtensionSetup<C>,
|
||||
@ -345,7 +345,7 @@ export class QueryClient {
|
||||
N extends object,
|
||||
O extends object,
|
||||
>(
|
||||
tmClient: Tendermint34Client,
|
||||
tmClient: TendermintClient,
|
||||
setupExtensionA: QueryExtensionSetup<A>,
|
||||
setupExtensionB: QueryExtensionSetup<B>,
|
||||
setupExtensionC: QueryExtensionSetup<C>,
|
||||
@ -382,7 +382,7 @@ export class QueryClient {
|
||||
O extends object,
|
||||
P extends object,
|
||||
>(
|
||||
tmClient: Tendermint34Client,
|
||||
tmClient: TendermintClient,
|
||||
setupExtensionA: QueryExtensionSetup<A>,
|
||||
setupExtensionB: QueryExtensionSetup<B>,
|
||||
setupExtensionC: QueryExtensionSetup<C>,
|
||||
@ -421,7 +421,7 @@ export class QueryClient {
|
||||
P extends object,
|
||||
Q extends object,
|
||||
>(
|
||||
tmClient: Tendermint34Client,
|
||||
tmClient: TendermintClient,
|
||||
setupExtensionA: QueryExtensionSetup<A>,
|
||||
setupExtensionB: QueryExtensionSetup<B>,
|
||||
setupExtensionC: QueryExtensionSetup<C>,
|
||||
@ -462,7 +462,7 @@ export class QueryClient {
|
||||
Q extends object,
|
||||
R extends object,
|
||||
>(
|
||||
tmClient: Tendermint34Client,
|
||||
tmClient: TendermintClient,
|
||||
setupExtensionA: QueryExtensionSetup<A>,
|
||||
setupExtensionB: QueryExtensionSetup<B>,
|
||||
setupExtensionC: QueryExtensionSetup<C>,
|
||||
@ -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<QueryExtensionSetup<object>>
|
||||
): 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;
|
||||
}
|
||||
|
||||
|
||||
@ -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,
|
||||
) {
|
||||
|
||||
@ -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.",
|
||||
|
||||
@ -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,
|
||||
|
||||
13
packages/tendermint-rpc/src/tendermintclient.ts
Normal file
13
packages/tendermint-rpc/src/tendermintclient.ts
Normal file
@ -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;
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user