/**
 * Delivery Store
 * 웹훅 전달 기록 저장 및 관리
 */
import { EventEmitter } from "events";
import type { WebhookDelivery } from "../types/webhook.types";
import type { DeliveryFilter, PaginationOptions, SearchResult, StorageConfig } from "./types";
export declare class DeliveryStore extends EventEmitter {
    private config;
    private deliveries;
    private indexByEndpoint;
    private indexByStatus;
    private indexByDate;
    private cleanupInterval;
    private defaultConfig;
    constructor(config?: Partial<StorageConfig>);
    /**
     * 전달 기록 저장
     */
    saveDelivery(delivery: WebhookDelivery): Promise<void>;
    /**
     * 전달 기록 조회
     */
    getDelivery(deliveryId: string): Promise<WebhookDelivery | null>;
    /**
     * 필터 조건에 맞는 전달 기록 검색
     */
    searchDeliveries(filter?: DeliveryFilter, pagination?: PaginationOptions): Promise<SearchResult<WebhookDelivery>>;
    /**
     * 엔드포인트별 전달 기록 조회
     */
    getDeliveriesByEndpoint(endpointId: string, limit?: number): Promise<WebhookDelivery[]>;
    /**
     * 실패한 전달 기록 조회
     */
    getFailedDeliveries(endpointId?: string, limit?: number): Promise<WebhookDelivery[]>;
    /**
     * 전달 통계 조회
     */
    getDeliveryStats(endpointId?: string, timeRange?: {
        start: Date;
        end: Date;
    }): Promise<{
        totalDeliveries: number;
        successfulDeliveries: number;
        failedDeliveries: number;
        pendingDeliveries: number;
        exhaustedDeliveries: number;
        averageLatency: number;
        successRate: number;
        errorBreakdown: Record<string, number>;
    }>;
    /**
     * 오래된 전달 기록 정리
     */
    cleanupOldDeliveries(): Promise<number>;
    /**
     * 저장소 통계 조회
     */
    getStorageStats(): {
        totalDeliveries: number;
        memoryUsage: number;
        indexSizes: {
            byEndpoint: number;
            byStatus: number;
            byDate: number;
        };
    };
    /**
     * 인덱스 초기화
     */
    private initializeIndexes;
    /**
     * 인덱스에 전달 기록 추가
     */
    private addToIndexes;
    /**
     * 인덱스에서 전달 기록 제거
     */
    private removeFromIndexes;
    /**
     * 날짜 범위로 전달 기록 ID 조회
     */
    private getDeliveryIdsByDateRange;
    /**
     * 필터 조건 매칭 확인
     */
    private matchesFilter;
    /**
     * 객체 필드 값 가져오기
     */
    private getFieldValue;
    /**
     * 메모리 사용량 추정
     */
    private estimateMemoryUsage;
    /**
     * 메모리 사용량 확인 및 정리
     */
    private checkMemoryUsage;
    /**
     * 정리 작업 시작
     */
    private startCleanupTask;
    /**
     * 파일에 전달 기록 추가
     */
    private appendToFile;
    /**
     * 파일에서 데이터 로드
     */
    private loadFromFile;
    /**
     * 파일에 데이터 저장
     */
    private saveToFile;
    /**
     * 전달 저장소 종료
     */
    shutdown(): Promise<void>;
}
