import { CSElementPlugin } from '../types/plugin-interfaces'; import { CSElement } from '../core/CSElement'; export interface PluginConfig { enabled?: boolean; [key: string]: any; } export interface PluginContext { element?: CSElement; operation?: string; args?: any[]; metadata?: Record; timestamp?: Date; userId?: string; sessionId?: string; } export interface PluginResult { success: boolean; data?: any; error?: string; metadata?: Record; } export declare enum EventType { CREATE = "create", READ = "read", UPDATE = "update", DELETE = "delete", QUERY = "query", SERIALIZE = "serialize", CUSTOM = "custom" } export declare enum MetricType { COUNTER = "counter", GAUGE = "gauge", HISTOGRAM = "histogram", TIMER = "timer", RATE = "rate" } export declare enum AggregationType { SUM = "sum", AVERAGE = "average", MIN = "min", MAX = "max", COUNT = "count", PERCENTILE = "percentile" } export declare enum ReportFormat { JSON = "json", CSV = "csv", HTML = "html", PDF = "pdf", EXCEL = "excel" } export interface AnalyticsEvent { id: string; type: EventType; elementId?: string; userId?: string; sessionId?: string; timestamp: Date; duration?: number; success: boolean; error?: string; metadata: Record; tags: string[]; category?: string; source?: string; userAgent?: string; ipAddress?: string; } export interface Metric { id: string; name: string; type: MetricType; value: number; timestamp: Date; tags: Record; description?: string; unit?: string; } export interface Dimension { name: string; value: string; type: 'string' | 'number' | 'boolean' | 'date'; } export interface AnalyticsQuery { eventTypes?: EventType[]; dateRange?: { start: Date; end: Date; }; filters?: Record; groupBy?: string[]; aggregation?: AggregationType; limit?: number; offset?: number; sortBy?: string; sortOrder?: 'asc' | 'desc'; } export interface AnalyticsReport { id: string; name: string; description?: string; query: AnalyticsQuery; format: ReportFormat; createdAt: Date; updatedAt: Date; data: any[]; summary: Record; metadata: Record; } export interface Dashboard { id: string; name: string; description?: string; widgets: Widget[]; layout: DashboardLayout; filters: Record; refreshInterval?: number; isPublic: boolean; createdAt: Date; updatedAt: Date; } export interface Widget { id: string; type: 'chart' | 'table' | 'metric' | 'text'; title: string; query: AnalyticsQuery; config: Record; position: { x: number; y: number; width: number; height: number; }; } export interface DashboardLayout { columns: number; rows: number; gap: number; responsive: boolean; } export interface UserBehavior { userId: string; sessionId: string; startTime: Date; endTime?: Date; events: AnalyticsEvent[]; elementsAccessed: string[]; operationsPerformed: Record; timeSpentByElement: Record; errorCount: number; successRate: number; } export interface PerformanceMetrics { averageResponseTime: number; throughput: number; errorRate: number; memoryUsage: number; cpuUsage: number; operationsPerSecond: Record; slowestOperations: Array<{ operation: string; duration: number; timestamp: Date; }>; peakUsageTime: Date; } export interface AnalyticsPluginConfig extends PluginConfig { enableRealTimeTracking: boolean; enableUserBehaviorTracking: boolean; enablePerformanceTracking: boolean; enableCustomEvents: boolean; samplingRate: number; maxEventsInMemory: number; retentionPeriod: number; batchSize: number; flushInterval: number; exportFormats: ReportFormat[]; anonymizeUserData: boolean; excludeEvents: EventType[]; includeMetadata: boolean; enableGeolocation: boolean; } export interface AnalyticsStats { totalEvents: number; eventsToday: number; eventsThisWeek: number; eventsThisMonth: number; eventsByType: Record; uniqueUsers: number; uniqueSessions: number; averageSessionDuration: number; topElements: Array<{ elementId: string; accessCount: number; }>; topOperations: Array<{ operation: EventType; count: number; }>; errorRate: number; lastFlush?: Date; memoryUsage: number; } export declare class AnalyticsPlugin implements CSElementPlugin { readonly name = "AnalyticsPlugin"; readonly version = "1.0.0"; readonly description = "\u041F\u043B\u0430\u0433\u0438\u043D \u0434\u043B\u044F \u0441\u0431\u043E\u0440\u0430 \u0430\u043D\u0430\u043B\u0438\u0442\u0438\u043A\u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u0438 \u043E\u0442\u0441\u043B\u0435\u0436\u0438\u0432\u0430\u043D\u0438\u044F \u0441\u043E\u0431\u044B\u0442\u0438\u0439"; private config; private events; private metrics; private reports; private dashboards; private userBehaviors; private performanceMetrics; private stats; private flushTimer?; private sessionStartTimes; constructor(config?: Partial); install(CSElementClass: typeof CSElement): void; initialize(): Promise; destroy(): Promise; getConfig(): AnalyticsPluginConfig; updateConfig(newConfig: Partial): void; beforeCreate(element: CSElement, context: PluginContext): Promise; afterCreate(element: CSElement, context: PluginContext): Promise; beforeRead(element: CSElement, context: PluginContext): Promise; beforeUpdate(element: CSElement, context: PluginContext): Promise; beforeDelete(element: CSElement, context: PluginContext): Promise; onError(error: Error, context: PluginContext): Promise; trackEvent(eventData: Partial, context: PluginContext): Promise; trackCustomEvent(name: string, data: Record, context: PluginContext): Promise; recordMetric(name: string, value: number, type?: MetricType, tags?: Record): void; query(query: AnalyticsQuery): Promise; generateReport(name: string, query: AnalyticsQuery, format?: ReportFormat): Promise; exportReport(reportId: string, format?: ReportFormat): Promise; createDashboard(dashboardData: Omit): Dashboard; getDashboard(id: string): Dashboard | undefined; updateDashboard(id: string, updates: Partial): boolean; deleteDashboard(id: string): boolean; getUserBehavior(userId: string): UserBehavior | undefined; analyzeUserBehavior(userId: string): Promise>; getPerformanceMetrics(): PerformanceMetrics; generatePerformanceReport(): Promise>; private withPerformanceTracking; private recordPerformanceMetric; private updateUserBehavior; private shouldSampleEvent; private updateRealTimeMetrics; private flushEvents; private cleanupOldData; private updateStats; private calculateSummary; private calculateTopElements; private calculateTopOperations; private getMostAccessedElements; private calculateAverageTimePerElement; private findPeakActivityTime; private calculateEventDistribution; private convertToCSV; private convertToHTML; private getNestedValue; private groupBy; private estimateMemoryUsage; private hashUserId; private hashIpAddress; private generateId; getStats(): AnalyticsStats; getAllEvents(): AnalyticsEvent[]; getAllMetrics(): Metric[]; getAllReports(): AnalyticsReport[]; getAllDashboards(): Dashboard[]; getAllUserBehaviors(): UserBehavior[]; } //# sourceMappingURL=AnalyticsPlugin.d.ts.map