forked from
jollywhoppers.com/witchsky.app
Bluesky app fork with some witchin' additions 馃挮
1/*
2 * Do not import runtime code into this file
3 */
4
5import {type NotificationReason} from '#/lib/hooks/useNotificationHandler'
6import {type FeedDescriptor} from '#/state/queries/post-feed'
7import {type LiveEventFeedMetricContext} from '#/features/liveEvents/types'
8
9export type Events = {
10 // App events
11 init: {
12 initMs: number
13 }
14 'experiment:viewed': {
15 experimentId: string
16 variationId: string
17 }
18
19 'account:loggedIn': {
20 logContext:
21 | 'LoginForm'
22 | 'SwitchAccount'
23 | 'ChooseAccountForm'
24 | 'Settings'
25 | 'Notification'
26 withPassword: boolean
27 }
28 'account:loggedOut': {
29 logContext:
30 | 'SwitchAccount'
31 | 'Settings'
32 | 'SignupQueued'
33 | 'Deactivated'
34 | 'Takendown'
35 | 'AgeAssuranceNoAccessScreen'
36 scope: 'current' | 'every'
37 }
38 'notifications:openApp': {
39 reason: NotificationReason
40 causedBoot: boolean
41 }
42 'notifications:request': {
43 context: 'StartOnboarding' | 'AfterOnboarding' | 'Login' | 'Home'
44 status: 'granted' | 'denied' | 'undetermined'
45 }
46 'state:background': {
47 secondsActive: number
48 }
49 'state:foreground': {}
50 'router:navigate': {
51 from?: string
52 }
53 'deepLink:referrerReceived': {
54 to: string
55 referrer: string
56 hostname: string
57 }
58
59 // Screen events
60 'splash:signInPressed': {}
61 'splash:createAccountPressed': {}
62 'welcomeModal:signupClicked': {}
63 'welcomeModal:exploreClicked': {}
64 'welcomeModal:signinClicked': {}
65 'welcomeModal:dismissed': {}
66 'welcomeModal:presented': {}
67 'signup:nextPressed': {
68 activeStep: number
69 phoneVerificationRequired?: boolean
70 }
71 'signup:backPressed': {
72 activeStep: number
73 }
74 'signup:captchaSuccess': {}
75 'signup:captchaFailure': {}
76 'signup:fieldError': {
77 field: string
78 errorCount: number
79 errorMessage: string
80 activeStep: number
81 }
82 'signup:backgrounded': {
83 activeStep: number
84 backgroundCount: number
85 }
86 'signup:handleTaken': {typeahead?: boolean}
87 'signup:handleAvailable': {typeahead?: boolean}
88 'signup:handleSuggestionSelected': {method: string}
89 'signin:hostingProviderPressed': {
90 hostingProviderDidChange: boolean
91 }
92 'signin:hostingProviderFailedResolution': {}
93 'signin:success': {
94 failedAttemptsCount: number
95 isUsingCustomProvider: boolean
96 timeTakenSeconds: number
97 }
98 'signin:backPressed': {
99 failedAttemptsCount: number
100 }
101 'signin:forgotPasswordPressed': {}
102 'signin:passwordReset': {}
103 'signin:passwordResetSuccess': {}
104 'signin:passwordResetFailure': {}
105 'onboarding:interests:nextPressed': {
106 selectedInterests: string[]
107 selectedInterestsLength: number
108 }
109 'onboarding:suggestedAccounts:tabPressed': {
110 tab: string
111 }
112 'onboarding:suggestedAccounts:followAllPressed': {
113 tab: string
114 numAccounts: number
115 }
116 'onboarding:suggestedAccounts:nextPressed': {
117 selectedAccountsLength: number
118 skipped: boolean
119 }
120 'onboarding:followingFeed:nextPressed': {}
121 'onboarding:algoFeeds:nextPressed': {
122 selectedPrimaryFeeds: string[]
123 selectedPrimaryFeedsLength: number
124 selectedSecondaryFeeds: string[]
125 selectedSecondaryFeedsLength: number
126 }
127 'onboarding:topicalFeeds:nextPressed': {
128 selectedFeeds: string[]
129 selectedFeedsLength: number
130 }
131 'onboarding:moderation:nextPressed': {}
132 'onboarding:profile:nextPressed': {}
133 'onboarding:finished:nextPressed': {
134 usedStarterPack: boolean
135 starterPackName?: string
136 starterPackCreator?: string
137 starterPackUri?: string
138 profilesFollowed: number
139 feedsPinned: number
140 }
141 'onboarding:finished:avatarResult': {
142 avatarResult: 'default' | 'created' | 'uploaded'
143 }
144 'onboarding:valueProp:stepOne:nextPressed': {}
145 'onboarding:valueProp:stepTwo:nextPressed': {}
146 'onboarding:valueProp:skipPressed': {}
147 'home:feedDisplayed': {
148 feedUrl: string
149 feedType: string
150 index: number
151 reason?: string
152 }
153 'feed:endReached': {
154 feedUrl: string
155 feedType: string
156 itemCount: number
157 }
158 'feed:refresh': {
159 feedUrl: string
160 feedType: string
161 reason: 'pull-to-refresh' | 'soft-reset' | 'load-latest'
162 }
163 'feed:save': {
164 feedUrl: string
165 }
166 'feed:unsave': {
167 feedUrl: string
168 }
169 'feed:pin': {
170 feedUrl: string
171 }
172 'feed:unpin': {
173 feedUrl: string
174 }
175 'feed:like': {
176 feedUrl: string
177 }
178 'feed:unlike': {
179 feedUrl: string
180 }
181 'feed:share': {
182 feedUrl: string
183 }
184 'feed:suggestion:seen': {
185 feedUrl: string
186 }
187 'feed:suggestion:press': {
188 feedUrl: string
189 }
190 'post:showMore': {
191 uri: string
192 authorDid: string
193 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
194 feedDescriptor?: string
195 position?: number
196 }
197 'post:showLess': {
198 uri: string
199 authorDid: string
200 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
201 feedDescriptor?: string
202 position?: number
203 }
204 'feed:clickthrough': {
205 feed: string
206 count: number
207 }
208 'feed:engaged': {
209 feed: string
210 count: number
211 }
212 'feed:seen': {
213 feed: string
214 count: number
215 }
216
217 'feed:discover:emptyError': {
218 userDid: string
219 }
220
221 'composer:gif:open': {}
222 'composer:gif:select': {}
223 'composerPrompt:press': {}
224 'composerPrompt:camera:press': {}
225 'composerPrompt:gallery:press': {}
226
227 'composer:threadgate:open': {
228 nudged: boolean
229 }
230 'composer:threadgate:save': {
231 replyOptions: string
232 quotesEnabled: boolean
233 persist: boolean
234 hasChanged: boolean
235 }
236
237 // Data events
238 'account:create:begin': {}
239 'account:create:success': {
240 signupDuration: number
241 fieldErrorsTotal: number
242 backgroundCount: number
243 }
244 'post:create': {
245 imageCount: number
246 isReply: boolean
247 isPartOfThread: boolean
248 hasLink: boolean
249 hasQuote: boolean
250 langs: string
251 logContext: 'Composer'
252 }
253 'thread:create': {
254 postCount: number
255 isReply: boolean
256 }
257 'post:like': {
258 uri: string
259 authorDid: string
260 doesLikerFollowPoster: boolean | undefined
261 doesPosterFollowLiker: boolean | undefined
262 likerClout: number | undefined
263 postClout: number | undefined
264 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
265 feedDescriptor?: string
266 }
267 'post:repost': {
268 uri: string
269 authorDid: string
270 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
271 feedDescriptor?: string
272 }
273 'post:unlike': {
274 uri: string
275 authorDid: string
276 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
277 feedDescriptor?: string
278 }
279 'post:unrepost': {
280 uri: string
281 authorDid: string
282 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
283 feedDescriptor?: string
284 }
285 'post:mute': {
286 uri: string
287 authorDid: string
288 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
289 feedDescriptor?: string
290 position?: number
291 }
292 'post:unmute': {
293 uri: string
294 authorDid: string
295 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
296 feedDescriptor?: string
297 position?: number
298 }
299 'post:pin': {}
300 'post:unpin': {}
301 'post:bookmark': {
302 uri: string
303 authorDid: string
304 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
305 feedDescriptor?: string
306 position?: number
307 }
308 'post:unbookmark': {
309 uri: string
310 authorDid: string
311 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
312 feedDescriptor?: string
313 position?: number
314 }
315 'post:clickReply': {
316 uri: string
317 authorDid: string
318 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
319 feedDescriptor?: string
320 position?: number
321 }
322 'post:clickQuotePost': {
323 uri: string
324 authorDid: string
325 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
326 feedDescriptor?: string
327 position?: number
328 }
329 'post:clickthroughAuthor': {
330 uri: string
331 authorDid: string
332 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
333 feedDescriptor?: string
334 position?: number
335 }
336 'post:clickthroughItem': {
337 uri: string
338 authorDid: string
339 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
340 feedDescriptor?: string
341 position?: number
342 }
343 'post:clickthroughEmbed': {
344 uri: string
345 authorDid: string
346 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
347 feedDescriptor?: string
348 position?: number
349 }
350 'post:view': {
351 uri: string
352 authorDid: string
353 logContext:
354 | 'FeedItem'
355 | 'PostThreadItem'
356 | 'Post'
357 | 'ImmersiveVideo'
358 | 'SearchResults'
359 | 'Bookmarks'
360 | 'Notifications'
361 | 'Hashtag'
362 | 'Topic'
363 | 'PostQuotes'
364 feedDescriptor?: string
365 position?: number
366 }
367 'bookmarks:view': {}
368 'bookmarks:post-clicked': {}
369 'profile:follow': {
370 contextProfileDid?: string
371 didBecomeMutual: boolean | undefined
372 followeeClout: number | undefined
373 followeeDid: string
374 followerClout: number | undefined
375 position?: number
376 logContext:
377 | 'RecommendedFollowsItem'
378 | 'PostThreadItem'
379 | 'ProfileCard'
380 | 'ProfileHeader'
381 | 'ProfileHeaderSuggestedFollows'
382 | 'ProfileMenu'
383 | 'ProfileHoverCard'
384 | 'AvatarButton'
385 | 'StarterPackProfilesList'
386 | 'FeedInterstitial'
387 | 'PostOnboardingFindFollows'
388 | 'ImmersiveVideo'
389 | 'ExploreSuggestedAccounts'
390 | 'OnboardingSuggestedAccounts'
391 | 'FindContacts'
392 }
393 'profile:followers:view': {
394 contextProfileDid: string
395 isOwnProfile: boolean
396 }
397 'profile:followers:paginate': {
398 contextProfileDid: string
399 itemCount: number
400 page: number
401 }
402 'profile:following:view': {
403 contextProfileDid: string
404 isOwnProfile: boolean
405 }
406 'profile:following:paginate': {
407 contextProfileDid: string
408 itemCount: number
409 page: number
410 }
411 'profileCard:seen': {
412 contextProfileDid?: string
413 profileDid: string
414 position?: number
415 }
416 'suggestedUser:follow': {
417 logContext:
418 | 'Explore'
419 | 'InterstitialDiscover'
420 | 'InterstitialProfile'
421 | 'Profile'
422 | 'Onboarding'
423 location: 'Card' | 'Profile'
424 recId?: number
425 position: number
426 suggestedDid: string
427 category: string | null
428 }
429 'suggestedUser:press': {
430 logContext:
431 | 'Explore'
432 | 'InterstitialDiscover'
433 | 'InterstitialProfile'
434 | 'Onboarding'
435 recId?: number
436 position: number
437 suggestedDid: string
438 category: string | null
439 }
440 'suggestedUser:seen': {
441 logContext:
442 | 'Explore'
443 | 'InterstitialDiscover'
444 | 'InterstitialProfile'
445 | 'Profile'
446 | 'Onboarding'
447 | 'ProgressGuide'
448 recId?: number
449 position: number
450 suggestedDid: string
451 category: string | null
452 }
453 'suggestedUser:seeMore': {
454 logContext:
455 | 'Explore'
456 | 'InterstitialDiscover'
457 | 'InterstitialProfile'
458 | 'Profile'
459 | 'Onboarding'
460 }
461 'suggestedUser:dismiss': {
462 logContext: 'InterstitialDiscover' | 'InterstitialProfile'
463 recId?: number
464 position: number
465 suggestedDid: string
466 }
467 'profile:unfollow': {
468 logContext:
469 | 'RecommendedFollowsItem'
470 | 'PostThreadItem'
471 | 'ProfileCard'
472 | 'ProfileHeader'
473 | 'ProfileHeaderSuggestedFollows'
474 | 'ProfileMenu'
475 | 'ProfileHoverCard'
476 | 'Chat'
477 | 'AvatarButton'
478 | 'StarterPackProfilesList'
479 | 'FeedInterstitial'
480 | 'PostOnboardingFindFollows'
481 | 'ImmersiveVideo'
482 | 'ExploreSuggestedAccounts'
483 | 'OnboardingSuggestedAccounts'
484 | 'FindContacts'
485 }
486 'chat:create': {
487 logContext: 'ProfileHeader' | 'NewChatDialog' | 'SendViaChatDialog'
488 }
489 'chat:open': {
490 logContext:
491 | 'ProfileHeader'
492 | 'NewChatDialog'
493 | 'ChatsList'
494 | 'SendViaChatDialog'
495 }
496 'starterPack:addUser': {
497 starterPack?: string
498 }
499 'starterPack:removeUser': {
500 starterPack?: string
501 }
502 'starterPack:share': {
503 starterPack: string
504 shareType: 'link' | 'qrcode'
505 qrShareType?: 'save' | 'copy' | 'share'
506 }
507 'starterPack:followAll': {
508 logContext: 'StarterPackProfilesList' | 'Onboarding'
509 starterPack: string
510 count: number
511 }
512 'starterPack:delete': {}
513 'starterPack:create': {
514 setName: boolean
515 setDescription: boolean
516 profilesCount: number
517 feedsCount: number
518 }
519 'starterPack:ctaPress': {
520 starterPack: string
521 }
522 'starterPack:opened': {
523 starterPack: string
524 }
525 'link:clicked': {
526 url: string
527 domain: string
528 }
529
530 'feed:interstitial:feedCard:press': {}
531 'desktopFeeds:feed:click': {
532 feedUri: string
533 feedDescriptor: string
534 }
535
536 'profile:header:suggestedFollowsCard:press': {}
537 'profile:addToStarterPack': {}
538
539 'test:all:always': {}
540 'test:all:sometimes': {}
541 'test:all:boosted_by_gate1': {reason: 'base' | 'gate1'}
542 'test:all:boosted_by_gate2': {reason: 'base' | 'gate2'}
543 'test:all:boosted_by_both': {reason: 'base' | 'gate1' | 'gate2'}
544 'test:gate1:always': {}
545 'test:gate1:sometimes': {}
546 'test:gate2:always': {}
547 'test:gate2:sometimes': {}
548
549 'tmd:share': {}
550 'tmd:download': {}
551 'tmd:post': {}
552
553 'trendingTopics:show': {
554 context: 'settings'
555 }
556 'trendingTopics:hide': {
557 context: 'settings' | 'sidebar' | 'interstitial' | 'explore:trending'
558 }
559 'trendingTopic:click': {
560 context: 'sidebar' | 'interstitial' | 'explore'
561 }
562 'recommendedTopic:click': {
563 context: 'explore'
564 }
565 'trendingVideos:show': {
566 context: 'settings'
567 }
568 'trendingVideos:hide': {
569 context: 'settings' | 'interstitial:discover' | 'interstitial:explore'
570 }
571 'videoCard:click': {
572 context: 'interstitial:discover' | 'interstitial:explore' | 'feed'
573 }
574
575 'explore:module:seen': {
576 module:
577 | 'trendingTopics'
578 | 'trendingVideos'
579 | 'suggestedAccounts'
580 | 'suggestedFeeds'
581 | 'suggestedStarterPacks'
582 | `feed:${FeedDescriptor}`
583 }
584 'explore:module:searchButtonPress': {
585 module: 'suggestedAccounts' | 'suggestedFeeds'
586 }
587 'explore:suggestedAccounts:tabPressed': {
588 tab: string
589 }
590
591 'progressGuide:hide': {}
592 'progressGuide:followDialog:open': {}
593
594 'moderation:subscribedToLabeler': {}
595 'moderation:unsubscribedFromLabeler': {}
596 'moderation:changeLabelPreference': {
597 preference: string
598 }
599
600 'moderation:subscribedToList': {
601 listType: 'mute' | 'block'
602 }
603 'moderation:unsubscribedFromList': {
604 listType: 'mute' | 'block'
605 }
606
607 'reportDialog:open': {
608 subjectType: string
609 }
610 'reportDialog:close': {}
611 'reportDialog:success': {
612 reason: string
613 labeler: string
614 details: boolean
615 }
616 'reportDialog:failure': {}
617
618 translate: {
619 sourceLanguages: string[]
620 targetLanguage: string
621 textLength: number
622 }
623
624 'verification:create': {}
625 'verification:revoke': {}
626 'verification:badge:click': {}
627 'verification:learn-more': {
628 location:
629 | 'initialAnnouncementeNux'
630 | 'verificationsDialog'
631 | 'verifierDialog'
632 | 'verificationSettings'
633 }
634 'verification:settings:hideBadges': {}
635 'verification:settings:unHideBadges': {}
636
637 'live:create': {duration: number}
638 'live:edit': {}
639 'live:remove': {}
640 'live:card:open': {subject: string; from: 'post' | 'profile'}
641 'live:card:watch': {subject: string}
642 'live:card:openProfile': {subject: string}
643 'live:card:viewAvatar': {subject: string}
644 'live:view:profile': {subject: string}
645 'live:view:post': {subject: string; feed?: string}
646
647 'post:share': {
648 uri: string
649 authorDid: string
650 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
651 feedDescriptor?: string
652 postContext: 'feed' | 'thread'
653 position?: number
654 }
655 'share:press:copyLink': {}
656 'share:press:nativeShare': {}
657 'share:press:openDmSearch': {}
658 'share:press:dmSelected': {}
659 'share:press:recentDm': {}
660 'share:press:embed': {}
661
662 'thread:click:showOtherReplies': {}
663 'thread:click:hideReplyForMe': {}
664 'thread:click:hideReplyForEveryone': {}
665 'thread:preferences:load': {
666 [key: string]: any
667 }
668 'thread:preferences:update': {
669 [key: string]: any
670 }
671 'thread:click:headerMenuOpen': {}
672 'thread:click:editOwnThreadgate': {}
673 'thread:click:viewSomeoneElsesThreadgate': {}
674 'activitySubscription:enable': {
675 setting: 'posts' | 'posts_and_replies'
676 }
677 'activitySubscription:disable': {}
678 'activityPreference:changeChannels': {
679 name: string
680 push: boolean
681 list: boolean
682 }
683 'activityPreference:changeFilter': {
684 name: string
685 value: string
686 }
687
688 'ageAssurance:navigateToSettings': {}
689 'ageAssurance:dismissFeedBanner': {}
690 'ageAssurance:dismissSettingsNotice': {}
691 'ageAssurance:initDialogOpen': {
692 hasInitiatedPreviously: boolean
693 }
694 'ageAssurance:initDialogSubmit': {}
695 'ageAssurance:api:begin': {
696 platform: string
697 countryCode: string
698 regionCode?: string
699 }
700 'ageAssurance:initDialogError': {
701 code: string
702 }
703 'ageAssurance:redirectDialogOpen': {}
704 'ageAssurance:redirectDialogSuccess': {}
705 'ageAssurance:redirectDialogFail': {}
706 'ageAssurance:appealDialogOpen': {}
707 'ageAssurance:appealDialogSubmit': {}
708 'ageAssurance:noAccessScreen:shown': {
709 accountCreatedAt: string
710 isAARegion: boolean
711 hasDeclaredAge: boolean
712 canUpdateBirthday: boolean
713 }
714 'ageAssurance:noAccessScreen:openBirthdateDialog': {}
715
716 /*
717 * Specifically for the `BlockedGeoOverlay`
718 */
719 'blockedGeoOverlay:shown': {}
720
721 'geo:debug': {}
722
723 /*
724 * Find Contacts stuff
725 */
726
727 // user presses the button on the new feature NUX
728 'contacts:nux:ctaPressed': {}
729 // user presses the banner NUX
730 'contacts:nux:bannerPressed': {}
731 // user dismisses the banner
732 'contacts:nux:bannerDismissed': {}
733
734 // user lands on the contacts step
735 'onboarding:contacts:presented': {}
736 // user pressed "Import Contacts" button to begin flow
737 'onboarding:contacts:begin': {}
738 // skips the step entirely
739 'onboarding:contacts:skipPressed': {}
740 // user shared their contacts
741 'onboarding:contacts:contactsShared': {}
742 // user leaves the matches page
743 'onboarding:contacts:nextPressed': {
744 matchCount: number
745 followCount: number
746 dismissedMatchCount: number
747 }
748
749 // user entered a number
750 'contacts:phone:phoneEntered': {
751 entryPoint: 'Onboarding' | 'Standalone'
752 }
753 // user entered the correct one-time-code
754 'contacts:phone:phoneVerified': {
755 entryPoint: 'Onboarding' | 'Standalone'
756 }
757 // user responded to the contacts permission prompt
758 'contacts:permission:request': {
759 status: 'granted' | 'denied'
760 accessLevelIOS?: 'all' | 'limited' | 'none'
761 }
762 // contacts were successfully imported and matched
763 'contacts:import:success': {
764 contactCount: number
765 matchCount: number
766 entryPoint: 'Onboarding' | 'Standalone'
767 }
768 // contacts import failed
769 'contacts:import:failure': {
770 reason: 'noValidNumbers' | 'networkError' | 'unknown'
771 entryPoint: 'Onboarding' | 'Standalone'
772 }
773 // user followed a single match
774 'contacts:matches:follow': {
775 entryPoint: 'Onboarding' | 'Standalone'
776 }
777 // user pressed "Follow All" on matches
778 'contacts:matches:followAll': {
779 followCount: number
780 entryPoint: 'Onboarding' | 'Standalone'
781 }
782 // user dismissed a match
783 'contacts:matches:dismiss': {
784 entryPoint: 'Onboarding' | 'Standalone'
785 }
786 // user pressed invite to send an SMS to a non-match
787 'contacts:matches:invite': {
788 entryPoint: 'Onboarding' | 'Standalone'
789 }
790 // user opened the Find Contacts settings screen
791 'contacts:settings:presented': {
792 hasPreviouslySynced: boolean
793 matchCount?: number
794 }
795 // user followed a single match from settings
796 'contacts:settings:follow': {}
797 // user pressed "Follow All" from settings
798 'contacts:settings:followAll': {
799 followCount: number
800 }
801 // user dismissed a match from settings
802 'contacts:settings:dismiss': {}
803 // user re-entered the flow via the resync button
804 'contacts:settings:resync': {
805 daysSinceLastSync: number
806 }
807 // user pressed the remove all data button
808 'contacts:settings:removeData': {}
809
810 'liveEvents:feedBanner:seen': {
811 feed: string
812 context: LiveEventFeedMetricContext
813 }
814 'liveEvents:feedBanner:click': {
815 feed: string
816 context: LiveEventFeedMetricContext
817 }
818 'liveEvents:feedBanner:hide': {
819 feed: string
820 context: LiveEventFeedMetricContext
821 }
822 'liveEvents:feedBanner:unhide': {
823 feed: string
824 context: LiveEventFeedMetricContext
825 }
826 'liveEvents:hideAllFeedBanners': {
827 context: LiveEventFeedMetricContext
828 }
829 'liveEvents:unhideAllFeedBanners': {
830 context: LiveEventFeedMetricContext
831 }
832}