@@ -34,8 +34,15 @@ declare namespace Ytc {
3434 interface ReplayAction {
3535 addChatItemAction ?: AddChatItemAction ;
3636 addBannerToLiveChatCommand ?: AddPinnedAction ;
37- removeBannerForLiveChatCommand ?: unknown ;
37+ removeBannerForLiveChatCommand ?: {
38+ targetActionId : string ;
39+ } ;
3840 addLiveChatTickerItemAction ?: AddTickerAction ;
41+ updateLiveChatPollAction ?: {
42+ pollToUpdate : {
43+ pollRenderer : PollRenderer ;
44+ } ;
45+ } ;
3946 }
4047
4148 /** Expected YTC action object */
@@ -86,6 +93,8 @@ declare namespace Ytc {
8693 text : RunsObj ;
8794 } ;
8895 } ;
96+ /** Used for identifying the banner action */
97+ actionId : string ;
8998 /** Gets used for pinned messages */
9099 bannerProperties ?: BannerPropertiesObj ;
91100 } ;
@@ -276,6 +285,23 @@ declare namespace Ytc {
276285 timestampUsec : IntString ;
277286 }
278287
288+ interface PollRenderer {
289+ liveChatPollId : string ;
290+ header : {
291+ pollHeaderRenderer : {
292+ pollQuestion : RunsObj ;
293+ metadataText : RunsObj ;
294+ thumbnail ?: Thumbnails ;
295+ } ;
296+ } ;
297+ choices : Array < {
298+ text : RunsObj ;
299+ selected : boolean ;
300+ voteRatio ?: number ;
301+ votePercentage ?: SimpleTextObj ;
302+ } > ;
303+ }
304+
279305 type Renderers = TextMessageRenderer | PaidMessageRenderer |
280306 PaidStickerRenderer | MembershipRenderer | MembershipGiftPurchaseRenderer ;
281307
@@ -298,6 +324,8 @@ declare namespace Ytc {
298324 liveChatBannerRedirectRenderer ?: RedirectRenderer ;
299325 /** ??? */
300326 liveChatPlaceholderItemRenderer ?: PlaceholderRenderer ;
327+ /** Poll */
328+ pollRenderer ?: PollRenderer ;
301329 }
302330
303331 interface TickerRenderer { // Doesn't have a timestamp but ID is always a paid message id
@@ -414,6 +442,7 @@ declare namespace Ytc {
414442
415443 interface ParsedPinned {
416444 type : 'pin' ;
445+ actionId : string ;
417446 item : {
418447 header : ParsedRun [ ] ;
419448 contents : ParsedMessage ;
@@ -423,18 +452,19 @@ declare namespace Ytc {
423452
424453 interface ParsedSummary {
425454 type : 'summary' ;
455+ actionId : string ;
426456 item : {
427457 header : ParsedRun [ ] ;
428458 subheader : ParsedRun [ ] ;
429459 message : ParsedRun [ ] ;
430460 } ;
431- id : string ;
432461 showtime : number ;
433462 timestamp ?: string ;
434463 }
435464
436465 interface ParsedRedirect {
437466 type : 'redirect' ;
467+ actionId : string ;
438468 item : {
439469 message : ParsedRun [ ] ;
440470 profileIcon : ParsedImage ;
@@ -447,13 +477,34 @@ declare namespace Ytc {
447477 timestamp ?: string ;
448478 }
449479
480+ interface ParsedPoll {
481+ type : 'poll' ;
482+ actionId : string ;
483+ item : {
484+ profileIcon : ParsedImage ;
485+ header : ParsedRun [ ] ;
486+ question : ParsedRun [ ] ;
487+ choices : Array < {
488+ text : ParsedRun [ ] ;
489+ selected : boolean ;
490+ ratio ?: number ;
491+ percentage ?: string ;
492+ } > ;
493+ } ;
494+ }
495+
496+ interface ParsedRemoveBanner {
497+ type : 'unpin' ;
498+ targetActionId : string ;
499+ }
500+
450501 interface ParsedTicker extends ParsedMessage {
451502 type : 'ticker' ;
452503 tickerDuration : number ;
453504 detailText ?: string ;
454505 }
455506
456- type ParsedMisc = ParsedPinned | ParsedSummary | ParsedRedirect | { type : 'unpin' } ;
507+ type ParsedMisc = ParsedPinned | ParsedSummary | ParsedRedirect | ParsedPoll | ParsedRemoveBanner ;
457508
458509 type ParsedTimedItem = ParsedMessage | ParsedTicker ;
459510
0 commit comments