flowgrid-sdk 1.4.1 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -32,6 +32,709 @@
32
32
  import { FlowGridTransport, FlowGridTransportConfig } from "./client/transport";
33
33
  import { IdentityManager } from "./utils/identity";
34
34
  import { ActivationTracker, ExperimentTracker, FeatureTracker, PromptTracker, EventTracker, PageViewTracker, SessionTracker, IdentifyTracker, FunnelTracker, RetentionTracker, AttributionTracker, HeatmapTracker, PerformanceTracker, ReplayTracker, ProductTracker, CartTracker, CheckoutTracker, PurchaseTracker, RefundTracker, PromotionTracker, WishlistTracker, SubscriptionTracker, LTVTracker, SearchTracker, EngagementTracker, CohortTracker, ChurnTracker, MonetizationTracker, MultiPathFunnelTracker, SupportTracker, AcquisitionTracker, PathTracker, AlertTracker, SecurityTracker, ForecastingTracker } from "./tracking";
35
+ export type FlowGridTrackDomain = "event" | "activation" | "feature" | "prompt" | "experiment" | "ecommerce" | "analytics" | "retention" | "attribution" | "funnel" | "engagement" | "churn" | "monetization" | "support" | "acquisition" | "paths" | "security" | "multiPathFunnels";
36
+ export interface FlowGridTrackOptions {
37
+ userId?: string;
38
+ sessionId?: string;
39
+ /** Force a specific module when an event name is intentionally generic. */
40
+ domain?: FlowGridTrackDomain;
41
+ }
42
+ /**
43
+ * Property shapes for every event name the `.track()` router understands.
44
+ * Required fields are enforced at the call site; extra fields are always
45
+ * permitted via the `Record<string, unknown>` intersection.
46
+ */
47
+ export interface FlowGridEventMap {
48
+ signup_completed: {
49
+ userId: string;
50
+ method: string;
51
+ source?: string;
52
+ } & Record<string, unknown>;
53
+ onboarding_step: {
54
+ userId: string;
55
+ stepId: string;
56
+ stepName: string;
57
+ stepOrder: number;
58
+ totalSteps: number;
59
+ } & Record<string, unknown>;
60
+ onboarding_completed: {
61
+ userId: string;
62
+ totalTimeSpent: number;
63
+ stepsCompleted: number;
64
+ stepsSkipped?: number;
65
+ } & Record<string, unknown>;
66
+ first_action: {
67
+ userId: string;
68
+ actionName: string;
69
+ timeSinceSignup: number;
70
+ } & Record<string, unknown>;
71
+ feature_usage: {
72
+ featureId: string;
73
+ featureName: string;
74
+ action?: string;
75
+ } & Record<string, unknown>;
76
+ feature_viewed: {
77
+ featureId: string;
78
+ featureName: string;
79
+ } & Record<string, unknown>;
80
+ feature_used: {
81
+ featureId: string;
82
+ featureName: string;
83
+ } & Record<string, unknown>;
84
+ feature_completed: {
85
+ featureId: string;
86
+ featureName: string;
87
+ } & Record<string, unknown>;
88
+ feature_abandoned: {
89
+ featureId: string;
90
+ featureName: string;
91
+ } & Record<string, unknown>;
92
+ prompt_submitted: {
93
+ promptId: string;
94
+ promptType: string;
95
+ } & Record<string, unknown>;
96
+ prompt_response: {
97
+ promptId: string;
98
+ responseTime: number;
99
+ completed: boolean;
100
+ } & Record<string, unknown>;
101
+ prompt_feedback: {
102
+ promptId: string;
103
+ feedbackType: string;
104
+ } & Record<string, unknown>;
105
+ prompt_conversation: {
106
+ conversationId: string;
107
+ userId: string;
108
+ turnCount: number;
109
+ totalDuration: number;
110
+ } & Record<string, unknown>;
111
+ experiment_assignment: {
112
+ experimentId: string;
113
+ userId: string;
114
+ variantId: string;
115
+ } & Record<string, unknown>;
116
+ experiment_exposure: {
117
+ experimentId: string;
118
+ userId: string;
119
+ variantId: string;
120
+ } & Record<string, unknown>;
121
+ experiment_conversion: {
122
+ experimentId: string;
123
+ userId: string;
124
+ variantId: string;
125
+ metricName: string;
126
+ } & Record<string, unknown>;
127
+ click_event: {
128
+ elementId: string;
129
+ elementText: string;
130
+ } & Record<string, unknown>;
131
+ form_event: {
132
+ formId: string;
133
+ formName: string;
134
+ } & Record<string, unknown>;
135
+ search_event: {
136
+ query: string;
137
+ category: string;
138
+ } & Record<string, unknown>;
139
+ error_event: {
140
+ message: string;
141
+ type: string;
142
+ } & Record<string, unknown>;
143
+ funnel_step: {
144
+ funnelId: string;
145
+ step: string;
146
+ stepNumber: number;
147
+ } & Record<string, unknown>;
148
+ funnel_complete: {
149
+ funnelId: string;
150
+ } & Record<string, unknown>;
151
+ funnel_abandon: {
152
+ funnelId: string;
153
+ lastStep: string;
154
+ } & Record<string, unknown>;
155
+ user_activity: {
156
+ userId: string;
157
+ } & Record<string, unknown>;
158
+ attribution_touchpoint: {
159
+ userId: string;
160
+ channel: string;
161
+ } & Record<string, unknown>;
162
+ attribution_conversion: {
163
+ userId: string;
164
+ conversionType: string;
165
+ } & Record<string, unknown>;
166
+ product_view: {
167
+ productId: string;
168
+ name: string;
169
+ price: number;
170
+ currency: string;
171
+ } & Record<string, unknown>;
172
+ product_impression: {
173
+ list: Record<string, unknown>;
174
+ } & Record<string, unknown>;
175
+ product_click: {
176
+ productId: string;
177
+ name: string;
178
+ price: number;
179
+ currency: string;
180
+ listId: string;
181
+ position: number;
182
+ } & Record<string, unknown>;
183
+ add_to_cart: {
184
+ productId: string;
185
+ name: string;
186
+ price: number;
187
+ currency: string;
188
+ quantity: number;
189
+ } & Record<string, unknown>;
190
+ remove_from_cart: {
191
+ productId: string;
192
+ name: string;
193
+ price: number;
194
+ currency: string;
195
+ } & Record<string, unknown>;
196
+ update_cart_item: {
197
+ product: Record<string, unknown>;
198
+ previousQuantity: number;
199
+ newQuantity: number;
200
+ } & Record<string, unknown>;
201
+ view_cart: {
202
+ cart: Record<string, unknown>;
203
+ } & Record<string, unknown>;
204
+ begin_checkout: {
205
+ cart: Record<string, unknown>;
206
+ } & Record<string, unknown>;
207
+ checkout_step: {
208
+ step: string;
209
+ stepNumber: number;
210
+ cart: Record<string, unknown>;
211
+ } & Record<string, unknown>;
212
+ add_shipping_info: {
213
+ cart: Record<string, unknown>;
214
+ shipping: Record<string, unknown>;
215
+ } & Record<string, unknown>;
216
+ add_payment_info: {
217
+ cart: Record<string, unknown>;
218
+ payment: Record<string, unknown>;
219
+ } & Record<string, unknown>;
220
+ purchase: {
221
+ order: Record<string, unknown>;
222
+ } & Record<string, unknown>;
223
+ refund: {
224
+ orderId: string;
225
+ refundId: string;
226
+ amount: number;
227
+ currency: string;
228
+ isFullRefund: boolean;
229
+ } & Record<string, unknown>;
230
+ refund_requested: {
231
+ orderId: string;
232
+ } & Record<string, unknown>;
233
+ refund_approved: {
234
+ refundId: string;
235
+ approvedAmount: number;
236
+ } & Record<string, unknown>;
237
+ refund_denied: {
238
+ refundId: string;
239
+ reason: string;
240
+ } & Record<string, unknown>;
241
+ refund_completed: {
242
+ refundId: string;
243
+ processedAmount: number;
244
+ } & Record<string, unknown>;
245
+ promotion_view: {
246
+ promotionId: string;
247
+ name: string;
248
+ creative: string;
249
+ position: number;
250
+ } & Record<string, unknown>;
251
+ promotion_click: {
252
+ promotionId: string;
253
+ name: string;
254
+ creative: string;
255
+ position: number;
256
+ } & Record<string, unknown>;
257
+ coupon_used: {
258
+ code: string;
259
+ orderId: string;
260
+ discountValue: number;
261
+ discountType: string;
262
+ orderValueBefore: number;
263
+ orderValueAfter: number;
264
+ } & Record<string, unknown>;
265
+ add_to_wishlist: {
266
+ productId: string;
267
+ name: string;
268
+ price: number;
269
+ currency: string;
270
+ } & Record<string, unknown>;
271
+ remove_from_wishlist: {
272
+ productId: string;
273
+ name: string;
274
+ price: number;
275
+ currency: string;
276
+ } & Record<string, unknown>;
277
+ view_wishlist: {
278
+ wishlist: Record<string, unknown>;
279
+ } & Record<string, unknown>;
280
+ wishlist_to_cart: {
281
+ productId: string;
282
+ name: string;
283
+ price: number;
284
+ currency: string;
285
+ } & Record<string, unknown>;
286
+ share_wishlist: {
287
+ wishlistId: string;
288
+ method: string;
289
+ } & Record<string, unknown>;
290
+ subscription_start: {
291
+ subscriptionId: string;
292
+ userId: string;
293
+ plan: string;
294
+ mrr: Record<string, unknown>;
295
+ billingCycle: string;
296
+ } & Record<string, unknown>;
297
+ subscription_change: {
298
+ subscriptionId: string;
299
+ userId: string;
300
+ previousPlan: string;
301
+ newPlan: string;
302
+ previousMrr: Record<string, unknown>;
303
+ newMrr: Record<string, unknown>;
304
+ changeType: string;
305
+ } & Record<string, unknown>;
306
+ subscription_cancel: {
307
+ subscriptionId: string;
308
+ userId: string;
309
+ plan: string;
310
+ lostMrr: Record<string, unknown>;
311
+ immediate: boolean;
312
+ } & Record<string, unknown>;
313
+ subscription_renew: {
314
+ subscriptionId: string;
315
+ userId: string;
316
+ mrr: Record<string, unknown>;
317
+ } & Record<string, unknown>;
318
+ trial_converted: {
319
+ subscriptionId: string;
320
+ userId: string;
321
+ plan: string;
322
+ mrr: Record<string, unknown>;
323
+ } & Record<string, unknown>;
324
+ trial_expired: {
325
+ subscriptionId: string;
326
+ userId: string;
327
+ } & Record<string, unknown>;
328
+ record_acquisition_cost: {
329
+ userId: string;
330
+ cost: Record<string, unknown>;
331
+ channel: string;
332
+ } & Record<string, unknown>;
333
+ update_customer_segment: {
334
+ userId: string;
335
+ newSegment: string;
336
+ } & Record<string, unknown>;
337
+ site_search: {
338
+ query: string;
339
+ resultsCount: number;
340
+ } & Record<string, unknown>;
341
+ search_result_click: {
342
+ query: string;
343
+ position: number;
344
+ productId: string;
345
+ name: string;
346
+ price: number;
347
+ currency: string;
348
+ } & Record<string, unknown>;
349
+ search_refinement: {
350
+ originalQuery: string;
351
+ refinedQuery: string;
352
+ refinementType: string;
353
+ } & Record<string, unknown>;
354
+ search_suggestion: {
355
+ partialQuery: string;
356
+ selectedSuggestion: string;
357
+ suggestionPosition: number;
358
+ } & Record<string, unknown>;
359
+ "engagement.dwell_time": {
360
+ featureId: string;
361
+ dwellTimeMs: number;
362
+ } & Record<string, unknown>;
363
+ "engagement_dwell_time": {
364
+ featureId: string;
365
+ dwellTimeMs: number;
366
+ } & Record<string, unknown>;
367
+ "engagement.session_depth": {
368
+ sessionId: string;
369
+ pagesVisited: number;
370
+ featuresUsed: number;
371
+ actionsTaken: number;
372
+ durationMs: number;
373
+ } & Record<string, unknown>;
374
+ "engagement_session_depth": {
375
+ sessionId: string;
376
+ pagesVisited: number;
377
+ featuresUsed: number;
378
+ actionsTaken: number;
379
+ durationMs: number;
380
+ } & Record<string, unknown>;
381
+ "engagement.content_consumption": {
382
+ contentId: string;
383
+ contentType: string;
384
+ percentageConsumed: number;
385
+ timeSpentMs: number;
386
+ } & Record<string, unknown>;
387
+ "engagement_content_consumption": {
388
+ contentId: string;
389
+ contentType: string;
390
+ percentageConsumed: number;
391
+ timeSpentMs: number;
392
+ } & Record<string, unknown>;
393
+ "engagement.user_activity": {
394
+ userId: string;
395
+ activityType: string;
396
+ durationMs: number;
397
+ } & Record<string, unknown>;
398
+ "engagement_user_activity": {
399
+ userId: string;
400
+ activityType: string;
401
+ durationMs: number;
402
+ } & Record<string, unknown>;
403
+ "churn.usage_decay": {
404
+ userId: string;
405
+ metric: string;
406
+ periods: unknown;
407
+ } & Record<string, unknown>;
408
+ "churn_usage_decay": {
409
+ userId: string;
410
+ metric: string;
411
+ periods: unknown;
412
+ } & Record<string, unknown>;
413
+ "churn.nps": {
414
+ userId: string;
415
+ score: number;
416
+ } & Record<string, unknown>;
417
+ "churn_nps": {
418
+ userId: string;
419
+ score: number;
420
+ } & Record<string, unknown>;
421
+ "churn.churn_event": {
422
+ userId: string;
423
+ churnType: string;
424
+ } & Record<string, unknown>;
425
+ "churn_churn_event": {
426
+ userId: string;
427
+ churnType: string;
428
+ } & Record<string, unknown>;
429
+ "churn.prevention_action": {
430
+ userId: string;
431
+ actionType: string;
432
+ } & Record<string, unknown>;
433
+ "churn_prevention_action": {
434
+ userId: string;
435
+ actionType: string;
436
+ } & Record<string, unknown>;
437
+ "monetization.revenue": {
438
+ userId: string;
439
+ amount: number;
440
+ currency: string;
441
+ type: string;
442
+ } & Record<string, unknown>;
443
+ "monetization_revenue": {
444
+ userId: string;
445
+ amount: number;
446
+ currency: string;
447
+ type: string;
448
+ } & Record<string, unknown>;
449
+ "support.ticket_created": {
450
+ ticketId: string;
451
+ userId: string;
452
+ subject: string;
453
+ category: string;
454
+ priority: string;
455
+ channel: string;
456
+ } & Record<string, unknown>;
457
+ "support_ticket_created": {
458
+ ticketId: string;
459
+ userId: string;
460
+ subject: string;
461
+ category: string;
462
+ priority: string;
463
+ channel: string;
464
+ } & Record<string, unknown>;
465
+ "support.ticket_updated": {
466
+ ticketId: string;
467
+ status: string;
468
+ } & Record<string, unknown>;
469
+ "support_ticket_updated": {
470
+ ticketId: string;
471
+ status: string;
472
+ } & Record<string, unknown>;
473
+ "support.csat": {
474
+ ticketId: string;
475
+ userId: string;
476
+ score: number;
477
+ } & Record<string, unknown>;
478
+ "support_csat": {
479
+ ticketId: string;
480
+ userId: string;
481
+ score: number;
482
+ } & Record<string, unknown>;
483
+ "support.feature_complaint": {
484
+ userId: string;
485
+ featureId: string;
486
+ complaintType: string;
487
+ severity: string;
488
+ } & Record<string, unknown>;
489
+ "support_feature_complaint": {
490
+ userId: string;
491
+ featureId: string;
492
+ complaintType: string;
493
+ severity: string;
494
+ } & Record<string, unknown>;
495
+ "acquisition.acquired": {
496
+ userId: string;
497
+ source: string;
498
+ } & Record<string, unknown>;
499
+ "acquisition_acquired": {
500
+ userId: string;
501
+ source: string;
502
+ } & Record<string, unknown>;
503
+ "acquisition.lifecycle_transition": {
504
+ userId: string;
505
+ fromStage: string;
506
+ toStage: string;
507
+ } & Record<string, unknown>;
508
+ "acquisition_lifecycle_transition": {
509
+ userId: string;
510
+ fromStage: string;
511
+ toStage: string;
512
+ } & Record<string, unknown>;
513
+ "acquisition.campaign_spend": {
514
+ campaignId: string;
515
+ amount: Record<string, unknown>;
516
+ date: string;
517
+ } & Record<string, unknown>;
518
+ "acquisition_campaign_spend": {
519
+ campaignId: string;
520
+ amount: Record<string, unknown>;
521
+ date: string;
522
+ } & Record<string, unknown>;
523
+ "paths.transition": {
524
+ userId: string;
525
+ fromScreen: string;
526
+ toScreen: string;
527
+ } & Record<string, unknown>;
528
+ "paths_transition": {
529
+ userId: string;
530
+ fromScreen: string;
531
+ toScreen: string;
532
+ } & Record<string, unknown>;
533
+ "paths.feature_sequence": {
534
+ userId: string;
535
+ feature: string;
536
+ order: number;
537
+ } & Record<string, unknown>;
538
+ "paths_feature_sequence": {
539
+ userId: string;
540
+ feature: string;
541
+ order: number;
542
+ } & Record<string, unknown>;
543
+ "security.login_attempt": {
544
+ userId: string;
545
+ success: boolean;
546
+ } & Record<string, unknown>;
547
+ "security_login_attempt": {
548
+ userId: string;
549
+ success: boolean;
550
+ } & Record<string, unknown>;
551
+ "security.role_change": {
552
+ userId: string;
553
+ changedBy: string;
554
+ previousRole: string;
555
+ newRole: string;
556
+ } & Record<string, unknown>;
557
+ "security_role_change": {
558
+ userId: string;
559
+ changedBy: string;
560
+ previousRole: string;
561
+ newRole: string;
562
+ } & Record<string, unknown>;
563
+ "security.permission_change": {
564
+ userId: string;
565
+ changedBy: string;
566
+ permission: string;
567
+ action: string;
568
+ } & Record<string, unknown>;
569
+ "security_permission_change": {
570
+ userId: string;
571
+ changedBy: string;
572
+ permission: string;
573
+ action: string;
574
+ } & Record<string, unknown>;
575
+ "security.data_access": {
576
+ userId: string;
577
+ resourceType: string;
578
+ accessType: string;
579
+ } & Record<string, unknown>;
580
+ "security_data_access": {
581
+ userId: string;
582
+ resourceType: string;
583
+ accessType: string;
584
+ } & Record<string, unknown>;
585
+ "security.compliance_event": {
586
+ userId: string;
587
+ eventType: string;
588
+ } & Record<string, unknown>;
589
+ "security_compliance_event": {
590
+ userId: string;
591
+ eventType: string;
592
+ } & Record<string, unknown>;
593
+ "multi_path_funnels.track_step": {
594
+ funnelId: string;
595
+ step: string;
596
+ userId: string;
597
+ } & Record<string, unknown>;
598
+ "multi_path_funnels_track_step": {
599
+ funnelId: string;
600
+ step: string;
601
+ userId: string;
602
+ } & Record<string, unknown>;
603
+ "multi_path_funnels.track_micro_conversion": {
604
+ conversionId: string;
605
+ userId: string;
606
+ } & Record<string, unknown>;
607
+ "multi_path_funnels_track_micro_conversion": {
608
+ conversionId: string;
609
+ userId: string;
610
+ } & Record<string, unknown>;
611
+ }
612
+ /** Union of every event name the `.track()` router recognises. */
613
+ export type FlowGridEventName = keyof FlowGridEventMap;
614
+ type FlowGridKnownTrackFields = Partial<{
615
+ userId: string;
616
+ sessionId: string;
617
+ method: string;
618
+ source: string;
619
+ featureId: string;
620
+ featureName: string;
621
+ action: string;
622
+ promptId: string;
623
+ promptType: string;
624
+ responseTime: number;
625
+ completed: boolean;
626
+ feedbackType: string;
627
+ conversationId: string;
628
+ turnCount: number;
629
+ totalDuration: number;
630
+ experimentId: string;
631
+ variantId: string;
632
+ variant: string;
633
+ metricName: string;
634
+ value: number;
635
+ elementId: string;
636
+ elementText: string;
637
+ formId: string;
638
+ formName: string;
639
+ query: string;
640
+ category: string;
641
+ message: string;
642
+ type: string;
643
+ funnelId: string;
644
+ step: string;
645
+ stepNumber: number;
646
+ lastStep: string;
647
+ channel: string;
648
+ conversionType: string;
649
+ list: Record<string, unknown>;
650
+ product: Record<string, unknown>;
651
+ productId: string;
652
+ name: string;
653
+ price: number;
654
+ currency: string;
655
+ position: number;
656
+ quantity: number;
657
+ previousQuantity: number;
658
+ newQuantity: number;
659
+ cart: Record<string, unknown>;
660
+ shipping: Record<string, unknown>;
661
+ payment: Record<string, unknown>;
662
+ order: Record<string, unknown>;
663
+ orderId: string;
664
+ refundId: string;
665
+ amount: unknown;
666
+ approvedAmount: number;
667
+ processedAmount: number;
668
+ reason: string;
669
+ promotionId: string;
670
+ creative: string;
671
+ code: string;
672
+ discountValue: number;
673
+ discountType: string;
674
+ orderValueBefore: number;
675
+ orderValueAfter: number;
676
+ wishlist: Record<string, unknown>;
677
+ wishlistId: string;
678
+ subscriptionId: string;
679
+ plan: string;
680
+ mrr: Record<string, unknown>;
681
+ billingCycle: string;
682
+ previousPlan: string;
683
+ newPlan: string;
684
+ previousMrr: Record<string, unknown>;
685
+ newMrr: Record<string, unknown>;
686
+ changeType: string;
687
+ lostMrr: Record<string, unknown>;
688
+ cost: Record<string, unknown>;
689
+ newSegment: string;
690
+ resultsCount: number;
691
+ originalQuery: string;
692
+ refinedQuery: string;
693
+ refinementType: string;
694
+ partialQuery: string;
695
+ selectedSuggestion: string;
696
+ suggestionPosition: number;
697
+ dwellTimeMs: number;
698
+ pagesVisited: number;
699
+ featuresUsed: number;
700
+ actionsTaken: number;
701
+ durationMs: number;
702
+ contentId: string;
703
+ contentType: string;
704
+ percentageConsumed: number;
705
+ timeSpentMs: number;
706
+ metric: string;
707
+ periods: unknown;
708
+ score: number;
709
+ churnType: string;
710
+ actionType: string;
711
+ activityType: string;
712
+ ticketId: string;
713
+ subject: string;
714
+ priority: string;
715
+ status: string;
716
+ complaintType: string;
717
+ severity: string;
718
+ fromStage: string;
719
+ toStage: string;
720
+ campaignId: string;
721
+ date: string;
722
+ fromScreen: string;
723
+ toScreen: string;
724
+ feature: string;
725
+ success: boolean;
726
+ isFullRefund: boolean;
727
+ immediate: boolean;
728
+ changedBy: string;
729
+ previousRole: string;
730
+ newRole: string;
731
+ permission: string;
732
+ resourceType: string;
733
+ accessType: string;
734
+ eventType: string;
735
+ conversionId: string;
736
+ }>;
737
+ export type FlowGridTrackProperties = Record<string, unknown> & FlowGridKnownTrackFields;
35
738
  /** Granular auto-instrumentation toggles. */
