declare global {
    interface Window {
        dataLayer?: unknown[];
    }
}
export type GAEvent = {
    category: string;
    action: string;
    label: string;
    value?: string | number;
};
export declare const gaPush: (gaEvent: GAEvent) => void;
export declare const executeAndTrack: <Args extends unknown[], Result>(func: (...args: Args) => Result, value: GAEvent) => (...args: Args) => Result;
/**
 * Approach 2: Tracking attributes (preferred)
 *
 * Use this to add DOM attributes to an element. These attributes can be utilized later
 * by the AnalyticsAnalysisOverlay component.
 */
export type TRACKING_TRIGGER = 'click' | 'visibility';
export type TrackingValues = {
    trigger: TRACKING_TRIGGER;
    category: string;
    action?: string;
    label?: string;
    value?: string;
};
export type TrackingAttributes = {
    'data-track-ga-event-trigger': TRACKING_TRIGGER;
    'data-track-ga-event-category': string;
    'data-track-ga-event-action': string;
    'data-track-ga-event-label'?: string;
    'data-track-ga-event-value'?: string;
};
export declare const TRACKING_ACTIONS: Record<string, string>;
export declare const TRACKING_LABELS: Record<string, string>;
export declare const getTrackingAttributes: (param: TrackingValues) => TrackingAttributes;
