import { RenVMCrossChainTransaction, RenVMProvider, RenVMTransaction, RenVMTransactionWithStatus, TransactionInput } from "@renproject/provider";
import { ChainTransactionProgress, EventEmitterTyped, PromiEvent, TxSubmitter, TypedPackValue } from "@renproject/utils";
import { RenJSConfig } from "./utils/config";
export declare class RenVMTxSubmitter<Transaction extends RenVMTransaction> implements TxSubmitter<ChainTransactionProgress & {
    response?: RenVMTransactionWithStatus<Transaction>;
}> {
    chain: string;
    private provider;
    tx: TransactionInput<TypedPackValue>;
    private config;
    private providerNetwork;
    private signatureCallback?;
    eventEmitter: EventEmitterTyped<{
        progress: [
            ChainTransactionProgress & {
                response?: RenVMTransactionWithStatus<Transaction>;
            }
        ];
    }>;
    progress: ChainTransactionProgress & {
        response?: RenVMTransactionWithStatus<Transaction>;
    };
    private updateProgress;
    constructor(provider: RenVMProvider, tx: {
        hash?: string;
        version?: string;
        selector: string;
        in: TypedPackValue;
    }, signatureCallback?: (response: RenVMTransactionWithStatus<Transaction>) => Promise<void>, config?: RenJSConfig, providerNetwork?: string);
    export: () => TransactionInput<TypedPackValue>;
    query: () => Promise<ChainTransactionProgress & {
        response?: RenVMTransactionWithStatus<Transaction>;
    }>;
    submit: () => PromiEvent<ChainTransactionProgress & {
        response?: RenVMTransactionWithStatus<Transaction>;
    }, {
        progress: [
            ChainTransactionProgress & {
                response?: RenVMTransactionWithStatus<Transaction>;
            }
        ];
    }>;
    setTransaction: () => ChainTransactionProgress;
    wait: () => PromiEvent<ChainTransactionProgress & {
        response?: RenVMTransactionWithStatus<Transaction>;
    }, {
        progress: [
            ChainTransactionProgress & {
                response?: RenVMTransactionWithStatus<Transaction>;
            }
        ];
    }>;
    /**
     * Process a complete RenVM transaction, handling checking for a revert
     * reason and calling the signatureCallback.
     */
    private _handleDoneTransaction;
}
export declare class RenVMCrossChainTxSubmitter extends RenVMTxSubmitter<RenVMCrossChainTransaction> {
    constructor(provider: RenVMProvider, selector: string, params: RenVMCrossChainTransaction["in"], signatureCallback?: (response: RenVMTransactionWithStatus<RenVMCrossChainTransaction>) => Promise<void>, config?: RenJSConfig, providerNetwork?: string);
}
//# sourceMappingURL=renVMTxSubmitter.d.ts.map