36
739
  export interface AutoTrackOptions {
37
740
  sessions?: boolean;
@@ -187,17 +890,27 @@ export declare class FlowGrid {
187
890
  static setConsent: typeof FlowGridTransport.setConsent;
188
891
  static hasConsent: typeof FlowGridTransport.hasConsent;
189
892
  /**
190
- * Track a custom event.
893
+ * Track a semantic event. The `eventName` must be one of the recognised
894
+ * {@link FlowGridEventName} literals — TypeScript will error on unknown
895
+ * names and narrow `properties` to the required shape for that event.
191
896
  *
192
897
  * @example
193
898
  * ```ts
194
- * fg.track("signup_completed", { plan: "pro" });
899
+ * fg.track("signup_completed", { userId: "u_1", method: "google" });
900
+ * fg.track("add_to_cart", { productId: "sku_1", name: "Tee", price: 29, currency: "USD", quantity: 1 });
195
901
  * ```
196
902
  */
197
- track(eventName: string, properties?: Record<string, unknown>, options?: {
198
- userId?: string;
199
- sessionId?: string;
200
- }): Promise<import("./features/analytics").EventResponse>;
903
+ track<E extends FlowGridEventName>(eventName: E, properties: FlowGridEventMap[E], options?: FlowGridTrackOptions): unknown;
904
+ private withTrackContext;
905
+ private requireTrackProperties;
906
+ private dispatchTrack;
907
+ private dispatchActivationTrack;
908
+ private dispatchFeatureTrack;
909
+ private dispatchPromptTrack;
910
+ private dispatchExperimentTrack;
911
+ private dispatchAnalyticsTrack;
912
+ private dispatchEcommerceTrack;
913
+ private dispatchEnterpriseTrack;
201
914
  /**
202
915
  * Record an experiment exposure for a user.
203
916
  *