import { EventEmitter } from 'eventemitter3';
import { UserInteraction, AnalyticsEvent } from '../types/common.js';

/**
 * Events emitted by BehaviorAnalytics
 */
export interface BehaviorAnalyticsEvents {
    'pattern-detected': (pattern: BehaviorPattern) => void;
    'anomaly-detected': (anomaly: BehaviorAnomaly) => void;
    'insight-generated': (insight: BehaviorInsight) => void;
    'data-collected': (event: AnalyticsEvent) => void;
    'error': (error: Error) => void;
}
/**
 * Configuration for behavior analytics
 */
export interface BehaviorAnalyticsConfig {
    sessionTimeout?: number;
    maxSessionEvents?: number;
    enableRealTimeAnalysis?: boolean;
    patternDetectionThreshold?: number;
    anomalyDetectionSensitivity?: number;
    privacyMode?: boolean;
    bufferSize?: number;
}
/**
 * Detected behavior pattern
 */
export interface BehaviorPattern {
    id: string;
    type: 'navigation' | 'interaction' | 'preference' | 'temporal';
    pattern: string;
    confidence: number;
    frequency: number;
    contexts: string[];
    impact: 'positive' | 'negative' | 'neutral';
    recommendations: string[];
}
/**
 * Behavior anomaly detection
 */
export interface BehaviorAnomaly {
    id: string;
    type: 'sudden_change' | 'unusual_pattern' | 'performance_degradation' | 'accessibility_issue';
    description: string;
    severity: 'low' | 'medium' | 'high' | 'critical';
    affectedMetrics: string[];
    timestamp: number;
    context: Record<string, unknown>;
}
/**
 * Generated behavioral insight
 */
export interface BehaviorInsight {
    id: string;
    category: 'usability' | 'accessibility' | 'performance' | 'engagement';
    title: string;
    description: string;
    evidence: string[];
    actionItems: string[];
    priority: number;
    confidence: number;
}
/**
 * Interaction metrics
 */
interface InteractionMetrics {
    totalInteractions: number;
    interactionRate: number;
    avgTimeBetweenInteractions: number;
    dominantInteractionTypes: string[];
    errorRate: number;
    completionRate: number;
}
/**
 * Engagement metrics
 */
interface EngagementMetrics {
    sessionDuration: number;
    bounceRate: number;
    pageViews: number;
    scrollDepth: number;
    clickThroughRate: number;
    taskCompletionRate: number;
}
/**
 * BehaviorAnalytics tracks and analyzes user behavior patterns for accessibility insights
 */
export declare class BehaviorAnalytics extends EventEmitter<BehaviorAnalyticsEvents> {
    private config;
    private currentSession;
    private sessions;
    private eventBuffer;
    private patternCache;
    private anomalyBaselines;
    private sessionTimeout;
    constructor(config?: BehaviorAnalyticsConfig);
    /**
     * Start a new analytics session
     */
    startSession(sessionId?: string): string;
    /**
     * End current session
     */
    endSession(): void;
    /**
     * Track user interaction
     */
    trackInteraction(interaction: UserInteraction): void;
    /**
     * Track custom analytics event
     */
    trackEvent(event: Partial<AnalyticsEvent>): void;
    /**
     * Track preference change
     */
    trackPreferenceChange(preferences: Record<string, unknown>, context?: Record<string, unknown>): void;
    /**
     * Get interaction metrics for current session
     */
    getSessionMetrics(): InteractionMetrics | null;
    /**
     * Get engagement metrics for current session
     */
    getEngagementMetrics(): EngagementMetrics | null;
    /**
     * Analyze behavior patterns across sessions
     */
    analyzeBehaviorPatterns(): BehaviorPattern[];
    /**
     * Generate behavioral insights
     */
    generateInsights(): BehaviorInsight[];
    /**
     * Export analytics data
     */
    exportData(options?: {
        format?: 'json' | 'csv';
        includeInteractions?: boolean;
    }): string;
    /**
     * Clear all analytics data
     */
    clearData(): void;
    /**
     * Clean up and stop analytics
     */
    destroy(): void;
    private generateSessionId;
    private getViewportInfo;
    private resetSessionTimeout;
    private clearSessionTimeout;
    private calculateInteractionMetrics;
    private calculateEngagementMetrics;
    private detectRealTimePatterns;
    private analyzeSession;
    private detectNavigationPatterns;
    private detectInteractionPatterns;
    private detectTemporalPatterns;
    private generateAccessibilityInsights;
    private generateUsabilityInsights;
    private generatePerformanceInsights;
    private generateEngagementInsights;
    private generateSummaryStatistics;
    private convertToCSV;
}
export {};
//# sourceMappingURL=behavior-analytics.d.ts.map