import { BasePlugin, PluginClass, PluginOptions } from './BasePlugin'; export declare const ECPluginEventTypes: { pageview: string; event: string; }; type RequireAtLeastOne = Pick> & { [K in Keys]-?: Required> & Partial>>; }[Keys]; export type CustomValues = { [key: string]: string | number | boolean; }; export interface CoveoExtensionProperties { group?: string; } export interface ProductProperties extends CoveoExtensionProperties { id?: string; name?: string; brand?: string; category?: string; variant?: string; price?: number; quantity?: number; coupon?: string; position?: number; custom?: CustomValues; } export type Product = RequireAtLeastOne; export interface ImpressionProperties extends CoveoExtensionProperties { id?: string; name?: string; list?: string; brand?: string; category?: string; variant?: string; position?: number; price?: number; custom?: CustomValues; } export type Impression = RequireAtLeastOne; export type BaseImpression = Omit; export interface ImpressionList { listName?: string; impressions: BaseImpression[]; } export declare class ECPlugin extends BasePlugin { static readonly Id = "ec"; private products; private impressions; constructor({ client, uuidGenerator }: PluginOptions); getApi(name: string): Function | null; protected addHooks(): void; addProduct(product: Product): void; addImpression(impression: Impression): void; protected clearPluginData(): void; private addHooksForECEvents; private addHooksForPageView; private addHooksForEvent; private addECDataToPayload; private getProductPayload; private convertNumberTypes; private getImpressionPayload; private assureProductValidity; private assureBaseImpressionValidity; private getImpressionsByList; } export declare const EC: PluginClass; export {};