///
import { Address } from '../address';
import { BlockType, Eth } from '../eth';
import { SendTx } from '../eth/send-tx';
import { TransactionReceipt } from '../formatters';
import { ContractAbi, ContractFunctionEntry } from './abi';
export declare type TxFactory = (...args: any[]) => Tx;
export interface CallOptions {
from?: Address;
gasPrice?: string | number;
gas?: number;
}
export interface SendOptions {
from?: Address;
gasPrice?: string | number;
gas?: number;
value?: number | string;
nonce?: number | string;
}
export interface EstimateOptions {
from?: Address;
gas?: string | number;
gasPrice?: string | number;
value?: number | string;
}
export declare type DefaultOptions = {
from?: Address;
gasPrice?: string | number;
gas?: number;
};
export interface TxCall {
call(options?: CallOptions, block?: BlockType): Promise;
getCallRequestPayload(options?: CallOptions, block?: number): any;
estimateGas(options?: EstimateOptions): Promise;
encodeABI(): Buffer;
}
export interface TxSend {
send(options?: SendOptions): SendTx;
getSendRequestPayload(options?: SendOptions): any;
estimateGas(options?: EstimateOptions): Promise;
encodeABI(): Buffer;
}
export declare class Tx implements TxCall, TxSend {
protected eth: Eth;
protected contractEntry: ContractFunctionEntry;
protected contractAbi: ContractAbi;
protected contractAddress?: Address | undefined;
protected args: any[];
protected defaultOptions: DefaultOptions;
constructor(eth: Eth, contractEntry: ContractFunctionEntry, contractAbi: ContractAbi, contractAddress?: Address | undefined, args?: any[], defaultOptions?: DefaultOptions);
estimateGas(options?: EstimateOptions): Promise;
call(options?: CallOptions, block?: BlockType): Promise;
getCallRequestPayload(options: CallOptions, block?: number): {
format: (result: string) => any;
method: string;
params: (string | import("../formatters").RawCallRequest | undefined)[];
};
send(options: SendOptions): SendTx;
getSendRequestPayload(options: SendOptions): {
method: string;
params: import("../formatters").RawTransactionRequest[];
format: (result: string) => string;
};
encodeABI(): Buffer;
private getTx;
}