import { BaseErrorTrackingProvider } from '../../base-error-tracking-provider.js'; import type { ProviderConfig, ConsentSettings } from '../../../types/provider.js'; import type { ErrorContext } from '../../../definitions.js'; interface AppCenterConfig extends ProviderConfig { appSecret: string; enableCrashes?: boolean; enableAnalytics?: boolean; logLevel?: 'verbose' | 'debug' | 'info' | 'warning' | 'error' | 'assert' | 'none'; userId?: string; countryCode?: string; distributionGroupId?: string; crashesListener?: { shouldProcess?: (report: any) => boolean; shouldAwaitUserConfirmation?: (report: any) => boolean; getErrorAttachments?: (report: any) => any[]; }; customProperties?: Record; enabledForDebuggableBuild?: boolean; enableManualSessionTracker?: boolean; enableAutomaticSessionTracker?: boolean; sessionTimeout?: number; enableDistribute?: boolean; enablePush?: boolean; } interface AppCenterCrashReport { id: string; threadName?: string; exception?: Error; errorAttachments?: any[]; properties?: Record; } interface AppCenterErrorAttachment { textAttachment?: string; binaryAttachment?: Uint8Array; fileName?: string; contentType?: string; } interface AppCenterSDK { start: (appSecret: string, services: any[]) => void; setLogLevel: (logLevel: string) => void; isEnabled: () => Promise; setEnabled: (enabled: boolean) => Promise; getInstallId: () => Promise; setUserId: (userId: string) => void; setCountryCode: (countryCode: string) => void; Crashes: { setEnabled: (enabled: boolean) => Promise; isEnabled: () => Promise; generateTestCrash: () => void; hasReceivedMemoryWarningInLastSession: () => Promise; hasCrashedInLastSession: () => Promise; lastSessionCrashReport: () => Promise; trackError: (error: Error, properties?: Record, attachments?: AppCenterErrorAttachment[]) => void; setListener: (listener: any) => void; notifyUserConfirmation: (userConfirmation: number) => void; }; Analytics: { setEnabled: (enabled: boolean) => Promise; isEnabled: () => Promise; trackEvent: (name: string, properties?: Record) => void; pause: () => void; resume: () => void; enableManualSessionTracker: () => void; startSession: () => void; endSession: () => void; setTransmissionInterval: (seconds: number) => void; }; Push: { setEnabled: (enabled: boolean) => Promise; isEnabled: () => Promise; setListener: (listener: any) => void; }; Distribute: { setEnabled: (enabled: boolean) => Promise; isEnabled: () => Promise; notifyUpdateAction: (action: number) => void; disableAutomaticCheckForUpdate: () => void; checkForUpdate: () => void; setListener: (listener: any) => void; }; } declare global { interface Window { AppCenter?: AppCenterSDK; MSAppCenter?: AppCenterSDK; } } export declare class AppCenterProvider extends BaseErrorTrackingProvider { readonly id = "appcenter"; readonly name = "Microsoft App Center"; readonly version = "1.0.0"; private appCenter?; private _appCenterConfig; private scriptLoaded; /** * Check if provider is initialized */ get isInitialized(): boolean; protected doInitialize(config: AppCenterConfig): Promise; private loadAppCenterSDK; 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 doProviderReset(): Promise; protected doSetDebugMode(enabled: boolean): void; protected doDisable(): Promise; protected doEnable(): Promise; protected doAddBreadcrumb(_message: string, _category?: string, _data?: Record): void; /** * Check if App Center is enabled (async method specific to AppCenter) */ isAppCenterEnabled(): Promise; /** * Enable or disable App Center */ setAppCenterEnabled(enabled: boolean): Promise; /** * Get App Center install ID */ getInstallId(): Promise; /** * Set user ID */ setUserId(userId: string): void; /** * Set country code */ setCountryCode(countryCode: string): void; /** * Generate test crash */ generateTestCrash(): void; /** * Check if crashed in last session */ hasCrashedInLastSession(): Promise; /** * Check if received memory warning in last session */ hasReceivedMemoryWarningInLastSession(): Promise; /** * Get last session crash report */ lastSessionCrashReport(): Promise; /** * Track analytics event */ trackEvent(name: string, properties?: Record): void; /** * Start manual session */ startSession(): void; /** * End manual session */ endSession(): void; /** * Pause analytics */ pauseAnalytics(): void; /** * Resume analytics */ resumeAnalytics(): void; /** * Check for updates (if Distribute is enabled) */ checkForUpdate(): void; /** * Disable automatic check for updates */ disableAutomaticCheckForUpdate(): 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(key: string, value: any): Promise; } export {};