import { Account, AccountWithTransactions, App, Block, DispatchRequest, DispatchResponse, GetAccountWithTransactionsOptions, GetAppsOptions, GetBlockTransactionsOptions, GetNodeClaimsOptions, GetNodesOptions, Node, Paginable, PaginableBlockTransactions, RawTxRequest, Transaction, TransactionResponse } from '@pokt-foundation/pocketjs-types';
import { AbstractProvider } from '@pokt-foundation/pocketjs-abstract-provider';
/**
 * A JSONRPCProvider lets you query data from the chain and send relays to the network.
 * NodeJS only, not Isomorphic or Browser compatible.
 *  **/
export declare class JsonRpcProvider implements AbstractProvider {
    private rpcUrl;
    private dispatchers;
    private logger;
    constructor({ rpcUrl, dispatchers, }: {
        rpcUrl: string;
        dispatchers?: string[];
    });
    private perform;
    /**
     * Fetches the provided address's balance.
     * @param {string} address - The address to query.
     * @returns {bigint} - The address's balance.
     * */
    getBalance(address: string | Promise<string>): Promise<bigint>;
    /**
     * Fetches the provided address's transaction count.
     * @param {string} address - The address to query.
     * @returns {number} - The address's transaction count.
     * */
    getTransactionCount(address: string | Promise<string>): Promise<number>;
    /**
     * Gets the address's acount type (node, app, or account).
     * @param {string} address - The address to query.
     * @returns {'node' | 'app' | 'account'} - The address's account type.
     * */
    getType(address: string | Promise<string>): Promise<'node' | 'app' | 'account'>;
    /**
     * Sends a signed transaction from this provider.
     * @param {TransactionRequest} transaction - The transaction to send, formatted as a `TransactionRequest`.
     * @returns {TransactionResponse} - The network's response to the transaction.
     * */
    sendTransaction(transaction: RawTxRequest): Promise<TransactionResponse>;
    /**
     * Gets an specific block by its block number.
     * @param {number} blockNumber - the number (height) of the block to query.
     * @returns {Block} - The block requested.
     * */
    getBlock(blockNumber: number): Promise<Block>;
    /**
     * Gets an specific transaction specified by its hash.
     * @param {string} transactionHash - the hash of the transaction to get.
     * @returns {TransactionResponse} - The transaction requested.
     * */
    getTransaction(transactionHash: string): Promise<Transaction>;
    /**
     * Fetches the latest block number.
     * @returns {number} - The latest height as observed by the node the Provider is connected to.
     * */
    getBlockNumber(): Promise<number>;
    /**
     * Fetches the requested block's transactions.
     * @param {GetBlockTransactionsOptions} GetBlockTransactionsOptions - The options to pass in to the query.
     * @ returns {PaginableBlockTransactions} - The block's transactions.
     * */
    getBlockTransactions(GetBlockTransactionsOptions?: GetBlockTransactionsOptions): Promise<PaginableBlockTransactions>;
    /**
     * Fetches nodes active from the network with the options provided.
     * @param {GetNodesOptions} getNodesOptions - the options to pass in to the query.
     * @returns {Node[]} - An array with the nodes requested and their information.
     * */
    getNodes(GetNodesOptions?: GetNodesOptions): Promise<Paginable<Node>>;
    /**
     * Fetches a node from the network with the options provided.
     * @param {string} address - The address corresponding to the node.
     * @param {GetNodesOptions} getNodesOptions - The options to pass in to the query.
     * @returns {Node} - The node requested and its information.
     * */
    getNode({ address, blockHeight, }: {
        address: string | Promise<string>;
        blockHeight?: number;
    }): Promise<Node>;
    /**
     * Fetches apps from the network with the options provided.
     * @param {GetAppOptions} getAppOptions - The options to pass in to the query.
     * @returns {App} - An array with the apps requested and their information.
     * */
    getApps(GetAppsOptions?: GetAppsOptions): Promise<Paginable<App>>;
    /**
     * Fetches an app from the network with the options provided.
     * @param {string} address - The address of the app to fetch.
     * @param {GetAppOptions} getAppOptions - The options to pass in to the query.
     * @returns {App} - The app requested and its information.
     * */
    getApp({ address, blockHeight, }: {
        address: string | Promise<string>;
        blockHeight?: number;
    }): Promise<App>;
    /**
     * Fetches an account from the network.
     * @param {string} address - The address of the account to fetch.
     * @returns {Account} - The account requested and its information.
     * */
    getAccount(address: string | Promise<string>): Promise<Account>;
    /**
     * Fetches an account from the network, along with its transactions.
     * @param {string} address - The address of the account to fetch.
     * @returns {AccountWithTransaction} - The account requested and its information, along with its transactions.
     * */
    getAccountWithTransactions(address: string | Promise<string>, options?: GetAccountWithTransactionsOptions): Promise<AccountWithTransactions>;
    /**
     * Performs a dispatch request to a random dispatcher from the ones provided. Fails if no dispatcher is found.
     * @param {DispatchRequest} request - The dispatch request.
     * @param {object} options - The options available to tweak the request itself.
     * @param {number} options.retryAttempts - The number of retries to perform if the first call fails.
     * @param {boolean} options.rejectSelfSignedCertificates - Option to reject self signed certificates or not.
     * @param {timeout} options.timeout - Timeout before the call fails. In milliseconds.
     * @returns {DispatchResponse} - The dispatch response from the dispatcher node.
     * */
    dispatch(request: DispatchRequest, options?: {
        retryAttempts?: number;
        rejectSelfSignedCertificates?: boolean;
        timeout?: number;
    }): Promise<DispatchResponse>;
    /**
     * Sends a relay to the network through the main RPC URL provided. Best used through a Relayer.
     * @param {any} request - The relay request.
     * @param {string} rpcUrl - The RPC URL to use, if the main RPC URL is not a suitable node to relay requests.
     * @param {object} options - The options available to tweak the request itself.
     * @param {number} options.retryAttempts - The number of retries to perform if the first call fails.
     * @param {boolean} options.rejectSelfSignedCertificates - Option to reject self signed certificates or not.
     * @param {timeout} options.timeout - Timeout before the call fails. In milliseconds.
     * @returns {any} - A relay response.
     * * */
    relay(request: any, rpcUrl: string, options?: {
        retryAttempts?: number;
        rejectSelfSignedCertificates?: boolean;
        timeout?: number;
    }): Promise<unknown>;
    /**
     * Gets all the parameters used to configure the Pocket Network.
     * @param {number} height - The block height to use to determine the params.
     * @param {object} options - The options available to tweak the request itself.
     * @param {number} options.timeout - Timeout before the call fails. In milliseconds.
     * @returns {any} - The raw params.
     * * */
    getAllParams(height: number, options: {
        timeout?: number;
    }): Promise<any>;
    /**
     * Gets the corresponding node's claims.
     * @param {string} address - The address of the node to get the claims from.
     * @param {object} GetNodeClaimsOptions - The options available to tweak the request itself.
     * @param {number} options.height - The block height to use to determine the result of the call.
     * @param {number} options.page - The page to get the node claims from.
     * @param {number} options.perPage - How many claims per page to retrieve.
     * @param {timeout} options.timeout - Timeout before the call fails. In milliseconds.
     * @returns {any} - The raw node claims.
     * * */
    getNodeClaims(address: string, options: GetNodeClaimsOptions): Promise<Paginable<any>>;
    /**
     * Gets the requested supply information.
     * @param {number} height - The block height to use to determine the current supply.
     * @param {object} options - The options available to tweak the request itself.
     * @param {number} options.timeout - Timeout before the call fails. In milliseconds.
     * @returns {any} - The raw supply info.
     * * */
    getSupply(height: number | undefined, options: {
        timeout?: number;
    }): Promise<any>;
    /**
     * Gets the supported chains.
     * @param {number} height - The block height to use to determine the supported chains at that point in time.
     * @param {object} options - The options available to tweak the request itself.
     * @param {number} options.timeout - Timeout before the call fails. In milliseconds.
     * @returns {any} - The currently supported chains.
     * * */
    getSupportedChains(height: number | undefined, options: {
        timeout?: number;
    }): Promise<any>;
    /**
     * Gets the current Pocket Network Params.
     * @param {number} height - The block height to use to determine the Pocket Params at that point in time.
     * @param {object} options - The options available to tweak the request itself.
     * @param {number} options.timeout - Timeout before the call fails. In milliseconds.
     * @returns {any} - The raw pocket params.
     * * */
    getPocketParams(height: number | undefined, options: {
        timeout?: number;
    }): Promise<any>;
    /**
     * Gets the current Application Params.
     * @param {number} height - The block height to use to determine the Application Params at that point in time.
     * @param {object} options - The options available to tweak the request itself.
     * @param {number} options.timeout - Timeout before the call fails. In milliseconds.
     * @returns {any} - The raw application params.
     * * */
    getAppParams(height: number | undefined, options: {
        timeout?: number;
    }): Promise<any>;
}
//# sourceMappingURL=json-rpc-provider.d.ts.map