import { Callback, SDKEventAttrs, SDKEventOptions, TransactionAttributes, } from '@mparticle/web-sdk'; import { BaseEvent, SDKEvent, SDKEventCustomFlags, SDKImpression, SDKProduct, SDKPromotion, } from './sdkRuntimeModels'; import { valueof } from './utils'; import { EventType, ProductActionType, PromotionActionType } from './types'; // Supports wrapping event handlers functions that will ideally return a specific type type EventHandlerFunction = (element: HTMLLinkElement | HTMLFormElement) => T; export interface IEvents { addEventHandler( domEvent: string, selector: string | Node, eventName: EventHandlerFunction | string, data: EventHandlerFunction | SDKEventAttrs, eventType: valueof ): void; logAST(): void; logCheckoutEvent( step: number, // User options specified during the checkout process // e.g., FedEx, DHL, UPS for delivery options; // Visa, MasterCard, AmEx for payment options. option?: string, attrs?: SDKEventAttrs, customFlags?: SDKEventCustomFlags ): void; logCommerceEvent( commerceEvent: SDKEvent, attrs?: SDKEventAttrs, options?: SDKEventOptions ): void; logEvent(event: BaseEvent, eventOptions?: SDKEventOptions): void; logImpressionEvent( impression: SDKImpression | SDKImpression[], attrs?: SDKEventAttrs, customFlags?: SDKEventCustomFlags, eventOptions?: SDKEventOptions ): void; logOptOut(): void; logPageView(): void; logProductActionEvent( productActionType: valueof, product: SDKProduct | SDKProduct[], attrs?: SDKEventAttrs, customFlags?: SDKEventCustomFlags, transactionAttributes?: TransactionAttributes, eventOptions?: SDKEventOptions ): void; logPromotionEvent( promotionType: valueof, promotion: SDKPromotion | SDKPromotion[], attrs?: SDKEventAttrs, customFlags?: SDKEventCustomFlags, eventOptions?: SDKEventOptions ): void; logPurchaseEvent( transactionAttributes: TransactionAttributes, product: SDKProduct | SDKProduct[], attrs?: SDKEventAttrs, customFlags?: SDKEventCustomFlags ): void; logRefundEvent( transactionAttributes: TransactionAttributes, product: SDKProduct | SDKProduct[], attrs?: SDKEventAttrs, customFlags?: SDKEventCustomFlags ): void; startTracking(callback: Callback): void; stopTracking(): void; }