import { QueryClient } from '@cosmjs/stargate';
import { CometClient, ConsensusParams } from '@cosmjs/tendermint-rpc';
import { QueryExtensionSetup, CheqdExtensions } from './types.js';
import { type GetNodeInfoResponse } from 'cosmjs-types/cosmos/base/tendermint/v1beta1/query.js';
import { CheqdNetwork } from './types.js';
/**
 * Extended QueryClient specifically designed for the Cheqd blockchain network.
 * Provides enhanced querying capabilities with support for custom extensions
 * and consensus parameter retrieval.
 */
export declare class CheqdQuerier extends QueryClient {
    /**
     * Constructs a new CheqdQuerier instance with the provided Comet client.
     *
     * @param cometClient - Comet client for blockchain communication
     */
    constructor(cometClient: CometClient);
    /**
     * 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 getConsensusParameters(url: string): Promise<ConsensusParams | undefined>;
    /**
     * Queries the node information over RPC to retrieve binary (application) version details.
     * Uses the Cosmos base tendermint service which returns both application and consensus versions.
     *
     * @param url - RPC URL of the blockchain node
     * @returns Promise resolving to GetNodeInfoResponse containing version info
     */
    static getNodeInfo(url: string): Promise<GetNodeInfoResponse>;
    /**
     * Uses the active connection to retrieve node info without creating a new client.
     * @returns Promise resolving to GetNodeInfoResponse containing version info
     */
    /**
     * Resolves the Cheqd network (mainnet/testnet) from the node info response.
     * @param nodeInfo - Node info response to inspect
     * @returns Detected network or undefined if it cannot be inferred
     */
    static resolveNetworkFromNodeInfo(nodeInfo: GetNodeInfoResponse): CheqdNetwork | undefined;
    /**
     * Detects the network (mainnet/testnet) by querying the node info over RPC.
     * @param url - RPC URL of the blockchain node
     * @returns Resolved CheqdNetwork value
     */
    static detectNetwork(url: string): Promise<CheqdNetwork>;
    /**
     * Detects the network using the existing querier connection.
     * @returns Resolved CheqdNetwork value
     */
    /**
     * 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 connect(url: string): Promise<CheqdQuerier>;
    /**
     * Creates a CheqdQuerier instance from an existing Comet client.
     * Useful when you already have an established client connection.
     *
     * @param client - Existing Comet client
     * @returns Promise resolving to a CheqdQuerier instance using the provided client
     */
    static fromClient(client: CometClient): Promise<CheqdQuerier>;
    /**
     * 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 connectWithExtension<E extends CheqdExtensions>(url: string, extension: QueryExtensionSetup<E>): Promise<CheqdQuerier & E>;
    /**
     * 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 connectWithExtensions(url: string, ...extensions: QueryExtensionSetup<CheqdExtensions>[]): Promise<CheqdQuerier & CheqdExtensions>;
}
//# sourceMappingURL=querier.d.ts.map