import { IBarracudaClientConsumer, IBarracudaClient } from "../IBarracudaClient";
import { BarracudaRecoveryPolicy } from "./BarracudaRecoveryPolicy";
export interface RecoveryStats {
    recoveryCounter: number;
    lastRecoveryStatus: RecoveryProgress;
}
export declare type OnRecoveryCompleteCallBack = (recoveryStats: RecoveryStats, barracudaClient: IBarracudaClient) => void;
/**
 * Return a clone of the supplied BCjs instance with recovery enabled.
 * Please note all constructor BarracudaConnectionProps is utilized to clone properties across BCjs instances.
 * @param {IBarracudaClientConsumer} originalBC
 * @param {BarracudaRecoveryPolicy} recoveryPolicy
 * @param {number} overrideRecoveryPeriod, The default is 5000 ms to allow a stable connection to be established.
 * @param {OnRecoveryCompleteCallBack} onRecoveryComplete
 * @returns {IBarracudaClientConsumer}
 */
export declare function withRecoveryPolicy(originalBC: IBarracudaClientConsumer, recoveryPolicy: BarracudaRecoveryPolicy, overrideRecoveryPeriod?: number, onRecoveryComplete?: OnRecoveryCompleteCallBack): IBarracudaClientConsumer;
export declare enum RecoveryProgress {
    none = 0,
    inProgress = 1,
    partialRecoveryFailure = 2,
    completedRecovery = 3,
    failedConnectedAckVerification = 4
}
//# sourceMappingURL=recoveryPolicy.d.ts.map