/** * Media Processing Webhook Adapter * * Example webhook adapter for external media processing services * (e.g., AWS MediaConvert, Cloudinary, Mux, etc.) * * This adapter handles webhooks from external transcoding/processing services * and emits appropriate storage events when processing completes. * * @example * ```ts * const adapter = new MediaProcessingWebhook({ * secret: process.env.MEDIA_PROCESSING_SECRET!, * signatureMethod: STORAGE_SIGNATURE_METHOD.HmacSha256, * signatureHeader: 'x-processing-signature', * logger, * }); * * webhookManager.registerAdapter(adapter); * ``` */ import { BaseWebhookAdapter } from '../base/BaseWebhookAdapter'; import type { StorageWebhookPayload, ProcessedStorageWebhookEvent, StorageMediaProcessingWebhookConfig, StorageMediaProcessingPayload } from '@plyaz/types/storage'; import { StorageMediaProcessingPayloadSchema } from '@plyaz/types/storage'; /** * Media Processing Webhook Adapter * * Handles webhooks from external media processing services */ export declare class MediaProcessingWebhook extends BaseWebhookAdapter { readonly providerName: string; readonly eventType: string; readonly schema: typeof StorageMediaProcessingPayloadSchema; constructor(config: StorageMediaProcessingWebhookConfig); /** * Process media processing webhook */ process(payload: StorageWebhookPayload): Promise; /** * Create transcode completed event */ private createCompletedEvent; /** * Create transcode failed event */ private createFailedEvent; /** * Create transcode progress event */ private createProgressEvent; /** * Create thumbnail generated event */ private createThumbnailEvent; /** * Parse timestamp from string or number */ private parseTimestamp; /** * Extract object key from event (required by BaseWebhookAdapter) */ protected extractObjectKey(event: StorageMediaProcessingPayload): string; /** * Extract bucket from event */ protected extractBucket(event: StorageMediaProcessingPayload): string | undefined; /** * Generate idempotency key from job ID * Override default implementation to use job ID for deduplication */ getIdempotencyKey(payload: StorageWebhookPayload): string; /** * Check if adapter should process this webhook * Override to handle multiple event types */ shouldProcess(payload: StorageWebhookPayload): boolean; }