/**
 * 重试模块
 * @date 2022-08
 * @author 何华东
 */
/**
  * 重试函数, 当重试失败后会抛出异常
  *
  * ```ts
  * import { logger } from "mslib";
  * import { retry } from "refs/nslib";
  *
  * async function exec(){
  *    try{
  *       let res = await retry(() => {
  *          //todo...
  *       }, 1, 1000 * 60);
  *    } catch(error){
  *        logger.error(error);
  *    }
  * }
  *
  * ```
  * @param func 可重试的目标方法
  * @param retryMaxCount 重试次数
  * @param retryDelayMs 每次重试延迟毫秒数
  */
export declare function retry(func: () => Promise<any> | any, retryMaxCount: number, retryDelayMs: number, config?: {
    /**
     * 异常处理
     */
    errorHandler?: (error: any, retryCountLeft: number) => void;
    /**
     * 重试条件, 如果目标方法未出现异常，可以根据返回值判断是否重试, `true`: 是，否则不重试
     */
    retryCondition?: (res: any) => boolean;
}): Promise<any>;
/**
 * 重试器装饰器, 重试失败后返回空, 不会抛出异常
 *
 * @param methodDesc 方法描述, 仅为记录日志
 * @param retryMaxCount 重试次数
 * @param retryDelayMs 每次重试延迟毫秒数
 */
export declare function Retryable(methodDesc?: string, retryMaxCount?: number, retryDelayMs?: number, config?: {
    /**
     * 异常处理
     */
    errorHandler?: (error: any, retryCountLeft: number) => void;
    /**
     * 重试条件, 如果目标方法未出现异常，可以根据返回值判断是否重试, `true`: 是，否则不重试
     */
    retryCondition?: (res: any) => boolean;
}): MethodDecorator;
