import type { WebhookConfig } from "../types/webhook.types";
export interface RetryConfig {
    maxRetries: number;
    baseDelayMs: number;
    maxDelayMs: number;
    backoffMultiplier: number;
    jitter: boolean;
}
export interface RetryAttempt {
    attemptNumber: number;
    timestamp: Date;
    success: boolean;
    error?: string;
    nextRetryAt?: Date;
}
/**
 * Webhook 재시도 관리자
 * 지수 백오프와 지터를 사용한 스마트 재시도 로직
 */
export declare class RetryManager {
    private config;
    constructor(webhookConfig: WebhookConfig);
    /**
     * 다음 재시도 시간 계산
     */
    calculateNextRetry(attemptNumber: number): Date;
    /**
     * 재시도 가능 여부 확인
     */
    shouldRetry(attemptNumber: number, error?: Error): boolean;
    /**
     * 재시도 가능한 에러인지 판단
     */
    private isRetryableError;
    /**
     * HTTP 상태 코드별 재시도 정책
     */
    shouldRetryStatus(statusCode: number): boolean;
    /**
     * 재시도 통계 계산
     */
    calculateRetryStats(attempts: RetryAttempt[]): {
        totalAttempts: number;
        successfulAttempts: number;
        failedAttempts: number;
        averageDelayMs: number;
        totalTimeMs: number;
    };
    /**
     * 재시도 설정 업데이트
     */
    updateConfig(config: Partial<RetryConfig>): void;
    /**
     * 현재 재시도 설정 반환
     */
    getConfig(): RetryConfig;
    /**
     * 백오프 지연 시간 계산 (테스트용)
     */
    getBackoffDelay(attemptNumber: number): number;
}
