import { BaseErrorTrackingProvider } from '../../base-error-tracking-provider.js'; import type { ProviderConfig, ConsentSettings } from '../../../types/provider.js'; import type { ErrorContext } from '../../../definitions.js'; interface BugsnagConfig extends ProviderConfig { apiKey: string; appVersion?: string; appType?: string; releaseStage?: string; enabledReleaseStages?: string[]; endpoint?: string; sessionEndpoint?: string; autoDetectErrors?: boolean; autoTrackSessions?: boolean; enabledErrorTypes?: { unhandledExceptions?: boolean; unhandledRejections?: boolean; }; onError?: (event: any) => boolean | void; onSession?: (session: any) => boolean | void; onBreadcrumb?: (breadcrumb: any) => boolean | void; user?: { id?: string; email?: string; name?: string; }; context?: string; metaData?: Record; maxBreadcrumbs?: number; enabledBreadcrumbTypes?: string[]; collectUserIp?: boolean; trackInlineScript?: boolean; generateAnonymousId?: boolean; redactedKeys?: string[]; beforeSend?: (event: any) => boolean | void; logger?: any; networkBreadcrumbsEnabled?: boolean; interactionBreadcrumbsEnabled?: boolean; consoleBreadcrumbsEnabled?: boolean; navigationBreadcrumbsEnabled?: boolean; } interface BugsnagSDK { start: (config?: any) => void; notify: (error: Error | string, onError?: (event: any) => boolean | void) => void; leaveBreadcrumb: (name: string, metaData?: any, type?: string) => void; setUser: (id?: string, email?: string, name?: string) => void; setContext: (context: string) => void; addMetadata: (section: string, key: string, value: any) => void; clearMetadata: (section: string, key?: string) => void; getMetadata: (section: string, key?: string) => any; addFeatureFlag: (name: string, variant?: string) => void; addFeatureFlags: (featureFlags: Array<{ name: string; variant?: string; }>) => void; clearFeatureFlag: (name: string) => void; clearFeatureFlags: () => void; getContext: () => string; getUser: () => any; startSession: () => void; pauseSession: () => void; resumeSession: () => void; isStarted: () => boolean; getPlugin: (name: string) => any; addOnError: (callback: (event: any) => boolean | void) => void; removeOnError: (callback: (event: any) => boolean | void) => void; addOnSession: (callback: (session: any) => boolean | void) => void; removeOnSession: (callback: (session: any) => boolean | void) => void; addOnBreadcrumb: (callback: (breadcrumb: any) => boolean | void) => void; removeOnBreadcrumb: (callback: (breadcrumb: any) => boolean | void) => void; refresh: () => void; } declare global { interface Window { Bugsnag?: BugsnagSDK; } } export declare class BugsnagErrorTrackingProvider extends BaseErrorTrackingProvider { readonly id = "bugsnag"; readonly name = "Bugsnag Error Tracking"; readonly version = "1.0.0"; private bugsnag?; private _bugsnagConfig; private scriptLoaded; protected doInitialize(config: BugsnagConfig): Promise; private loadBugsnagSDK; protected doShutdown(): Promise; protected doUpdateConsent(consent: ConsentSettings): Promise; protected doLogError(error: Error | string, context?: ErrorContext): 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 doProviderReset(): Promise; protected doSetDebugMode(_enabled: boolean): void; protected doEnable(): Promise; protected doDisable(): Promise; protected doAddBreadcrumb(message: string, category?: string, data?: Record): void; protected doLogMessage(message: string, level: 'debug' | 'info' | 'warning', _extra?: Record): Promise; protected doCaptureBreadcrumb(breadcrumb: { message: string; category?: string; level?: string; data?: Record; }): Promise; /** * Set context for all future errors */ setContext(context: string): void; /** * Get current context */ getContext(): string; /** * Get current user */ getUser(): any; /** * Add metadata to all future errors */ addMetadata(section: string, key: string, value: any): void; /** * Clear metadata */ clearMetadata(section: string, key?: string): void; /** * Get metadata */ getMetadata(section: string, key?: string): any; /** * Add feature flag */ addFeatureFlag(name: string, variant?: string): void; /** * Add multiple feature flags */ addFeatureFlags(featureFlags: Array<{ name: string; variant?: string; }>): void; /** * Clear feature flag */ clearFeatureFlag(name: string): void; /** * Clear all feature flags */ clearFeatureFlags(): void; /** * Start session */ startSession(): void; /** * Pause session */ pauseSession(): void; /** * Resume session */ resumeSession(): void; /** * Check if Bugsnag is started */ isStarted(): boolean; /** * Add error callback */ addOnError(callback: (event: any) => boolean | void): void; /** * Remove error callback */ removeOnError(callback: (event: any) => boolean | void): void; /** * Add session callback */ addOnSession(callback: (session: any) => boolean | void): void; /** * Remove session callback */ removeOnSession(callback: (session: any) => boolean | void): void; /** * Add breadcrumb callback */ addOnBreadcrumb(callback: (breadcrumb: any) => boolean | void): void; /** * Remove breadcrumb callback */ removeOnBreadcrumb(callback: (breadcrumb: any) => boolean | void): void; /** * Refresh Bugsnag */ refresh(): void; } export {};