UNPKG

@cheqd/sdk

Version:

A TypeScript SDK built with CosmJS to interact with the cheqd network ledger

91 lines 4.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CheqdQuerier = void 0; const stargate_cjs_1 = require("@cosmjs/stargate-cjs"); const tendermint_rpc_cjs_1 = require("@cosmjs/tendermint-rpc-cjs"); /** * Extended QueryClient specifically designed for the Cheqd blockchain network. * Provides enhanced querying capabilities with support for custom extensions * and consensus parameter retrieval. */ class CheqdQuerier extends stargate_cjs_1.QueryClient { /** * Constructs a new CheqdQuerier instance with the provided Tendermint client. * * @param tmClient - Tendermint client (v34 or v37) for blockchain communication */ constructor(tmClient) { super(tmClient); } /** * Retrieves the consensus parameters from the blockchain network. * This method creates a temporary connection to fetch the latest block results * and extract consensus update information. * * @param url - RPC URL of the blockchain node * @returns Promise resolving to consensus parameters or undefined if not available */ static async getConsensusParameters(url) { // connect to comet rpc const cometClient = await tendermint_rpc_cjs_1.Tendermint37Client.connect(url); // get block results const result = await cometClient.blockResults(); // disconnect comet client cometClient.disconnect(); // return consensus parameters return result.consensusUpdates; } /** * Creates a new CheqdQuerier instance by establishing a connection to the specified RPC URL. * This is the primary method for creating a querier instance for blockchain communication. * * @param url - RPC URL of the blockchain node to connect to * @returns Promise resolving to a connected CheqdQuerier instance */ static async connect(url) { const tmClient = await tendermint_rpc_cjs_1.Tendermint37Client.connect(url); return new CheqdQuerier(tmClient); } /** * Creates a CheqdQuerier instance from an existing Tendermint client. * Useful when you already have an established client connection. * * @param client - Existing Tendermint client (v34 or v37) * @returns Promise resolving to a CheqdQuerier instance using the provided client */ static async fromClient(client) { return new CheqdQuerier(client); } /** * Creates a CheqdQuerier instance with a single query extension. * Extensions provide specialized query capabilities for specific blockchain modules. * * @param url - RPC URL of the blockchain node to connect to * @param extension - Query extension setup to add specialized query functionality * @returns Promise resolving to a CheqdQuerier instance with the specified extension */ static async connectWithExtension(url, extension) { const tmClient = await tendermint_rpc_cjs_1.Tendermint37Client.connect(url); return CheqdQuerier.withExtensions(tmClient, extension); } /** * Creates a CheqdQuerier instance with multiple query extensions. * This method supports adding multiple specialized query capabilities for different * blockchain modules in a single operation. For single extensions, it delegates * to connectWithExtension for efficiency. * * @param url - RPC URL of the blockchain node to connect to * @param extensions - Variable number of query extension setups to add functionality * @returns Promise resolving to a CheqdQuerier instance with all specified extensions */ static async connectWithExtensions(url, ...extensions) { if (extensions.length === 1) { return CheqdQuerier.connectWithExtension(url, extensions[0]); } const tmClient = await tendermint_rpc_cjs_1.Tendermint37Client.connect(url); const tupleLike = extensions; return CheqdQuerier.withExtensions(tmClient, ...tupleLike); } } exports.CheqdQuerier = CheqdQuerier; //# sourceMappingURL=querier.js.map