import { SDKEventAttrs, SDKEventOptions, TransactionAttributes, } from '@mparticle/web-sdk'; import { valueof } from './utils'; import { ProductActionType, PromotionActionType } from './types'; import { SDKEvent, SDKEventCustomFlags, SDKImpression, SDKProduct, SDKProductAction, SDKPromotion, } from './sdkRuntimeModels'; interface IECommerceShared { createProduct( name: string, sku: string | number, price: string | number, quantity?: string | number, variant?: string, category?: string, brand?: string, position?: number, couponCode?: string, attributes?: SDKEventAttrs ): SDKProduct | null; createImpression(name: string, product: SDKProduct): SDKImpression | null; createPromotion( id: string | number, creative?: string, name?: string, position?: number ): SDKPromotion | null; createTransactionAttributes( id: string | number, affiliation?: string, couponCode?: string, revenue?: string | number, shipping?: string | number, tax?: number ): TransactionAttributes | null; expandCommerceEvent(event: SDKEvent): SDKEvent[] | null; } export interface SDKCart { add(product: SDKProduct | SDKProduct[], logEvent?: boolean): void; remove(product: SDKProduct | SDKProduct[], logEvent?: boolean): void; clear(): void; } // Used for the public `eCommerce` namespace export interface SDKECommerceAPI extends IECommerceShared { logCheckout( step: number, option?: string, attrs?: SDKEventAttrs, customFlags?: SDKEventCustomFlags ): void; logImpression( impression: SDKImpression | SDKImpression[], attrs?: SDKEventAttrs, customFlags?: SDKEventCustomFlags, eventOptions?: SDKEventOptions ): void; logProductAction( productActionType: valueof, product: SDKProduct | SDKProduct[], attrs?: SDKEventAttrs, customFlags?: SDKEventCustomFlags, transactionAttributes?: TransactionAttributes, eventOptions?: SDKEventOptions ): void; logPromotion( type: valueof, promotion: SDKPromotion | SDKPromotion[], attrs?: SDKEventAttrs, customFlags?: SDKEventCustomFlags, eventOptions?: SDKEventOptions ): void; setCurrencyCode(code: string): void; /* * @deprecated */ Cart: SDKCart; /* * @deprecated */ logPurchase( transactionAttributes: TransactionAttributes, product: SDKProduct | SDKProduct[], clearCart?: boolean, attrs?: SDKEventAttrs, customFlags?: SDKEventCustomFlags ): void; /* * @deprecated */ logRefund( transactionAttributes: TransactionAttributes, product: SDKProduct | SDKProduct[], clearCart?: boolean, attrs?: SDKEventAttrs, customFlags?: SDKEventCustomFlags ): void; } interface ExtractedActionAttributes { Affiliation?: string; 'Coupon Code'?: string; 'Total Amount'?: number; 'Shipping Amount'?: number; 'Tax Amount'?: number; 'Checkout Option'?: string; 'Checkout Step'?: number; 'Transaction ID'?: string; } interface ExtractedProductAttributes { 'Coupon Code'?: string; Brand?: string; Category?: string; Name?: string; Id?: string; 'Item Price'?: number; Quantity?: number; Position?: number; Variant?: string; 'Total Product Amount': number; } interface ExtractedPromotionAttributes { Id?: string; Creative?: string; Name?: string; Position?: number; } interface ExtractedTransactionId { 'Transaction ID'?: string; } // Used for the private `_Ecommerce` namespace export interface IECommerce extends IECommerceShared { buildProductList( event: SDKEvent, product: SDKProduct | SDKProduct[] ): SDKProduct[]; convertProductActionToEventType( productActionType: valueof ): // https://go.mparticle.com/work/SQDSDKS-4801 number | null; convertPromotionActionToEventType( promotionActionType: valueof ): number | null; calculateProductActionTotalAmount( productAction: SDKProductAction ): SDKProductAction; convertTransactionAttributesToProductAction( transactionAttributes: TransactionAttributes, productAction: SDKProductAction ): void; createCommerceEventObject( customFlags: SDKEventCustomFlags, options?: SDKEventOptions ): SDKEvent | null; expandProductAction(commerceEvent: SDKEvent): SDKEvent[]; expandProductImpression(commerceEvent: SDKEvent): SDKEvent[]; expandPromotionAction(commerceEvent: SDKEvent): SDKEvent[]; extractActionAttributes( attributes: ExtractedActionAttributes, productAction: SDKProductAction ): void; extractProductAttributes( attributes: ExtractedProductAttributes, product: SDKProduct ): void; extractPromotionAttributes( attributes: ExtractedPromotionAttributes, promotion: SDKPromotion ): void; extractTransactionId( attributes: ExtractedTransactionId, productAction: SDKProductAction ): void; generateExpandedEcommerceName(eventName: string, plusOne?: boolean): string; getProductActionEventName( productActionType: valueof ): string; getPromotionActionEventName( promotionActionType: valueof ): string; sanitizeAmount(amount: string | number, category: string): number; }