import type { FunnelStartedFields, PurchaseFields, TestStartedFields, UserClickFields, UserEventHandler, ViewContentFields, } from '@xylabs/pixel' import { type EmptyObject } from '@xylabs/sdk-js' import type { Mixpanel } from 'mixpanel-browser' import { MixpanelCustomEvent } from './CustomEvent.ts' export class MixpanelUserEventHandler implements UserEventHandler { private mixpanel: Mixpanel constructor(mixpanel: Mixpanel) { this.mixpanel = mixpanel } async funnelStarted(data: FunnelStartedFields | T) { const event = new MixpanelCustomEvent('FunnelStarted', this.mixpanel) return await event.send(data) } async purchase(data: PurchaseFields | T) { const event = new MixpanelCustomEvent('Purchase', this.mixpanel) return await event.send(data) } async testStarted(data: TestStartedFields | T) { const event = new MixpanelCustomEvent('TestStarted', this.mixpanel) return await event.send(data) } async userClick(data: UserClickFields | T) { const event = new MixpanelCustomEvent('UserClick', this.mixpanel) return await event.send(data) } async viewContent(data: ViewContentFields | T) { const event = new MixpanelCustomEvent('ViewContent', this.mixpanel) return await event.send(data) } }