import type { WebhookConfig, WebhookDelivery, WebhookEndpoint, WebhookEvent, WebhookStats, WebhookTestResult } from "../types/webhook.types";
import { WebhookEventType } from "../types/webhook.types";
import { type HttpClient } from "./webhook.dispatcher";
export declare class WebhookService {
    private config;
    private dispatcher;
    private registry;
    private securityManager;
    private retryManager;
    private eventQueue;
    private batchProcessor;
    constructor(config: WebhookConfig, httpClient?: HttpClient);
    /**
     * 웹훅 엔드포인트 등록
     */
    registerEndpoint(endpoint: Omit<WebhookEndpoint, "id" | "createdAt" | "updatedAt" | "status">): Promise<WebhookEndpoint>;
    /**
     * 웹훅 엔드포인트 수정
     */
    updateEndpoint(endpointId: string, updates: Partial<WebhookEndpoint>): Promise<WebhookEndpoint>;
    /**
     * 웹훅 엔드포인트 삭제
     */
    deleteEndpoint(endpointId: string): Promise<void>;
    /**
     * 웹훅 엔드포인트 조회
     */
    getEndpoint(endpointId: string): Promise<WebhookEndpoint | null>;
    /**
     * 모든 웹훅 엔드포인트 조회
     */
    listEndpoints(): Promise<WebhookEndpoint[]>;
    /**
     * 이벤트 발생 (비동기 처리)
     */
    emit(event: WebhookEvent): Promise<void>;
    /**
     * 이벤트 발생 (동기 처리)
     */
    emitSync(event: WebhookEvent): Promise<WebhookDelivery[]>;
    /**
     * 웹훅 엔드포인트 테스트
     */
    testEndpoint(endpointId: string): Promise<WebhookTestResult>;
    /**
     * 웹훅 통계 조회
     */
    getStats(endpointId: string, timeRange: {
        start: Date;
        end: Date;
    }): Promise<WebhookStats>;
    /**
     * 실패한 웹훅 재시도
     */
    retryFailed(endpointId?: string, eventType?: WebhookEventType): Promise<number>;
    /**
     * 웹훅 일시 중단
     */
    pauseEndpoint(endpointId: string): Promise<void>;
    /**
     * 웹훅 재개
     */
    resumeEndpoint(endpointId: string): Promise<void>;
    /**
     * 웹훅 전달 내역 조회
     */
    getDeliveries(endpointId?: string, eventType?: WebhookEventType, status?: string, limit?: number): Promise<WebhookDelivery[]>;
    private processBatch;
    private getMatchingEndpoints;
    private validateEvent;
    private validateEndpointUrl;
    private generateEndpointId;
    private startBatchProcessor;
    /**
     * 서비스 종료 시 정리
     */
    shutdown(): Promise<void>;
}
