Skip to main content
The primary client library for interacting with Cosmos SDK chains. Provides read-only querying via StargateClient and transaction signing/broadcasting via SigningStargateClient.
npm install @cosmjs/stargate

StargateClient

Read-only client for querying blockchain state.

Static Methods

MethodParametersReturns
connectendpoint: string | HttpEndpoint, options?: StargateClientOptionsPromise<StargateClient>
createcometClient: CometClient, options?: StargateClientOptionsStargateClient

Instance Methods

MethodParametersReturns
getChainIdPromise<string>
getHeightPromise<number>
getAccountsearchAddress: stringPromise<Account | null>
getSequenceaddress: stringPromise<SequenceResponse>
getBlockheight?: numberPromise<Block>
getBalanceaddress: string, searchDenom: stringPromise<Coin>
getAllBalancesaddress: stringPromise<readonly Coin[]>
getBalanceStakedaddress: stringPromise<Coin | null>
getDelegationdelegatorAddress: string, validatorAddress: stringPromise<Coin | null>
getTxid: stringPromise<IndexedTx | null>
searchTxquery: SearchTxQueryPromise<IndexedTx[]>
broadcastTxtx: Uint8Array, timeoutMs?: number, pollIntervalMs?: numberPromise<DeliverTxResponse>
broadcastTxSynctx: Uint8ArrayPromise<string>
disconnectvoid

Usage

import { StargateClient } from "@cosmjs/stargate";

const client = await StargateClient.connect("https://rpc.my-chain.network");

const balance = await client.getBalance("cosmos1...", "uatom");
const account = await client.getAccount("cosmos1...");
const block = await client.getBlock();
const tx = await client.getTx("ABC123...");

client.disconnect();

SigningStargateClient

Extends StargateClient with transaction signing and broadcasting. Inherits all read-only methods above.

Static Methods

MethodParametersReturns
connectWithSignerendpoint: string | HttpEndpoint, signer: OfflineSigner, options?: SigningStargateClientOptionsPromise<SigningStargateClient>
createWithSignercometClient: CometClient, signer: OfflineSigner, options?: SigningStargateClientOptionsSigningStargateClient
offlinesigner: OfflineSigner, options?: SigningStargateClientOptionsPromise<SigningStargateClient>

Instance Methods

MethodParametersReturns
simulatesignerAddress: string, messages: readonly EncodeObject[], memo: string | undefinedPromise<number>
sendTokenssenderAddress: string, recipientAddress: string, amount: readonly Coin[], fee: StdFee | "auto" | number, memo?: stringPromise<DeliverTxResponse>
delegateTokensdelegatorAddress: string, validatorAddress: string, amount: Coin, fee: StdFee | "auto" | number, memo?: stringPromise<DeliverTxResponse>
undelegateTokensdelegatorAddress: string, validatorAddress: string, amount: Coin, fee: StdFee | "auto" | number, memo?: stringPromise<DeliverTxResponse>
withdrawRewardsdelegatorAddress: string, validatorAddress: string, fee: StdFee | "auto" | number, memo?: stringPromise<DeliverTxResponse>
signAndBroadcastsignerAddress: string, messages: readonly EncodeObject[], fee: StdFee | "auto" | number, memo?: string, timeoutHeight?: bigintPromise<DeliverTxResponse>
signAndBroadcastSyncsignerAddress: string, messages: readonly EncodeObject[], fee: StdFee | "auto" | number, memo?: string, timeoutHeight?: bigintPromise<string>
signsignerAddress: string, messages: readonly EncodeObject[], fee: StdFee, memo: string, explicitSignerData?: SignerData, timeoutHeight?: bigintPromise<TxRaw>

Instance Properties

PropertyType
registryRegistry
broadcastTimeoutMsnumber | undefined
broadcastPollIntervalMsnumber | undefined

Usage

import { SigningStargateClient, GasPrice } from "@cosmjs/stargate";
import { DirectSecp256k1HdWallet } from "@cosmjs/proto-signing";
import { MsgSend } from "cosmjs-types/cosmos/bank/v1beta1/tx";

const wallet = await DirectSecp256k1HdWallet.fromMnemonic("your mnemonic ...");
const [{ address }] = await wallet.getAccounts();

const client = await SigningStargateClient.connectWithSigner(
  "https://rpc.my-chain.network",
  wallet,
  { gasPrice: GasPrice.fromString("0.025uatom") },
);

const result = await client.sendTokens(
  address,
  "cosmos1recipient...",
  [{ denom: "uatom", amount: "1000000" }],
  "auto",
);

const sendMsg = {
  typeUrl: "/cosmos.bank.v1beta1.MsgSend",
  value: MsgSend.fromPartial({
    fromAddress: address,
    toAddress: "cosmos1recipient...",
    amount: [{ denom: "uatom", amount: "1000000" }],
  }),
};

await client.signAndBroadcast(address, [sendMsg], "auto", "memo");

GasPrice

Represents a gas price as an amount and denomination.
MethodParametersReturns
constructoramount: Decimal, denom: stringGasPrice
fromString (static)gasPrice: stringGasPrice
toStringstring
PropertyType
amountDecimal
denomstring

calculateFee

