import { PreapplyParams } from '@taquito/rpc';
import { DelegateParams, RevealParams, RegisterGlobalConstantParams, TransferParams, OriginateParams, UpdateConsensusKeyParams, TransferTicketParams, IncreasePaidStorageParams, BallotParams, ProposalsParams, DrainDelegateParams, ParamsWithKind, SmartRollupAddMessagesParams, SmartRollupOriginateParams, RegisterDelegateParams, ActivationParams } from '../operations/types';
import { PreparationProvider, PreparedOperation } from './interface';
import { Context } from '../context';
import { ContractMethod } from '../contract/contract-methods/contract-method-flat-param';
import { ContractMethodObject } from '../contract/contract-methods/contract-method-object-param';
import { ContractProvider } from '../contract/interface';
import { DefaultContractType, ContractStorageType } from '../contract';
import { Estimate } from '../estimate';
import { ForgeParams } from '@taquito/local-forging';
import { Provider } from '../provider';
/**
 * @description PrepareProvider is a utility class to output the prepared format of an operation
 */
export declare class PrepareProvider extends Provider implements PreparationProvider {
    #private;
    protected context: Context;
    constructor(context: Context);
    private getBlockHash;
    private getProtocolHash;
    private getHeadCounter;
    private adjustGasForBatchOperation;
    private getAccountLimits;
    private getFee;
    private getSource;
    private addRevealOperationIfNeeded;
    private getKeys;
    private convertIntoArray;
    private constructOpContents;
    /**
     *
     * @description Method to prepare an activation operation
     * @param operation RPCOperation object or RPCOperation array
     * @param source string or undefined source pkh
     * @returns a PreparedOperation object
     */
    activate({ pkh, secret }: ActivationParams): Promise<PreparedOperation>;
    /**
     *
     * @description Method to prepare a reveal operation
     * @param operation RPCOperation object or RPCOperation array
     * @param source string or undefined source pkh
     * @returns a PreparedOperation object
     */
    reveal({ fee, gasLimit, storageLimit }: RevealParams): Promise<PreparedOperation>;
    /**
     *
     * @description Method to prepare an origination operation
     * @param operation RPCOperation object or RPCOperation array
     * @param source string or undefined source pkh
     * @returns a PreparedOperation object
     */
    originate<TContract extends DefaultContractType = DefaultContractType>({ fee, storageLimit, gasLimit, ...rest }: OriginateParams<ContractStorageType<TContract>>, source?: string): Promise<PreparedOperation>;
    /**
     *
     * @description Method to prepare a transaction operation
     * @param operation RPCOperation object or RPCOperation array
     * @param source string or undefined source pkh
     * @returns a PreparedOperation object
     */
    transaction({ fee, storageLimit, gasLimit, ...rest }: TransferParams): Promise<PreparedOperation>;
    /**
     *
     * @description Method to prepare a delegation operation
     * @param operation RPCOperation object or RPCOperation array
     * @param source string or undefined source pkh
     * @returns a PreparedOperation object
     */
    delegation({ fee, storageLimit, gasLimit, ...rest }: DelegateParams): Promise<PreparedOperation>;
    /**
     *
     * @description Method to prepare a register delegate operation
     * @param operation RPCOperation object or RPCOperation array
     * @param source string or undefined source pkh
     * @returns a PreparedOperation object
     */
    registerDelegate({ fee, storageLimit, gasLimit }: RegisterDelegateParams, source?: string): Promise<PreparedOperation>;
    /**
     *
     * @description Method to prepare a register_global_constant operation
     * @param operation RPCOperation object or RPCOperation array
     * @param source string or undefined source pkh
     * @returns a PreparedOperation object
     */
    registerGlobalConstant({ fee, storageLimit, gasLimit, ...rest }: RegisterGlobalConstantParams): Promise<PreparedOperation>;
    /**
     *
     * @description Method to prepare an update_consensus_key operation
     * @param operation RPCOperation object or RPCOperation array
     * @param source string or undefined source pkh
     * @returns a PreparedOperation object
     */
    updateConsensusKey({ fee, storageLimit, gasLimit, ...rest }: UpdateConsensusKeyParams, source?: string): Promise<PreparedOperation>;
    /**
     *
     * @description Method to prepare an increase_paid_storage operation
     * @param operation RPCOperation object or RPCOperation array
     * @param source string or undefined source pkh
     * @returns a PreparedOperation object
     */
    increasePaidStorage({ fee, storageLimit, gasLimit, ...rest }: IncreasePaidStorageParams): Promise<PreparedOperation>;
    /**
     *
     * @description Method to prepare a ballot operation
     * @param operation RPCOperation object or RPCOperation array
     * @returns a PreparedOperation object
     */
    ballot(params: BallotParams): Promise<PreparedOperation>;
    /**
     *
     * @description Method to prepare a proposals operation
     * @param operation RPCOperation object or RPCOperation array
     * @returns a PreparedOperation object
     */
    proposals(params: ProposalsParams): Promise<PreparedOperation>;
    /**
     *
     * @description Method to prepare a drain_delegate operation
     * @param operation RPCOperation object or RPCOperation array
     * @returns a PreparedOperation object
     */
    drainDelegate(params: DrainDelegateParams, source?: string): Promise<PreparedOperation>;
    /**
     *
     * @description Method to prepare a transfer_ticket operation
     * @param operation RPCOperation object or RPCOperation array
     * @param source string or undefined source pkh
     * @returns a PreparedOperation object
     */
    transferTicket({ fee, storageLimit, gasLimit, ...rest }: TransferTicketParams): Promise<PreparedOperation>;
    /**
     *
     * @description Method to prepare a smart_rollup_add_messages operation
     * @param operation RPCOperation object or RPCOperation array
     * @param source string or undefined source pkh
     * @returns a PreparedOperation object
     */
    smartRollupAddMessages({ fee, storageLimit, gasLimit, ...rest }: SmartRollupAddMessagesParams): Promise<PreparedOperation>;
    /**
     *
     * @description Method to prepare a smart_rollup_originate operation
     * @param operation RPCOperation object or RPCOperation array
     * @returns a PreparedOperation object
     */
    smartRollupOriginate({ fee, storageLimit, gasLimit, ...rest }: SmartRollupOriginateParams): Promise<PreparedOperation>;
    /**
     *
     * @description Method to prepare a batch operation
     * @param operation RPCOperation object or RPCOperation array
     * @returns a PreparedOperation object
     */
    batch(batchParams: ParamsWithKind[], estimates?: Estimate[]): Promise<PreparedOperation>;
    /**
     *
     * @description Method to prepare a batch operation
     * @param operation RPCOperation object or RPCOperation array
     * @returns a PreparedOperation object
     */
    contractCall(contractMethod: ContractMethod<ContractProvider> | ContractMethodObject<ContractProvider>): Promise<PreparedOperation>;
    /**
     *
     * @description Method to convert a PreparedOperation to the params needed for the preapplyOperation method
     * @param prepared a Prepared Operation
     * @returns a PreapplyParams object
     */
    toPreapply(prepared: PreparedOperation): Promise<PreapplyParams>;
    /**
     *
     * @description Method to convert a PreparedOperation to the params needed for forging
     * @param param a Prepared Operation
     * @returns a ForgeParams object
     */
    toForge({ opOb: { contents, branch } }: PreparedOperation): ForgeParams;
}
