/** * Error Tracking and Reporting * * Integrates with error tracking services (Sentry, Bugsnag, etc.) */ import type { ErrorInfo } from './error-boundary.js'; export interface ErrorReport { error: Error; errorInfo?: ErrorInfo; context?: ErrorContext; timestamp: string; id: string; fingerprint?: string; level: ErrorLevel; tags?: Record; user?: UserContext; extra?: Record; } export interface ErrorContext { [key: string]: unknown; url?: string; userAgent?: string; viewport?: { width: number; height: number; }; component?: string; action?: string; route?: string; version?: string; environment?: string; } export interface UserContext { id?: string; email?: string; username?: string; ip?: string; } export type ErrorLevel = 'fatal' | 'error' | 'warning' | 'info' | 'debug'; export interface ErrorReporter { captureError(error: Error, context?: Partial): void; captureMessage(message: string, level?: ErrorLevel, context?: Partial): void; setUser(user: UserContext | null): void; setContext(context: Partial): void; setTag(key: string, value: string): void; addBreadcrumb(breadcrumb: Breadcrumb): void; } export interface Breadcrumb { timestamp: string; level: ErrorLevel; category?: string; message: string; data?: Record; } /** * Error reporting system */ export declare class ErrorReportingSystem implements ErrorReporter { private reporters; private globalContext; private globalTags; private user; private breadcrumbs; private maxBreadcrumbs; private enabled; private errorFilters; /** * Add error reporter */ addReporter(reporter: ErrorReporter): void; /** * Remove error reporter */ removeReporter(reporter: ErrorReporter): void; /** * Capture error */ captureError(error: Error, context?: Partial): void; /** * Capture message */ captureMessage(message: string, level?: ErrorLevel, context?: Partial): void; /** * Set user context */ setUser(user: UserContext | null): void; /** * Set global context */ setContext(context: Partial): void; /** * Set global tag */ setTag(key: string, value: string): void; /** * Add breadcrumb */ addBreadcrumb(breadcrumb: Breadcrumb): void; /** * Add error filter */ addFilter(filter: (error: Error) => boolean): void; /** * Check if error should be reported */ private shouldReportError; /** * Generate error fingerprint for grouping */ private generateFingerprint; /** * Determine error level */ private determineLevel; /** * Enable/disable error reporting */ setEnabled(enabled: boolean): void; /** * Clear breadcrumbs */ clearBreadcrumbs(): void; /** * Get breadcrumbs */ getBreadcrumbs(): Breadcrumb[]; } /** * Global error reporting instance */ export declare const errorReporter: ErrorReportingSystem; /** * Console error reporter (for development) */ export declare class ConsoleErrorReporter implements ErrorReporter { captureError(error: Error, context?: Partial): void; captureMessage(message: string, level?: ErrorLevel, context?: Partial): void; setUser(user: UserContext | null): void; setContext(context: Partial): void; setTag(key: string, value: string): void; addBreadcrumb(breadcrumb: Breadcrumb): void; } /** * Logging-only error reporter (development / no external service) * * Logs errors via the internal logger. Replace with a real Sentry or * Datadog integration when an external error-tracking service is needed. */ export declare class LoggingErrorReporter implements ErrorReporter { captureError(error: Error, context?: Partial): void; captureMessage(message: string, level?: ErrorLevel, context?: Partial): void; setUser(_user: UserContext | null): void; setContext(_context: Partial): void; setTag(_key: string, _value: string): void; addBreadcrumb(_breadcrumb: Breadcrumb): void; } /** * HTTP error reporter (send to custom endpoint) */ export declare class HTTPErrorReporter implements ErrorReporter { private endpoint; constructor(endpoint: string); captureError(error: Error, context?: Partial): Promise; captureMessage(message: string, level?: ErrorLevel, context?: Partial): Promise; setUser(_user: UserContext | null): void; setContext(_context: Partial): void; setTag(_key: string, _value: string): void; addBreadcrumb(_breadcrumb: Breadcrumb): void; } /** * Initialize error reporting */ export declare function initializeErrorReporting(config: { dsn?: string; environment?: string; release?: string; sampleRate?: number; ignoreErrors?: string[]; beforeSend?: (report: ErrorReport) => ErrorReport | null; }): void; /** * Track user action as breadcrumb */ export declare function trackAction(action: string, data?: Record): void; /** * Track navigation as breadcrumb */ export declare function trackNavigation(from: string, to: string): void; /** * Track API call as breadcrumb */ export declare function trackAPICall(method: string, url: string, status?: number, duration?: number): void; /** * Common error filters */ export declare const ErrorFilters: { /** * Ignore browser extension errors */ ignoreExtensions: (error: Error) => boolean; /** * Ignore network errors */ ignoreNetwork: (error: Error) => boolean; /** * Ignore cancelled requests */ ignoreCancelled: (error: Error) => boolean; /** * Ignore specific error messages */ ignoreMessages: (patterns: string[]) => ((error: Error) => boolean); }; //# sourceMappingURL=error-reporter.d.ts.map