import type { Provider, ProviderType, ProviderState, ProviderConfig, ConsentSettings } from '../types/provider.js'; import type { UnifiedTrackingConfig, ErrorContext, RevenueData } from '../definitions.js'; export interface ProviderInstance { provider: Provider; state: ProviderState; config: ProviderConfig; } export declare class ProviderManager { private providers; private logger; private configManager; private eventQueue; private initialized; private initWarnings; constructor(); initialize(config?: UnifiedTrackingConfig): Promise; /** Warnings collected during initialize() — providers that failed to load or init. */ getInitWarnings(): string[]; private initializeProviders; private loadProvider; private resolveProviderModule; registerProvider(id: string, provider: Provider, config: ProviderConfig): Promise; private processQueuedEvents; unregisterProvider(id: string): Promise; getProvider(id: string): Provider | undefined; getActiveProviders(type?: ProviderType): Provider[]; setProviderState(id: string, state: ProviderState): Promise; updateConsent(consent: ConsentSettings): Promise; shutdown(): Promise; isInitialized(): boolean; getProviderStates(): Record; /** False when the consumer has explicitly denied consent for this provider type. */ private hasConsent; /** * Removes any keys listed in settings.privacy.excludedProperties from an * event payload before it is dispatched to providers (data minimization). * Returns the input unchanged when there is nothing to strip. */ private applyPrivacy; trackEvent(eventName: string, properties?: Record): Promise; identifyUser(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; handleConsentChange(consent: ConsentSettings): Promise; reset(): Promise; setDebugMode(enabled: boolean): void; /** * Flush any buffered events across every provider that implements flush() * (e.g. Segment, Sentry). Per-provider failures are isolated and logged. */ flush(): Promise; } /** * @deprecated The core engine uses its own `new ProviderManager()` instance, so this * returns a SEPARATE, unused singleton that does NOT reflect the active providers. * Slated for removal in the next major version — use the `UnifiedTracking` API instead. */ export declare function getProviderManager(): ProviderManager;