import { GeofenceEvent, ActivityRecognitionResult, HealthAlert } from './index'; export interface WebhookConfig { id: string; name: string; url: string; method: 'POST' | 'PUT' | 'PATCH'; headers: Record; events: WebhookEventType[]; isActive: boolean; retryConfig: { maxRetries: number; backoffStrategy: 'linear' | 'exponential'; baseDelay: number; maxDelay: number; }; filterConfig?: { regions?: string[]; activities?: string[]; severities?: string[]; conditions?: Record; }; authConfig?: { type: 'none' | 'bearer' | 'api_key' | 'basic' | 'custom'; credentials: Record; }; timeout: number; rateLimit?: { maxRequests: number; windowMs: number; }; metadata?: Record; } export type WebhookEventType = 'geofence.enter' | 'geofence.exit' | 'activity.change' | 'health.alert' | 'system.status' | 'location.update'; export interface WebhookPayload { event: WebhookEventType; timestamp: number; webhookId: string; data: any; metadata?: Record; signature?: string; } export interface WebhookDeliveryAttempt { id: string; webhookId: string; payload: WebhookPayload; attempt: number; timestamp: number; status: 'pending' | 'success' | 'failed' | 'retrying'; responseStatus?: number; responseBody?: string; error?: string; nextRetryAt?: number; } export interface WebhookStats { webhookId: string; totalAttempts: number; successfulDeliveries: number; failedDeliveries: number; averageResponseTime: number; lastDeliveryAt?: number; lastSuccessAt?: number; lastFailureAt?: number; errorRate: number; } export declare class WebhookManager { private webhooks; private deliveryQueue; private stats; private rateLimitTracking; private isProcessing; private processingInterval?; private secretKey; constructor(secretKey?: string); addWebhook(config: Omit): string; removeWebhook(webhookId: string): boolean; updateWebhook(webhookId: string, updates: Partial): boolean; getWebhook(webhookId: string): WebhookConfig | undefined; getAllWebhooks(): WebhookConfig[]; getActiveWebhooks(): WebhookConfig[]; triggerGeofenceEvent(event: GeofenceEvent): Promise; triggerActivityEvent(event: ActivityRecognitionResult): Promise; triggerHealthAlert(alert: HealthAlert): Promise; triggerLocationUpdate(location: any): Promise; triggerSystemStatus(status: any): Promise; private triggerWebhooks; private getWebhooksForEvent; private applyFilters; private queueDelivery; private processDeliveryQueue; private attemptDelivery; private makeHttpRequest; private addAuthHeaders; private checkRateLimit; private initializeStats; private updateStats; getWebhookStats(webhookId: string): WebhookStats | undefined; getAllWebhookStats(): WebhookStats[]; private calculateNextRetryTime; private generateSignature; verifySignature(payload: string, signature: string): boolean; private hmacSha256; private startProcessing; stopProcessing(): void; retryFailedDeliveries(webhookId?: string): Promise; getPendingDeliveries(webhookId?: string): WebhookDeliveryAttempt[]; getDeliveryHistory(webhookId: string, limit?: number): WebhookDeliveryAttempt[]; testWebhook(webhookId: string): Promise<{ success: boolean; responseTime: number; error?: string; }>; private generateId; private generateSecretKey; cleanup(): void; }