Calculates transaction fees from a gas limit and gas price.
function calculateFee(gasLimit: number, gasPrice: GasPrice | string): StdFee
import { calculateFee, GasPrice } from "@cosmjs/stargate";

const fee = calculateFee(200_000, GasPrice.fromString("0.025uatom"));
// { amount: [{ denom: "uatom", amount: "5000" }], gas: "200000" }

QueryClient

Base query client that supports modular extensions.
MethodParametersReturns
withExtensions (static)cometClient: CometClient, ...extensionSetups: QueryExtensionSetup[]QueryClient & Extensions
queryAbcipath: string, request: Uint8Array, desiredHeight?: numberPromise<QueryAbciResponse>

Query Extensions

Setup functions to add module-specific query methods:
FunctionNamespaceKey Methods
setupBankExtensionbankbalance, allBalances, totalSupply, supplyOf
setupStakingExtensionstakingvalidators, delegation, delegatorDelegations, unbondingDelegation
setupGovExtensiongovproposals, proposal, deposits, votes, tally
setupDistributionExtensiondistributiondelegationRewards, delegationTotalRewards, communityPool
setupMintExtensionmintinflation, annualProvisions, params
setupAuthExtensionauthaccount
setupIbcExtensionibcchannel.channel, channel.channels, transfer.denomTrace
setupTxExtensiontxgetTx, simulate
setupSlashingExtensionslashingsigningInfo, signingInfos, params
setupFeegrantExtensionfeegrantallowance, allowances
setupAuthzExtensionauthzgrants
import { QueryClient, setupBankExtension, setupStakingExtension } from "@cosmjs/stargate";
import { connectComet } from "@cosmjs/tendermint-rpc";

const cometClient = await connectComet("https://rpc.my-chain.network");
const queryClient = QueryClient.withExtensions(
  cometClient,
  setupBankExtension,
  setupStakingExtension,
);

const balance = await queryClient.bank.balance("cosmos1...", "uatom");
const validators = await queryClient.staking.validators("BOND_STATUS_BONDED");

AminoTypes

Manages conversion between Protobuf messages and Amino JSON format.
MethodParametersReturns
constructortypes: AminoConvertersAminoTypes
toAminoencodeObject: EncodeObjectAminoMsg
fromAminoaminoMsg: AminoMsgEncodeObject

Key Types

DeliverTxResponse

interface DeliverTxResponse {
  readonly height: number;
  readonly txIndex: number;
  readonly code: number;
  readonly transactionHash: string;
  readonly events: readonly Event[];
  /** @deprecated Not filled in Cosmos SDK 0.50+. Use `events` instead. */
  readonly rawLog?: string;
  /** @deprecated Use `msgResponses` instead. */
  readonly data?: readonly MsgData[];
  readonly msgResponses: Array<{ readonly typeUrl: string; readonly value: Uint8Array }>;
  readonly gasUsed: bigint;
  readonly gasWanted: bigint;
}

IndexedTx

interface IndexedTx {
  readonly height: number;
  readonly txIndex: number;
  readonly hash: string;
  readonly code: number;
  readonly events: readonly Event[];
  readonly rawLog: string;
  readonly tx: Uint8Array;
  readonly msgResponses: Array<{ readonly typeUrl: string; readonly value: Uint8Array }>;
  readonly gasUsed: bigint;
  readonly gasWanted: bigint;
}

Block

interface Block {
  readonly id: string;
  readonly header: BlockHeader;
  readonly txs: readonly Uint8Array[];
}

BlockHeader

interface BlockHeader {
  readonly version: { readonly block: string; readonly app: string };
  readonly height: number;
  readonly chainId: string;
  readonly time: string;
}

SigningStargateClientOptions

interface SigningStargateClientOptions extends StargateClientOptions {
  readonly registry?: Registry;
  readonly aminoTypes?: AminoTypes;
  readonly broadcastTimeoutMs?: number;
  readonly broadcastPollIntervalMs?: number;
  readonly gasPrice?: GasPrice | DynamicGasPriceConfig;
}

SignerData

interface SignerData {
  readonly accountNumber: number;
  readonly sequence: number;
  readonly chainId: string;
}

Account

interface Account {
  readonly address: string;
  readonly pubkey: Pubkey | null;
  readonly accountNumber: number;
  readonly sequence: number;
}

SequenceResponse

interface SequenceResponse {
  readonly accountNumber: number;
  readonly sequence: number;
}

Helper Functions

FunctionParametersReturns
assertIsDeliverTxSuccessresult: DeliverTxResponsevoid (throws on failure)
assertIsDeliverTxFailureresult: DeliverTxResponsevoid (throws on success)
isDeliverTxSuccessresult: DeliverTxResponseboolean
isDeliverTxFailureresult: DeliverTxResponseboolean
coinamount: number | string, denom: stringCoin
coinsamount: number | string, denom: stringCoin[]
parseCoinsinput: stringCoin[]
makeCosmoshubPathaccount: numberHdPath
createPaginationpaginationKey?: Uint8ArrayPageRequest
createProtobufRpcClientbase: QueryClientProtobufRpcClient
decodeCosmosSdkDecFromProtoinput: string | Uint8ArrayDecimal

Error Classes

ClassDescription
BroadcastTxErrorThrown when a transaction fails during broadcast
TimeoutErrorThrown when broadcast times out waiting for inclusion