import { CxEvent } from '../../event/cx-event';
import { OrderEntry } from '../../model/order.model';
/**
 * Base cart event. Most cart events should have these properties.
 */
export declare abstract class CartEvent extends CxEvent {
    cartId: string;
    cartCode: string;
    userId: string;
}
export declare class CartAddEntryEvent extends CartEvent {
    /**
     * Event's type
     */
    static readonly type = "CartAddEntryEvent";
    productCode: string;
    quantity: number;
}
export declare class CartAddEntrySuccessEvent extends CartEvent {
    /**
     * Event's type
     */
    static readonly type = "CartAddEntrySuccessEvent";
    productCode: string;
    quantity: number;
    entry?: OrderEntry;
    quantityAdded?: number;
    deliveryModeChanged?: boolean;
}
export declare class CartAddEntryFailEvent extends CartEvent {
    /**
     * Event's type
     */
    static readonly type = "CartAddEntryFailEvent";
    productCode: string;
    quantity: number;
    error?: unknown;
}
export declare class CartRemoveEntryFailEvent extends CartEvent {
    /**
     * Event's type
     */
    static readonly type = "CartRemoveEntryFailEvent";
    entry: OrderEntry;
}
export declare class CartRemoveEntrySuccessEvent extends CartEvent {
    /**
     * Event's type
     */
    static readonly type = "CartRemoveEntrySuccessEvent";
    entry: OrderEntry;
}
export declare class CartUpdateEntrySuccessEvent extends CartEvent {
    /**
     * Event's type
     */
    static readonly type = "CartUpdateEntrySuccessEvent";
    quantity: number;
    entry: OrderEntry;
}
export declare class CartUpdateEntryFailEvent extends CartEvent {
    /**
     * Event's type
     */
    static readonly type = "CartUpdateEntryFailEvent";
    quantity: number;
    entry: OrderEntry;
}
export declare class MergeCartSuccessEvent extends CartEvent {
    /**
     * Event's type
     */
    static readonly type = "MergeCartSuccessEvent";
    tempCartId: string;
    oldCartId?: string;
    extraData?: {
        active?: boolean;
    };
}
