import type { EmptyObject } from '@xylabs/sdk-js' import { FacebookStandardEvent } from './StandardEvent.ts' export interface FacebookContentsItem { currency?: string id: string price?: number quantity: number } export interface FacebookContentProperties extends Record { content_category?: string content_name?: string content_type?: 'product' | 'product_group' } export interface FacebookValueProperties extends Record { currency?: string value?: number } export interface FacebookCartProperties extends FacebookValueProperties, FacebookContentProperties { content_ids?: (string | number)[] contents?: FacebookContentsItem[] num_items?: number } export interface FacebookExternalId extends Record { external_id?: string[] } export type FacebookAddPaymentInfo = FacebookCartProperties export type FacebookAddToCart = FacebookCartProperties export type FacebookAddToWishList = FacebookCartProperties export interface FacebookCompleteRegistration extends FacebookValueProperties, FacebookContentProperties { status?: boolean } export type FacebookInitiateCheckout = FacebookCartProperties export interface FacebookLead extends FacebookContentProperties, FacebookValueProperties {} export type FacebookPurchase = FacebookCartProperties export interface FacebookSearch extends FacebookContentProperties, FacebookValueProperties { search_string?: string } export interface FacebookStartTrial extends FacebookValueProperties { predicted_ltv?: string } export interface FacebookSubscribe extends FacebookValueProperties { predicted_ltv?: string subscription_id?: string } export type FacebookViewContent = FacebookCartProperties export class FacebookStandardEvents { addPaymentInfo() { return new FacebookStandardEvent('AddPaymentInfo') } addToCart() { return new FacebookStandardEvent('AddToCart') } addToWishlist() { return new FacebookStandardEvent('AddToWishlist') } completedRegistration() { return new FacebookStandardEvent('CompleteRegistration') } contact() { return new FacebookStandardEvent('Contact') } customizeProduct() { return new FacebookStandardEvent('CustomizeProduct') } donate() { return new FacebookStandardEvent('Donate') } findLocation() { return new FacebookStandardEvent('FindLocation') } initiateCheckout() { return new FacebookStandardEvent('InitiateCheckout') } lead() { return new FacebookStandardEvent('Lead') } pageView() { return new FacebookStandardEvent('PageView') } purchase() { return new FacebookStandardEvent('Purchase') } schedule() { return new FacebookStandardEvent('Schedule') } search() { return new FacebookStandardEvent('Search') } startTrial() { return new FacebookStandardEvent('StartTrial') } submitApplication() { return new FacebookStandardEvent('SubmitApplication') } subscribe() { return new FacebookStandardEvent('Subscribe') } viewContent() { return new FacebookStandardEvent('ViewContent') } }