import { BaseProviderImpl } from './base-provider-impl.js'; import type { AnalyticsProvider } from './base.js'; import type { RevenueData } from '../definitions.js'; import type { ProviderType } from '../types/provider.js'; /** * Abstract base class for analytics provider implementations */ export declare abstract class BaseAnalyticsProvider extends BaseProviderImpl implements AnalyticsProvider { readonly type: ProviderType; protected superProperties: Record; protected timedEvents: Map; track(eventName: string, properties?: Record): Promise; /** * Provider-specific event tracking logic */ protected abstract doTrack(eventName: string, properties: Record): Promise; trackEvent(eventName: string, properties?: Record): Promise; identifyUser(userId: string, traits?: Record): Promise; /** * Provider-specific user identification logic */ protected abstract doIdentifyUser(userId: string, traits: Record): Promise; setUserProperties(properties: Record): Promise; /** * Provider-specific user properties logic */ protected abstract doSetUserProperties(properties: Record): Promise; logScreenView(screenName: string, properties?: Record): Promise; /** * Provider-specific screen view logging logic */ protected abstract doLogScreenView(screenName: string, properties: Record): Promise; logRevenue(data: RevenueData): Promise; /** * Provider-specific revenue logging logic */ protected abstract doLogRevenue(data: RevenueData): Promise; startTimedEvent(eventName: string): void; endTimedEvent(eventName: string, properties?: Record): Promise; setSuperProperties(properties: Record): void; incrementUserProperty(property: string, value?: number): Promise; /** * Provider-specific user property increment logic * Override if provider supports this feature */ protected doIncrementUserProperty(property: string, value: number): Promise; protected doReset(): Promise; /** * Provider-specific reset logic */ protected abstract doProviderReset(): Promise; /** * Get common event properties */ protected getCommonProperties(): Record; /** * Get current platform */ protected getPlatform(): string; /** * Get session ID (override in subclasses if needed) */ protected getSessionId?(): string | null; }