import Delegate from '../base/Delegate'; /** * Tracking delegate contract. * Provides a generic interface for analytics and tracking services * (e.g., Google Tag Manager, Mouseflow, Hotjar). */ export interface TrackingDelegate extends Delegate { /** * Configures the tracking service with a measurement ID and optional parameters. * @param measurementId - The measurement ID (e.g., G-XXXXXXXXXX for GA4) * @param params - Optional configuration parameters */ config(measurementId: string, params?: Record): void; /** * Records an event with optional parameters. * @param eventName - The name of the event to track * @param params - Optional event parameters */ event(eventName: string, params?: Record): void; /** * Sets global parameters that apply to all subsequent events. * @param params - Parameters to set globally */ set(params: Record): void; /** * Retrieves a configuration value from the tracking service. * @param measurementId - The measurement ID to query * @param callback - Callback function that receives the value */ get(measurementId: string, callback: (value: any) => void): void; /** * Manages user consent for data collection. * @param command - Consent command (e.g., 'update', 'default') * @param params - Consent parameters */ consent(command: string, params?: Record): void; } export default TrackingDelegate;