import type { UnifiedTrackingPlugin, UnifiedTrackingConfig, InitializeResult, ErrorContext, RevenueData, ConsentSettings, ActiveProvidersResult, TrackingEventPayload } from '../definitions.js'; export interface TrackingEvent { type: 'trackingEvent'; event: string; properties?: Record; timestamp?: string; } export interface ProviderEvent { type: 'error' | 'providerStatusChange'; provider?: string; status?: string; error?: Error; message?: string; } export type EventData = TrackingEvent | ProviderEvent | { event: string; properties?: Record; } | { error: Error; context?: ErrorContext; }; export interface EventListener { (event: TrackingEventPayload): void; } export interface ListenerHandle { remove: () => Promise; } export declare class UnifiedTrackingCore implements UnifiedTrackingPlugin { private providerManager; private configManager; private eventQueue; private logger; private initialized; private listeners; constructor(); initialize(options?: UnifiedTrackingConfig): Promise; /** * Buffer an event when called before initialize() has resolved, so events fired during * app startup are not lost. Returns true if the event was buffered (caller returns * early); false once initialized so the caller dispatches normally. Buffered events are * replayed in FIFO order by replayQueuedEvents() once initialize() completes. */ private bufferIfNotReady; /** Replay (in FIFO order) any events buffered before initialize() completed. */ private replayQueuedEvents; track(event: string, properties?: Record): Promise; identify(userId: string, traits?: Record): Promise; setUserProperties(properties: Record): Promise; logError(error: Error | string, context?: ErrorContext): Promise; logRevenue(revenue: RevenueData): Promise; logScreenView(screenName: string, properties?: Record): Promise; setConsent(consent: ConsentSettings): Promise; reset(): Promise; /** * Flush any buffered events across all providers that support it (e.g. Segment, Sentry). */ flush(): Promise; /** * Fully tear down tracking: shuts down + unregisters every provider, clears all event * listeners, and returns the engine to an uninitialized state (a later initialize() * starts fresh). Use this on logout/app-teardown; reset() only clears user state while * keeping providers running. */ shutdown(): Promise; getActiveProviders(): Promise; enableDebugMode(enabled: boolean): Promise; addListener(eventName: 'trackingEvent' | 'error' | 'providerStatusChange', listenerFunc: EventListener): Promise; protected notifyListeners(eventName: string, data: EventData): void; } export declare function getUnifiedTracking(): UnifiedTrackingCore;