import { PaymentMethod } from './tracking-payload';
import { Analytics } from './analytics';
import { TipserProductModel, PriceModel, TipserProductVariantModel } from '../../components/product/model';
import { CartItemModel } from '../../api/cart-types';
import { LegacyCheckoutModel } from '../../api/legacy-checkout-types';
import { From } from './from';
export declare type VariantAttributes = {
    name: string;
    value: string;
}[];
interface WhispererProductTrackingPayload {
    id: string;
    name: string;
    merchant?: string;
    brand: string;
    image: string;
    listPrice: PriceModel;
    salesPrice: PriceModel;
    category?: string;
    campaign?: string;
    quantity?: number;
    deliveryCost: PriceModel;
    variant?: VariantAttributes;
}
export interface ProductTrackingPayload extends WhispererProductTrackingPayload {
    variantId?: string;
}
declare type InternalCollectionPayload = [{
    url_slug?: string;
    items: {
        product: TipserProductModel;
    }[];
    id: string;
}];
export declare type TipserProductModelWithoutImages = Omit<TipserProductModel, 'images'>;
export declare type OrderTrackingPayload = {
    OrderId?: string;
    Products: ProductTrackingPayload[];
    from?: From;
    paymentMethod: PaymentMethod;
};
export declare type ExternalCollectionPayload = {
    url_slug?: string;
    items: {
        product: ProductTrackingPayload;
    }[];
    id: string;
};
export declare class TrackingEventDispatcher {
    private analytics;
    constructor(analytics: Analytics);
    dispatchCollectionView: (object: InternalCollectionPayload) => void;
    dispatchCartTabClick: () => void;
    dispatchShopView: (object: InternalCollectionPayload) => void;
    private dispatchViewProduct;
    dispatchViewProductDetails: (product: TipserProductModel) => void;
    dispatchViewStandaloneProduct: (product: TipserProductModel, from?: From) => void;
    dispatchClickProduct: (product: TipserProductModel, from?: From) => void;
    dispatchCartTabView: () => void;
    dispatchCartView: (cartItems: CartItemModel[]) => void;
    dispatchAddToCartEvent(product: TipserProductModel, variant: TipserProductVariantModel): void;
    dispatchCartItemQuantityIncrementedEvent(cartItem: CartItemModel, incrementedBy: number): void;
    dispatchNotifyMe: () => void;
    dispatchProductOutOfStockView: () => void;
    private internalDispatchAddToCartEvent;
    dispatchRemoveFromCartEvent(cartItem: CartItemModel, quantityRemoved: number): void;
    dispatchCheckoutPageOpened: (cartItems: CartItemModel[]) => void;
    dispatchOrderPlaced: (orderNumber: string, items: LegacyCheckoutModel['orderView']['items'], from: From, paymentMethod: PaymentMethod) => void;
    dispatchLegacyOrderPlaced: (orderNumber: string, cartItems: CartItemModel[], from: From, paymentMethod: PaymentMethod) => void;
    dispatchExpressPaymentStarted: (paymentMethod: PaymentMethod, from: From) => void;
}
export {};
//# sourceMappingURL=tracking-event-dispatcher.d.ts.map