import { BaseErrorTrackingProvider } from '../../base-error-tracking-provider.js'; import type { ProviderConfig, ConsentSettings } from '../../../types/provider.js'; import type { ErrorContext } from '../../../definitions.js'; interface SentryConfig extends ProviderConfig { dsn: string; environment?: string; release?: string; serverName?: string; sampleRate?: number; tracesSampleRate?: number; maxBreadcrumbs?: number; attachStacktrace?: boolean; normalizeDepth?: number; maxValueLength?: number; beforeSend?: (event: any) => any; beforeBreadcrumb?: (breadcrumb: any) => any; integrations?: any[]; transport?: any; sendDefaultPii?: boolean; allowUrls?: string[]; denyUrls?: string[]; } interface SentrySDK { init: (options: any) => void; captureException: (exception: any, context?: any) => string; captureMessage: (message: string, level?: string) => string; setUser: (user: any) => void; setContext: (key: string, context: any) => void; setTag: (key: string, value: string) => void; setTags: (tags: Record) => void; addBreadcrumb: (breadcrumb: any) => void; configureScope: (callback: (scope: any) => void) => void; startTransaction: (context: any) => any; getCurrentHub: () => any; withScope: (callback: (scope: any) => void) => void; close: (timeout?: number) => Promise; flush: (timeout?: number) => Promise; Severity: { Debug: string; Info: string; Warning: string; Error: string; Fatal: string; }; } declare global { interface Window { Sentry?: SentrySDK; } } export declare class SentryErrorTrackingProvider extends BaseErrorTrackingProvider { readonly id = "sentry"; readonly name = "Sentry Error Tracking"; readonly version = "1.0.0"; private sentry?; private _sentryConfig; private scriptLoaded; /** * Check if provider is initialized */ get isInitialized(): boolean; protected doInitialize(config: SentryConfig): Promise; private loadSentrySDK; protected doShutdown(): Promise; protected doUpdateConsent(consent: ConsentSettings): Promise; protected doLogError(error: Error, context: ErrorContext): Promise; protected doLogMessage(message: string, level: 'debug' | 'info' | 'warning'): Promise; protected doSetUserContext(user: Record): void; protected doSetExtraContext(key: string, value: any): void; protected doSetTags(tags: Record): void; protected doCaptureException(exception: Error, context: ErrorContext): Promise; protected doEnable(): Promise; protected doDisable(): Promise; protected doAddBreadcrumb(message: string, category?: string, data?: Record): void; protected doStartTransaction(name: string, operation?: string): any; protected doFinishTransaction(transaction: any): void; protected doProviderReset(): Promise; protected doSetDebugMode(enabled: boolean): void; flush(timeout?: number): Promise; /** * Map severity levels to Sentry severity levels */ private mapSeverityToSentry; /** * Convert context to Sentry format */ private convertContextToSentry; /** * Add custom breadcrumb */ addCustomBreadcrumb(message: string, category?: string, level?: 'debug' | 'info' | 'warning' | 'error', data?: Record): void; /** * Set custom release */ setRelease(release: string): void; /** * Set custom environment */ setEnvironment(environment: string): void; /** * Capture a performance measurement */ capturePerformance(name: string, duration: number, data?: Record): void; /** * Track error (alias for logError) */ trackError(error: Error | string, context?: ErrorContext): Promise; /** * Set user (alias for setUserContext) */ setUser(user: Record): Promise; /** * Set context (generic context setter) */ setContext(keyOrContext: string | Record, value?: any): Promise; /** * Remove context */ removeContext(key: string): Promise; /** * Clear all context */ clearContext(): Promise; /** * Capture breadcrumb */ captureBreadcrumb(breadcrumb: any): void; } export {};