import { ConversionAPIConfig, ServerEventData, EventResponse, UserData, CustomData, EventName } from './types'; /** * Meta Conversion API server-side tracker * Self-contained implementation inspired by facebook-nodejs-business-sdk patterns * Handles server-side tracking using Facebook's Conversion API without external dependencies */ export declare class MetaConversionTracker { private config; private retryAttempts; private retryDelay; private baseUrl; constructor(config: ConversionAPIConfig); /** * Make HTTP request to Facebook Conversion API */ private makeRequest; /** * Generate HMAC-SHA256 signature for app secret proof */ private generateSignature; /** * Send a single event to Facebook Conversion API */ sendEvent(eventData: ServerEventData): Promise; /** * Send multiple events in a batch */ sendBatchEvents(events: ServerEventData[]): Promise; /** * Create server event object */ private createServerEvent; /** * Create and populate user data object */ private createUserData; /** * Create custom data object */ private createCustomData; /** * Transform API response to our format */ private transformResponse; /** * Validate server event data */ private validateServerEventData; /** * Test connection to Facebook Conversion API */ testConnection(): Promise<{ success: boolean; details?: unknown; error?: string; }>; /** * Validate pixel access */ validatePixelAccess(): Promise<{ valid: boolean; permissions?: string[]; error?: string; }>; /** * Get recommended events for business type */ getRecommendedEvents(businessType: 'ecommerce' | 'saas' | 'lead_generation' | 'content' | 'app'): EventName[]; /** * Quick tracking methods */ trackPageView(userData?: UserData, customData?: CustomData): Promise; trackPurchase(value: number, currency?: string, userData?: UserData, additionalData?: Partial): Promise; trackLead(userData?: UserData, customData?: CustomData): Promise; trackAddToCart(contentIds: string[], value?: number, currency?: string, userData?: UserData, additionalData?: Partial): Promise; trackViewContent(contentId: string, contentType?: string, value?: number, currency?: string, userData?: UserData, additionalData?: Partial): Promise; /** * Update configuration */ updateConfig(newConfig: Partial): void; /** * Get current configuration (without sensitive data) */ getConfig(): Record; }