import { Hash } from '../commonTypes';
import { ITruffleContractFunction } from '../contractWrapperBase';
import { ArcTransactionResult } from '../iContractWrapperBase';
import { SchemeWrapperBase } from '../schemeWrapperBase';
import { TxEventContext, TxGeneratingFunctionOptions } from '../transactionService';
export declare abstract class BootstrappingWrapperBase extends SchemeWrapperBase {
    /**
     * Wrap code that creates a transaction in the given transaction event. This is a helper
     * just for the common case of generating a single transaction.
     * Rethrows exceptions that occur.
     *
     * @param functionName Should look like [contractName].[functionName]
     * @param options Options that will be passed in the event payload, and
     * potentially containing a txEventContext
     * @param generateTx Callback that will  the contract function
     * @param func The contract function
     * @param params The contract function parameters
     * @param legalContractHash: Hash
     * @param web3Params Optional web params, like `from`
     */
    protected wrapTransactionInvocationWithPayload(functionName: string, options: Partial<TxGeneratingFunctionOptions> & any, func: ITruffleContractFunction, params: Array<any>, legalContractHash: Hash, web3Params?: any): Promise<ArcTransactionResult>;
    /**
     * Invoke sendTransaction on the function.  Properly publish TxTracking events.
     * Rethrows exceptions that occur.
     *
     * If `ConfigService.get("estimateGas")` and gas was not already supplied,
     * then we estimate gas.
     *
     * @param eventContext The TxTracking context
     * @param functionName The contract function name (*just* the function name, on prepended contract name)
     * @param func The contract function
     * @param params The contract function parameters
     * @param legalContractHash: Hash
     * @param web3Params Optional web params, like `from`
     */
    protected sendTransactionWithPayload(eventContext: TxEventContext, functionName: string, func: ITruffleContractFunction, params: Array<any>, legalContractHash: Hash, web3Params?: any): Promise<Hash>;
    private _sendTransactionWithPayload;
}
