import { QueryClient } from '@cosmjs/stargate-cjs';
import { Tendermint34Client, Tendermint37Client, ConsensusParams } from '@cosmjs/tendermint-rpc-cjs';
import { QueryExtensionSetup, CheqdExtensions, CheqdNetwork } from './types';
import { GetNodeInfoResponse } from 'cosmjs-types-cjs/cosmos/base/tendermint/v1beta1/query';
/**
 * 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 Tendermint client.
     *
     * @param tmClient - Tendermint client (v34 or v37) for blockchain communication
     */
    constructor(tmClient: Tendermint37Client | Tendermint34Client);
    /**
     * 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>;
    /**
     * 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>;
    /**
     * 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 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 fromClient(client: Tendermint34Client | Tendermint37Client): 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