import type Wallet from 'ethereumjs-wallet';
export interface ContractMethod {
    arguments: string[];
    estimateGas: (config: {
        from: Wallet | string | undefined;
        gas: number | undefined;
    }) => Promise<number>;
    _method: {
        name: string;
        inputs: Array<{
            type: string;
        }>;
    };
    encodeABI: () => string;
    send: <Tx>(config: {
        from: Wallet | string | undefined;
        gas?: number;
        gasPrice?: number;
    }) => Tx;
}
interface EstimateGasConfig {
    method: ContractMethod;
    from?: Wallet | string;
    gasLimitMaximum: number;
    multiplier?: number;
    shouldThrowIfGasEstimationFails?: boolean;
}
/**
 * Returns estimated gas use for a txn for a contract method
 */
export declare const estimateGas: ({ method, from, gasLimitMaximum, multiplier, shouldThrowIfGasEstimationFails }: EstimateGasConfig) => Promise<number>;
export {};
