/** * Storage Webhook Manager * * Orchestrates storage webhook processing with support for: * - Multiple adapters per provider * - Middleware pipeline (pre/post processing) * - Idempotency handling * - Sequential execution with priority * - Error handling and recovery * - Integration with storage events */ import type { EventManager } from '../core/EventManager'; import type { StorageWebhookAdapter, StorageWebhookPayload, StorageWebhookProcessingResult, StorageWebhookMiddleware, StorageWebhookManagerConfig, STORAGE_WEBHOOK_EVENT_TYPE } from '@plyaz/types/storage'; import type { LoggerInterface } from '@plyaz/types'; /** * Storage Webhook Manager * * Manages webhook adapters and processes incoming storage webhooks with middleware support */ export declare class WebhookManager { private readonly eventManager; private readonly logger; private readonly adapters; private readonly middlewares; private readonly idempotencyStore; private readonly timeout; private readonly enabled; private readonly idempotencyTTL; private readonly retryConfig; constructor(eventManager: EventManager, logger?: LoggerInterface | undefined, config?: StorageWebhookManagerConfig); /** * Initialize idempotency store from config */ private initializeIdempotencyStore; /** * Initialize retry configuration from config */ private initializeRetryConfig; /** * Log initialization information */ private logInitialization; /** * Register webhook adapter * * @param adapter - Webhook adapter instance */ registerAdapter(adapter: StorageWebhookAdapter): void; /** * Register multiple adapters * * @param adapters - Array of webhook adapters */ registerAdapters(adapters: StorageWebhookAdapter[]): void; /** * Register middleware * * @param middleware - Webhook middleware */ registerMiddleware(middleware: StorageWebhookMiddleware): void; /** * Handle incoming webhook * * @param providerName - Provider name (aws-s3, r2, cloudinary, etc.) * @param eventType - Storage event type * @param payload - Raw webhook payload * @returns Processing result */ handleWebhook(providerName: string, eventType: STORAGE_WEBHOOK_EVENT_TYPE | string, payload: StorageWebhookPayload): Promise; /** * Process webhook with a specific adapter */ private processWithAdapter; /** * Process webhook with retry logic */ private processWithRetry; /** * Execute webhook processing (single attempt) */ private executeWebhookProcessing; /** * Emit processed webhook event via EventManager */ private emitEvent; /** * Map webhook event type to internal storage event name */ private mapEventType; /** * Emit audit event for webhook processing * Tracks all webhook processing for compliance and debugging */ private emitAuditEvent; /** * Emit DLQ (Dead Letter Queue) event for permanently failed webhooks * Enables external systems to handle failed webhooks (alerting, persistence, retry) */ private emitDLQEvent; /** * Create timeout promise */ private createTimeout; /** * Get adapters for provider/eventType * Returns all webhook adapters sorted by priority */ getAdapters(providerName: string, eventType: string): StorageWebhookAdapter[]; /** * Get adapter key */ private getAdapterKey; /** * Get all registered adapters */ getAllAdapters(): StorageWebhookAdapter[]; /** * Get adapter by provider and eventType */ getAdapter(providerName: string, eventType: string): StorageWebhookAdapter | undefined; /** * Get idempotency store statistics * Only available for in-memory adapter */ getIdempotencyStats(): { size: number; maxKeys: number; oldestKey?: { key: string; age: number; }; } | null; /** * Clear idempotency store (for testing) */ clearIdempotency(): Promise; /** * Stop the webhook manager */ stop(): void; }