/**
 * Analytics Events Utility
 */
import { ReservationsDTO } from '@roomstay/core';
import BasketAddonRow from '../../models/BasketAddonRow';
import BasketRow from '../../models/BasketRow';
/**
 * Configuration for AnalyticsEvents
 */
export interface AnalyticsEventsConfig {
    hotelId?: string;
    currency?: string;
    metaPixelId?: string;
    firePixelEvents?: boolean;
    debug?: boolean;
}
declare class AnalyticsEvents {
    private session;
    private config;
    private initialized;
    private listenersRegistered;
    private sessionReady;
    /**
     * Initialize analytics with configuration
     */
    initialize(config?: AnalyticsEventsConfig): void;
    /**
     * Create session on the server
     */
    private createServerSession;
    /**
     * Register listeners for Roomstay events
     */
    private registerEventListeners;
    /**
     * Track View/Checkout event
     */
    trackInitiateCheckout(basketRows: BasketRow[], addonRows?: BasketAddonRow[]): void;
    /**
     * Track Basket/Add event (room)
     */
    trackAddToCart(basketRow: BasketRow): void;
    /**
     * Track Basket/AddAddon event (addon)
     */
    trackAddonAddToCart(addonRow: BasketAddonRow): void;
    /**
     * Track Booking/Committed event
     */
    trackPurchase(reservation: ReservationsDTO, basketRows: BasketRow[], addonRows?: BasketAddonRow[]): void;
    /**
     * Set external user ID (e.g. member portal ID)
     */
    setExternalId(externalId: string): void;
    /**
     * Ensure session is initialized and has required fields for tracking.
     * Returns the session if tracking can proceed, null otherwise.
     */
    private getValidatedSession;
    private createEventPayload;
    private sendEvent;
    private loadSession;
    private saveSession;
    private log;
}
declare const _default: AnalyticsEvents;
export default _default;
