/** * Event-driven human response webhooks * * This module provides webhook registration, delivery, and management * for real-time status updates on human requests. */ /** * Webhook event types for human requests */ export type WebhookEventType = 'request.created' | 'request.in_progress' | 'request.completed' | 'request.rejected' | 'request.escalated' | 'request.timeout' | 'request.cancelled'; /** * Webhook configuration */ export interface WebhookConfig { /** Unique webhook ID */ id?: string; /** Webhook endpoint URL */ url: string; /** Events to subscribe to */ events: WebhookEventType[]; /** Secret for signing payloads */ secret: string; /** Whether webhook is enabled */ enabled: boolean; /** Optional description */ description?: string; /** Optional metadata */ metadata?: Record; } /** * Webhook event payload */ export interface WebhookEvent> { /** Unique event ID */ id: string; /** Event type */ type: WebhookEventType; /** Event timestamp */ timestamp: Date; /** Event data */ data: TData; /** Optional metadata */ metadata?: Record; } /** * Result of webhook delivery attempt */ export interface DeliveryResult { /** Whether delivery was successful */ success: boolean; /** HTTP status code (if available) */ statusCode?: number; /** Error message (if failed) */ error?: string; /** Number of attempts made */ attempts?: number; /** Webhook ID */ webhookId?: string; /** Event ID */ eventId?: string; } /** * Retry options for webhook delivery */ export interface RetryOptions { /** Maximum number of retries */ maxRetries: number; /** Initial delay in milliseconds */ initialDelayMs: number; /** Maximum delay in milliseconds */ maxDelayMs: number; } /** * Dead letter queue item */ export interface DeadLetterItem { /** Webhook ID */ webhookId: string; /** The event that failed */ event: WebhookEvent; /** Error message */ error: string; /** Number of failed attempts */ attempts: number; /** When the item was added to DLQ */ addedAt: Date; } /** * Webhook registry options */ export interface WebhookRegistryOptions { /** Enable event batching */ batchingEnabled?: boolean; /** Batch window in milliseconds */ batchWindowMs?: number; /** Maximum batch size */ maxBatchSize?: number; /** Maximum dead letter queue size */ maxDeadLetterQueueSize?: number; } /** * Webhook registry interface */ export interface WebhookRegistry { /** Register a new webhook */ register(config: Omit & { id?: string; }): WebhookConfig & { id: string; }; /** Get a webhook by ID */ get(id: string): (WebhookConfig & { id: string; }) | undefined; /** List all webhooks */ list(): (WebhookConfig & { id: string; })[]; /** Unregister a webhook */ unregister(id: string): boolean; /** Enable a webhook */ enable(id: string): void; /** Disable a webhook */ disable(id: string): void; /** Get webhooks subscribed to an event */ getByEvent(eventType: WebhookEventType): (WebhookConfig & { id: string; })[]; /** Deliver an event to a webhook */ deliver(webhookId: string, event: WebhookEvent): Promise; /** Deliver with retry logic */ deliverWithRetry(webhookId: string, event: WebhookEvent, options: RetryOptions): Promise; /** Emit an event to all subscribed webhooks */ emit(eventType: WebhookEventType, data: Record): Promise; /** Flush batched events */ flush(): Promise; /** Get dead letter queue items */ getDeadLetterQueue(): DeadLetterItem[]; /** Retry dead letter queue items */ retryDeadLetterQueue(): Promise; /** Clear dead letter queue */ clearDeadLetterQueue(): void; } /** * Sign a payload using HMAC-SHA256 */ export declare function signPayload(payload: unknown, secret: string, timestamp: number): string; /** * Verify a webhook signature */ export declare function verifySignature(payload: unknown, secret: string, timestamp: number, signature: string): boolean; /** * Create a webhook registry */ export declare function createWebhookRegistry(options?: WebhookRegistryOptions): WebhookRegistry; /** * Get or create the default webhook registry */ export declare function getDefaultWebhookRegistry(): WebhookRegistry; //# sourceMappingURL=webhooks.d.ts.map