/**
 * Batch Webhook Dispatcher
 * 대량 웹훅 요청을 효율적으로 처리하는 배치 디스패처
 */
import { EventEmitter } from "../shared/event-emitter";
import type { WebhookBatch } from "../types/webhook.types";
import type { BatchConfig, DispatchJob } from "./types";
export declare class BatchDispatcher extends EventEmitter {
    private config;
    private pendingJobs;
    private activeBatches;
    private batchProcessor;
    private defaultConfig;
    constructor(config?: Partial<BatchConfig>);
    /**
     * 배치 작업 추가
     */
    addJob(job: DispatchJob): Promise<void>;
    /**
     * 특정 엔드포인트의 배치 처리
     */
    processBatchForEndpoint(endpointId: string): Promise<WebhookBatch | null>;
    /**
     * 모든 대기 중인 배치 처리
     */
    processAllBatches(): Promise<WebhookBatch[]>;
    /**
     * 배치 통계 조회
     */
    getBatchStats(): {
        pendingJobsCount: number;
        activeBatchesCount: number;
        endpointsWithPendingJobs: number;
        averageQueueSize: number;
    };
    /**
     * 특정 엔드포인트의 대기 중인 작업 수 조회
     */
    getPendingJobCount(endpointId: string): number;
    /**
     * 배치 처리기 시작
     */
    private startBatchProcessor;
    /**
     * 우선순위 기반 작업 삽입
     */
    private insertJobByPriority;
    /**
     * 배치 생성
     */
    private createBatch;
    /**
     * 배치 실행
     */
    private executeBatch;
    /**
     * 개별 작업 실행 (실제로는 WebhookDispatcher 사용)
     */
    private executeJob;
    /**
     * 실패한 작업들을 다시 큐에 추가
     */
    private requeueFailedJobs;
    /**
     * 배치 처리기 정지
     */
    shutdown(): Promise<void>;
}
