import { JsonRpcResponse } from './jsonrpc';
import { GethMemStats, GethMetrics, GethNodeInfoResponse, GethPeers, GethTxpool, ParityMode, ParityNodeKind, ParityPeers, ParityPendingTransaction, RawBlockResponse, RawTransactionReceipt, RawTransactionResponse, RawParityTransactionReceipt, SyncStatus } from './responses';
export interface EthRequest<P extends any[], R> {
    method: string;
    params?: P;
    response?: (r: JsonRpcResponse) => R;
}
export declare function decodeResponseType(type: string, data: string): any;
export declare function encodeParameter(value: number | string, type: string): string;
export declare const blockNumber: () => EthRequest<[], number>;
export declare const getBlock: (blockNumber: number | 'latest' | 'pending') => EthRequest<[string, boolean], RawBlockResponse>;
export declare const getTransaction: (txHash: string) => EthRequest<[string], RawTransactionResponse>;
export declare const getTransactionReceipt: (txHash: string) => EthRequest<[string], RawTransactionReceipt>;
export declare const getCode: (address: string) => EthRequest<[string, string], string>;
export declare const getStorageAt: (address: string, storageSlot: string) => EthRequest<[string, string, string], string>;
export declare const pendingTransactions: () => EthRequest<[], RawTransactionResponse[]>;
/** Returns the current client version */
export declare const clientVersion: () => EthRequest<[], string>;
/** Returns the current network id */
export declare const netVersion: () => EthRequest<[], number>;
/** Returns the chain ID - see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-695.md */
export declare const chainId: () => EthRequest<[], number>;
/** Returns the current ethereum protocol version */
export declare const protocolVersion: () => EthRequest<[], number>;
/** Returns true if client is actively mining new blocks */
export declare const mining: () => EthRequest<[], boolean>;
/** Returns the number of hashes per second that the node is mining with */
export declare const hashRate: () => EthRequest<[], number>;
/** Returns the current price per gas in wei */
export declare const gasPrice: () => EthRequest<[], number | string>;
/** Returns number of peers currently connected to the client */
export declare const peerCount: () => EthRequest<[], number>;
/** Returns an object with sync status data or FALSE, when not syncing */
export declare const syncing: () => EthRequest<[], SyncStatus>;
/** Returns the result from calling a method of a contract */
export declare const call: (to: string, method: string, responseType: string) => EthRequest<[{
    to: string;
    data: string;
}, string], any>;
export declare const gethNodeInfo: () => EthRequest<[], GethNodeInfoResponse>;
export declare const gethPeers: () => EthRequest<[], GethPeers>;
export declare const gethMetrics: (param: boolean) => EthRequest<[boolean], GethMetrics>;
export declare const gethMemStats: () => EthRequest<[], GethMemStats>;
export declare const gethTxpool: () => EthRequest<[], GethTxpool>;
export declare const quorumIstanbulSnapshot: () => EthRequest<[], any>;
export declare const quorumIstanbulCandidates: () => EthRequest<[], any>;
export declare const quorumRaftRole: () => EthRequest<[], any>;
export declare const quorumRaftLeader: () => EthRequest<[], any>;
export declare const quorumRaftCluster: () => EthRequest<[], any>;
export declare const quorumPrivateTransactionPayload: (id: string) => EthRequest<[string], string>;
/** Returns the node enode URI */
export declare const parityEnode: () => EthRequest<[], string>;
export declare const parityMode: () => EthRequest<[], ParityMode>;
export declare const parityNodeKind: () => EthRequest<[], ParityNodeKind>;
export declare const parityPeers: () => EthRequest<[], ParityPeers>;
export declare const parityPendingTransactions: () => EthRequest<[], ParityPendingTransaction[]>;
export declare const getBlockReceipts: (blockNumber: number | string) => EthRequest<[string], RawParityTransactionReceipt[]>;
