import { ReservationDTO, ReservationsDTO } from '@roomstay/core';
import BasketAddonRow from '../../models/BasketAddonRow';
import BasketRow from '../../models/BasketRow';
import { DateRange, GenericAnalyticsAccommodation } from '../DataLayer';
import { Analytics, IAnalyticMessageEvent } from './Analytics';
interface GA4Item {
    item_name: string;
    item_id: string;
    item_brand: string;
    item_category: string;
    item_category2?: string;
    item_category3?: string;
    item_category5?: string;
    item_list_name: string;
    coupon?: string;
    discount?: number;
    index: number;
    price: number;
    quantity: number;
    selected_dates?: string;
    upgrade?: string;
    upgrade_price_dif?: number;
}
declare class GoogleAnalytics4 extends Analytics {
    private formatDateRange;
    private generateRoomRateProductInfo;
    private generateAddonProductInfo;
    generateRoomImpressionMessageObject(impressions: GenericAnalyticsAccommodation[]): {
        event: string;
        currency: string;
        ecommerce: {
            items: GA4Item[];
        };
    };
    generateProductClickMessageObject(product: GenericAnalyticsAccommodation): {
        event: string;
        ecommerce: {
            currency: string;
            item_list_name: string;
            items: GA4Item[];
        };
    };
    generateDateSelectionMessageObject(dateRange: DateRange, adults: number, children: number, infants?: number | undefined): {
        event: string;
        ecommerce: {
            currency: string;
            arrival_date: string;
            departure_date: string;
            adult_count: number;
            child_count: number;
            infant_count: number;
        };
    };
    generateAddToCartMessageObject(product: GenericAnalyticsAccommodation): {
        event: string;
        ecommerce: {
            currency: string;
            items: GA4Item[];
        };
    };
    generateAddonsAddToCartMessageObject(product: Required<Pick<GenericAnalyticsAccommodation, 'quantity' | 'dateRange' | 'basketAddonRow'>>): IAnalyticMessageEvent;
    generateUpsellConfirmedMessageObject(oldProduct: GenericAnalyticsAccommodation, newProduct: GenericAnalyticsAccommodation): {
        event: string;
        ecommerce: {
            currency: string;
            items: {
                old: GA4Item;
                new: GA4Item;
            };
        };
    };
    generateUpsellCancelledMessageObject(product: GenericAnalyticsAccommodation): {
        event: string;
        ecommerce: {
            currency: string;
            items: GA4Item[];
        };
    };
    generateCheckoutViewMessageObject(basketRows: BasketRow[], addonRows: BasketAddonRow[]): {
        event: string;
        ecommerce: {
            currency: string;
            items: GA4Item[];
            page_type: string;
        };
    };
    generateRoomPurchaseMessageObject(basketRows: BasketRow[], addonRows: BasketAddonRow[], reservations: ReservationsDTO): {
        event: string;
        ecommerce: {
            currency: string;
            transaction_id: string;
            value: number | undefined;
            tax: number;
            coupon: undefined;
            payment_type: import("@roomstay/core").EBookingPaymentMethod | undefined;
            page_type: string;
            items: GA4Item[];
        };
        user_data: {
            email: string;
            phone_number: string | undefined;
            first_name: string;
            last_name: string;
        };
    }[];
    generateRefundMessageObject(reservation: ReservationDTO): {
        event: string;
        ecommerce: {
            currency: string;
            transaction_id: string;
            value: number;
            items: {
                item_name: string;
                item_id: string;
                item_brand: string;
                item_category: string;
                item_category2: string;
                item_category3: string;
                item_category5: string;
                item_list_name: string;
                coupon: undefined;
                discount: string;
                index: number;
                price: number;
                quantity: number;
                selected_dates: string;
                upgrade: undefined;
                upgrade_price_dif: undefined;
            }[];
        };
    };
}
declare const ga4: GoogleAnalytics4;
export { ga4 as GoogleAnalytics4 };
