import { BaseContract } from "../abstracts";
import { ITransactionConfig, ITransactionReceipt, ITransactionData, IBlock, IBlockWithTransaction, IJsonRpcRequestPayload, IJsonRpcResponse, ITransactionWriteResult } from "../interfaces";
import { Logger } from "../utils";
export declare abstract class BaseWeb3Client {
    logger: Logger;
    constructor(logger: Logger);
    abstract getContract(address: string, abi: any): BaseContract;
    abstract read(config: ITransactionConfig): Promise<string>;
    abstract write(config: ITransactionConfig): ITransactionWriteResult;
    abstract getGasPrice(): Promise<string>;
    abstract estimateGas(config: ITransactionConfig): Promise<number>;
    abstract getChainId(): Promise<number>;
    abstract getTransactionCount(address: string, blockNumber: any): Promise<number>;
    abstract getTransaction(transactionHash: string): Promise<ITransactionData>;
    abstract getTransactionReceipt(transactionHash: string): Promise<ITransactionReceipt>;
    abstract getBlock(blockHashOrBlockNumber: any): Promise<IBlock>;
    abstract getBlockWithTransaction(blockHashOrBlockNumber: any): Promise<IBlockWithTransaction>;
    getRootHash?(startBlock: number, endBlock: number): Promise<string>;
    abstract sendRPCRequest(request: IJsonRpcRequestPayload): Promise<IJsonRpcResponse>;
    abstract encodeParameters(params: any[], types: any[]): string;
    abstract decodeParameters(hexString: string, types: any[]): any[];
    abstract etheriumSha3(...value: any[]): string;
}
