@zaflun/lumio-protocol 0.6.0 → 0.10.0

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.
package/dist/index.d.ts CHANGED
@@ -53,7 +53,6 @@ declare const extensionConfigSchema: z.ZodObject<{
53
53
  target: z.ZodEnum<{
54
54
  editor: "editor";
55
55
  layer: "layer";
56
- interactive: "interactive";
57
56
  }>;
58
57
  permissions: z.ZodArray<z.ZodString>;
59
58
  settings: z.ZodRecord<z.ZodString, z.ZodUnknown>;
@@ -70,7 +69,6 @@ declare const initMessageSchema: z.ZodObject<{
70
69
  target: z.ZodEnum<{
71
70
  editor: "editor";
72
71
  layer: "layer";
73
- interactive: "interactive";
74
72
  }>;
75
73
  permissions: z.ZodArray<z.ZodString>;
76
74
  settings: z.ZodRecord<z.ZodString, z.ZodUnknown>;
@@ -108,7 +106,6 @@ declare const configUpdateMessageSchema: z.ZodObject<{
108
106
  target: z.ZodOptional<z.ZodEnum<{
109
107
  editor: "editor";
110
108
  layer: "layer";
111
- interactive: "interactive";
112
109
  }>>;
113
110
  permissions: z.ZodOptional<z.ZodArray<z.ZodString>>;
114
111
  settings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
@@ -192,7 +189,6 @@ declare const lumioMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
192
189
  target: z.ZodEnum<{
193
190
  editor: "editor";
194
191
  layer: "layer";
195
- interactive: "interactive";
196
192
  }>;
197
193
  permissions: z.ZodArray<z.ZodString>;
198
194
  settings: z.ZodRecord<z.ZodString, z.ZodUnknown>;
@@ -228,7 +224,6 @@ declare const lumioMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
228
224
  target: z.ZodOptional<z.ZodEnum<{
229
225
  editor: "editor";
230
226
  layer: "layer";
231
- interactive: "interactive";
232
227
  }>>;
233
228
  permissions: z.ZodOptional<z.ZodArray<z.ZodString>>;
234
229
  settings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
@@ -288,16 +283,20 @@ declare const lumioMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
288
283
  }, z.core.$strip>], "type">;
289
284
  type LumioMessage = z.infer<typeof lumioMessageSchema>;
290
285
 
291
- declare const LUMIO_EVENT_TYPES: readonly ["twitch:follower", "twitch:subscribe", "twitch:gift_sub", "twitch:resub", "twitch:cheer", "twitch:raid", "twitch:reward", "twitch:hype_train", "twitch:hype_train_end", "twitch:poll", "twitch:poll_end", "twitch:prediction", "twitch:prediction_lock", "twitch:prediction_end", "twitch:goal", "twitch:goal_end", "twitch:ad_break", "twitch:ban", "twitch:unban", "twitch:stream_online", "twitch:stream_offline", "twitch:stream_update", "youtube:subscribe", "youtube:member", "youtube:superchat", "youtube:supersticker", "youtube:gift_membership", "youtube:gift_membership_received", "youtube:poll", "youtube:stream_online", "youtube:stream_offline", "kick:follower", "kick:subscribe", "kick:resub", "kick:gift", "kick:kicks", "kick:reward", "kick:reward_status", "kick:stream_online", "kick:stream_offline", "kick:stream_update", "spotify:track", "spotify:play", "spotify:pause", "spotify:skip", "spotify:volume", "spotify:queue_add", "spotify:device", "spotify:playlist_add", "spotify:playlist_remove", "spotify:playlist_create", "spotify:playlist_edit", "spotify:playlist_delete", "streamelements:tip", "twitch:chat", "youtube:chat", "kick:chat", "chat:message"];
286
+ declare const LUMIO_EVENT_TYPES: readonly ["twitch:follower", "twitch:subscribe", "twitch:gift", "twitch:resub", "twitch:cheer", "twitch:raid", "twitch:reward", "twitch:reward_status", "twitch:reward_add", "twitch:reward_update", "twitch:reward_remove", "twitch:hype_train", "twitch:hype_train_end", "twitch:poll", "twitch:poll_end", "twitch:prediction", "twitch:prediction_lock", "twitch:prediction_end", "twitch:goal", "twitch:goal_end", "twitch:ad_break", "twitch:ban", "twitch:unban", "twitch:stream_online", "twitch:stream_offline", "twitch:stream_update", "youtube:subscribe", "youtube:member", "youtube:superchat", "youtube:supersticker", "youtube:gift_membership", "youtube:gift_membership_received", "youtube:poll", "youtube:stream_online", "youtube:stream_offline", "kick:follower", "kick:subscribe", "kick:resub", "kick:gift", "kick:kicks", "kick:reward", "kick:reward_status", "kick:stream_online", "kick:stream_offline", "kick:stream_update", "spotify:track", "spotify:play", "spotify:pause", "spotify:skip", "spotify:volume", "spotify:queue_add", "spotify:device", "spotify:playlist_add", "spotify:playlist_remove", "spotify:playlist_create", "spotify:playlist_edit", "spotify:playlist_delete", "streamelements:tip", "shopify:order", "shopify:order_paid", "shopify:product", "twitch:chat", "youtube:chat", "kick:chat", "chat:message"];
292
287
  type LumioEventType = (typeof LUMIO_EVENT_TYPES)[number];
293
288
  declare const lumioEventTypeSchema: z.ZodEnum<{
294
289
  "twitch:follower": "twitch:follower";
295
290
  "twitch:subscribe": "twitch:subscribe";
296
- "twitch:gift_sub": "twitch:gift_sub";
291
+ "twitch:gift": "twitch:gift";
297
292
  "twitch:resub": "twitch:resub";
298
293
  "twitch:cheer": "twitch:cheer";
299
294
  "twitch:raid": "twitch:raid";
300
295
  "twitch:reward": "twitch:reward";
296
+ "twitch:reward_status": "twitch:reward_status";
297
+ "twitch:reward_add": "twitch:reward_add";
298
+ "twitch:reward_update": "twitch:reward_update";
299
+ "twitch:reward_remove": "twitch:reward_remove";
301
300
  "twitch:hype_train": "twitch:hype_train";
302
301
  "twitch:hype_train_end": "twitch:hype_train_end";
303
302
  "twitch:poll": "twitch:poll";
@@ -345,6 +344,9 @@ declare const lumioEventTypeSchema: z.ZodEnum<{
345
344
  "spotify:playlist_edit": "spotify:playlist_edit";
346
345
  "spotify:playlist_delete": "spotify:playlist_delete";
347
346
  "streamelements:tip": "streamelements:tip";
347
+ "shopify:order": "shopify:order";
348
+ "shopify:order_paid": "shopify:order_paid";
349
+ "shopify:product": "shopify:product";
348
350
  "twitch:chat": "twitch:chat";
349
351
  "youtube:chat": "youtube:chat";
350
352
  "kick:chat": "kick:chat";
@@ -395,12 +397,1322 @@ interface SoundStopEvent {
395
397
  declare const STORAGE_SCOPES: readonly ["instance", "overlay", "account", "global"];
396
398
  type StorageScope = (typeof STORAGE_SCOPES)[number];
397
399
  declare const storageScopeSchema: z.ZodEnum<{
398
- overlay: "overlay";
399
400
  instance: "instance";
401
+ overlay: "overlay";
400
402
  account: "account";
401
403
  global: "global";
402
404
  }>;
403
405
 
406
+ /**
407
+ * A `chat:moderation_log` frame (`twitch:ban`, `twitch:unban`). It arrives on
408
+ * the chat channel; forwarding it as an extension event is ZAF-3074.
409
+ */
410
+ declare const moderationLogEntry: z.ZodObject<{
411
+ action: z.ZodString;
412
+ platform: z.ZodString;
413
+ target_user_id: z.ZodNullable<z.ZodString>;
414
+ target_username: z.ZodNullable<z.ZodString>;
415
+ target_display_name: z.ZodNullable<z.ZodString>;
416
+ moderator_name: z.ZodString;
417
+ moderator_login: z.ZodNullable<z.ZodString>;
418
+ reason: z.ZodNullable<z.ZodString>;
419
+ duration_secs: z.ZodNullable<z.ZodNumber>;
420
+ ends_at: z.ZodNullable<z.ZodString>;
421
+ target_message_id: z.ZodNullable<z.ZodString>;
422
+ created_at: z.ZodString;
423
+ }, z.core.$loose>;
424
+ /** A chat message as the backend broadcasts it (`ChatMessageInput`). */
425
+ declare const chatMessagePayloadSchema: z.ZodObject<{
426
+ account_id: z.ZodString;
427
+ platform: z.ZodString;
428
+ channel_name: z.ZodNullable<z.ZodString>;
429
+ user_id: z.ZodNullable<z.ZodString>;
430
+ username: z.ZodString;
431
+ display_name: z.ZodNullable<z.ZodString>;
432
+ avatar_url: z.ZodNullable<z.ZodString>;
433
+ message: z.ZodString;
434
+ emotes: z.ZodNullable<z.ZodArray<z.ZodUnknown>>;
435
+ gifs: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
436
+ badges: z.ZodNullable<z.ZodArray<z.ZodUnknown>>;
437
+ color: z.ZodNullable<z.ZodString>;
438
+ is_mod: z.ZodBoolean;
439
+ is_sub: z.ZodBoolean;
440
+ is_vip: z.ZodBoolean;
441
+ sub_tier: z.ZodNullable<z.ZodString>;
442
+ platform_message_id: z.ZodNullable<z.ZodString>;
443
+ lumio_user_id: z.ZodNullable<z.ZodString>;
444
+ reply_parent_msg_id: z.ZodNullable<z.ZodString>;
445
+ reply_parent_username: z.ZodNullable<z.ZodString>;
446
+ reply_parent_login: z.ZodNullable<z.ZodString>;
447
+ reply_parent_message: z.ZodNullable<z.ZodString>;
448
+ created_at: z.ZodNullable<z.ZodString>;
449
+ message_type: z.ZodNullable<z.ZodString>;
450
+ user_treatment: z.ZodNullable<z.ZodString>;
451
+ live_chat_id: z.ZodOptional<z.ZodString>;
452
+ is_shared_chat: z.ZodOptional<z.ZodBoolean>;
453
+ source_channel: z.ZodOptional<z.ZodUnknown>;
454
+ announcement_color: z.ZodOptional<z.ZodUnknown>;
455
+ }, z.core.$loose>;
456
+ declare const LUMIO_EVENT_PAYLOAD_SCHEMAS: {
457
+ readonly "twitch:follower": z.ZodObject<{
458
+ followed_at: z.ZodString;
459
+ avatarUrl: z.ZodOptional<z.ZodString>;
460
+ user_id: z.ZodString;
461
+ user_login: z.ZodString;
462
+ user_name: z.ZodString;
463
+ broadcaster_user_id: z.ZodString;
464
+ broadcaster_user_login: z.ZodString;
465
+ broadcaster_user_name: z.ZodString;
466
+ }, z.core.$loose>;
467
+ readonly "twitch:subscribe": z.ZodObject<{
468
+ tier: z.ZodString;
469
+ duration_months: z.ZodNumber;
470
+ is_prime: z.ZodOptional<z.ZodBoolean>;
471
+ sub: z.ZodObject<{
472
+ sub_tier: z.ZodString;
473
+ is_prime: z.ZodBoolean;
474
+ duration_months: z.ZodNumber;
475
+ }, z.core.$loose>;
476
+ chatter_user_id: z.ZodString;
477
+ chatter_user_login: z.ZodString;
478
+ chatter_user_name: z.ZodString;
479
+ chatter_is_anonymous: z.ZodBoolean;
480
+ color: z.ZodString;
481
+ badges: z.ZodArray<z.ZodObject<{
482
+ set_id: z.ZodString;
483
+ id: z.ZodString;
484
+ info: z.ZodString;
485
+ }, z.core.$loose>>;
486
+ message: z.ZodObject<{
487
+ text: z.ZodString;
488
+ fragments: z.ZodArray<z.ZodUnknown>;
489
+ }, z.core.$loose>;
490
+ message_id: z.ZodString;
491
+ notice_type: z.ZodString;
492
+ system_message: z.ZodString;
493
+ emotes: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
494
+ avatarUrl: z.ZodOptional<z.ZodString>;
495
+ user_id: z.ZodString;
496
+ user_login: z.ZodString;
497
+ user_name: z.ZodString;
498
+ broadcaster_user_id: z.ZodString;
499
+ broadcaster_user_login: z.ZodString;
500
+ broadcaster_user_name: z.ZodString;
501
+ }, z.core.$loose>;
502
+ readonly "twitch:gift": z.ZodObject<{
503
+ tier: z.ZodOptional<z.ZodString>;
504
+ duration_months: z.ZodOptional<z.ZodNumber>;
505
+ total: z.ZodOptional<z.ZodNumber>;
506
+ cumulative_total: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
507
+ community_gift_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
508
+ recipient_user_id: z.ZodOptional<z.ZodString>;
509
+ recipient_user_login: z.ZodOptional<z.ZodString>;
510
+ recipient_user_name: z.ZodOptional<z.ZodString>;
511
+ chatter_user_id: z.ZodString;
512
+ chatter_user_login: z.ZodString;
513
+ chatter_user_name: z.ZodString;
514
+ chatter_is_anonymous: z.ZodBoolean;
515
+ color: z.ZodString;
516
+ badges: z.ZodArray<z.ZodObject<{
517
+ set_id: z.ZodString;
518
+ id: z.ZodString;
519
+ info: z.ZodString;
520
+ }, z.core.$loose>>;
521
+ message: z.ZodObject<{
522
+ text: z.ZodString;
523
+ fragments: z.ZodArray<z.ZodUnknown>;
524
+ }, z.core.$loose>;
525
+ message_id: z.ZodString;
526
+ notice_type: z.ZodString;
527
+ system_message: z.ZodString;
528
+ emotes: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
529
+ avatarUrl: z.ZodOptional<z.ZodString>;
530
+ user_id: z.ZodString;
531
+ user_login: z.ZodString;
532
+ user_name: z.ZodString;
533
+ broadcaster_user_id: z.ZodString;
534
+ broadcaster_user_login: z.ZodString;
535
+ broadcaster_user_name: z.ZodString;
536
+ }, z.core.$loose>;
537
+ readonly "twitch:resub": z.ZodObject<{
538
+ cumulative_months: z.ZodNumber;
539
+ duration_months: z.ZodNumber;
540
+ streak_months: z.ZodNullable<z.ZodNumber>;
541
+ is_gift: z.ZodBoolean;
542
+ tier: z.ZodOptional<z.ZodString>;
543
+ is_prime: z.ZodOptional<z.ZodBoolean>;
544
+ gifter_is_anonymous: z.ZodNullable<z.ZodBoolean>;
545
+ gifter_user_login: z.ZodNullable<z.ZodString>;
546
+ gifter_user_name: z.ZodNullable<z.ZodString>;
547
+ resub: z.ZodObject<{
548
+ cumulative_months: z.ZodNumber;
549
+ duration_months: z.ZodNumber;
550
+ streak_months: z.ZodNullable<z.ZodNumber>;
551
+ sub_plan: z.ZodString;
552
+ is_gift: z.ZodBoolean;
553
+ }, z.core.$loose>;
554
+ chatter_user_id: z.ZodString;
555
+ chatter_user_login: z.ZodString;
556
+ chatter_user_name: z.ZodString;
557
+ chatter_is_anonymous: z.ZodBoolean;
558
+ color: z.ZodString;
559
+ badges: z.ZodArray<z.ZodObject<{
560
+ set_id: z.ZodString;
561
+ id: z.ZodString;
562
+ info: z.ZodString;
563
+ }, z.core.$loose>>;
564
+ message: z.ZodObject<{
565
+ text: z.ZodString;
566
+ fragments: z.ZodArray<z.ZodUnknown>;
567
+ }, z.core.$loose>;
568
+ message_id: z.ZodString;
569
+ notice_type: z.ZodString;
570
+ system_message: z.ZodString;
571
+ emotes: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
572
+ avatarUrl: z.ZodOptional<z.ZodString>;
573
+ user_id: z.ZodString;
574
+ user_login: z.ZodString;
575
+ user_name: z.ZodString;
576
+ broadcaster_user_id: z.ZodString;
577
+ broadcaster_user_login: z.ZodString;
578
+ broadcaster_user_name: z.ZodString;
579
+ }, z.core.$loose>;
580
+ readonly "twitch:cheer": z.ZodObject<{
581
+ user_id: z.ZodNullable<z.ZodString>;
582
+ user_login: z.ZodNullable<z.ZodString>;
583
+ user_name: z.ZodNullable<z.ZodString>;
584
+ is_anonymous: z.ZodBoolean;
585
+ bits: z.ZodNumber;
586
+ message: z.ZodString;
587
+ emotes: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
588
+ cheermote: z.ZodOptional<z.ZodUnknown>;
589
+ avatarUrl: z.ZodOptional<z.ZodString>;
590
+ broadcaster_user_id: z.ZodString;
591
+ broadcaster_user_login: z.ZodString;
592
+ broadcaster_user_name: z.ZodString;
593
+ }, z.core.$loose>;
594
+ readonly "twitch:raid": z.ZodObject<{
595
+ displayName: z.ZodOptional<z.ZodString>;
596
+ title: z.ZodOptional<z.ZodString>;
597
+ category: z.ZodOptional<z.ZodString>;
598
+ avatarUrl: z.ZodOptional<z.ZodString>;
599
+ from_broadcaster_user_id: z.ZodString;
600
+ from_broadcaster_user_login: z.ZodString;
601
+ from_broadcaster_user_name: z.ZodString;
602
+ to_broadcaster_user_id: z.ZodString;
603
+ to_broadcaster_user_login: z.ZodString;
604
+ to_broadcaster_user_name: z.ZodString;
605
+ viewers: z.ZodNumber;
606
+ }, z.core.$loose>;
607
+ readonly "twitch:reward": z.ZodObject<{
608
+ id: z.ZodString;
609
+ user_input: z.ZodString;
610
+ status: z.ZodString;
611
+ redeemed_at: z.ZodString;
612
+ reward: z.ZodObject<{
613
+ id: z.ZodString;
614
+ title: z.ZodString;
615
+ cost: z.ZodNumber;
616
+ prompt: z.ZodString;
617
+ }, z.core.$loose>;
618
+ avatarUrl: z.ZodOptional<z.ZodString>;
619
+ user_id: z.ZodString;
620
+ user_login: z.ZodString;
621
+ user_name: z.ZodString;
622
+ broadcaster_user_id: z.ZodString;
623
+ broadcaster_user_login: z.ZodString;
624
+ broadcaster_user_name: z.ZodString;
625
+ }, z.core.$loose>;
626
+ readonly "twitch:reward_status": z.ZodObject<{
627
+ id: z.ZodString;
628
+ user_input: z.ZodString;
629
+ status: z.ZodString;
630
+ redeemed_at: z.ZodString;
631
+ reward: z.ZodObject<{
632
+ id: z.ZodString;
633
+ title: z.ZodString;
634
+ cost: z.ZodNumber;
635
+ prompt: z.ZodString;
636
+ }, z.core.$loose>;
637
+ avatarUrl: z.ZodOptional<z.ZodString>;
638
+ user_id: z.ZodString;
639
+ user_login: z.ZodString;
640
+ user_name: z.ZodString;
641
+ broadcaster_user_id: z.ZodString;
642
+ broadcaster_user_login: z.ZodString;
643
+ broadcaster_user_name: z.ZodString;
644
+ }, z.core.$loose>;
645
+ readonly "twitch:reward_add": z.ZodObject<{
646
+ id: z.ZodString;
647
+ title: z.ZodString;
648
+ cost: z.ZodNumber;
649
+ prompt: z.ZodString;
650
+ background_color: z.ZodString;
651
+ is_enabled: z.ZodBoolean;
652
+ is_paused: z.ZodBoolean;
653
+ is_in_stock: z.ZodBoolean;
654
+ is_user_input_required: z.ZodBoolean;
655
+ should_redemptions_skip_request_queue: z.ZodBoolean;
656
+ max_per_stream: z.ZodObject<{
657
+ is_enabled: z.ZodBoolean;
658
+ value: z.ZodNumber;
659
+ }, z.core.$loose>;
660
+ max_per_user_per_stream: z.ZodObject<{
661
+ is_enabled: z.ZodBoolean;
662
+ value: z.ZodNumber;
663
+ }, z.core.$loose>;
664
+ global_cooldown: z.ZodObject<{
665
+ is_enabled: z.ZodBoolean;
666
+ seconds: z.ZodNumber;
667
+ }, z.core.$loose>;
668
+ image: z.ZodNullable<z.ZodObject<{
669
+ url_1x: z.ZodString;
670
+ url_2x: z.ZodString;
671
+ url_4x: z.ZodString;
672
+ }, z.core.$loose>>;
673
+ default_image: z.ZodObject<{
674
+ url_1x: z.ZodString;
675
+ url_2x: z.ZodString;
676
+ url_4x: z.ZodString;
677
+ }, z.core.$loose>;
678
+ cooldown_expires_at: z.ZodNullable<z.ZodString>;
679
+ redemptions_redeemed_current_stream: z.ZodNullable<z.ZodNumber>;
680
+ broadcaster_user_id: z.ZodString;
681
+ broadcaster_user_login: z.ZodString;
682
+ broadcaster_user_name: z.ZodString;
683
+ }, z.core.$loose>;
684
+ readonly "twitch:reward_update": z.ZodObject<{
685
+ id: z.ZodString;
686
+ title: z.ZodString;
687
+ cost: z.ZodNumber;
688
+ prompt: z.ZodString;
689
+ background_color: z.ZodString;
690
+ is_enabled: z.ZodBoolean;
691
+ is_paused: z.ZodBoolean;
692
+ is_in_stock: z.ZodBoolean;
693
+ is_user_input_required: z.ZodBoolean;
694
+ should_redemptions_skip_request_queue: z.ZodBoolean;
695
+ max_per_stream: z.ZodObject<{
696
+ is_enabled: z.ZodBoolean;
697
+ value: z.ZodNumber;
698
+ }, z.core.$loose>;
699
+ max_per_user_per_stream: z.ZodObject<{
700
+ is_enabled: z.ZodBoolean;
701
+ value: z.ZodNumber;
702
+ }, z.core.$loose>;
703
+ global_cooldown: z.ZodObject<{
704
+ is_enabled: z.ZodBoolean;
705
+ seconds: z.ZodNumber;
706
+ }, z.core.$loose>;
707
+ image: z.ZodNullable<z.ZodObject<{
708
+ url_1x: z.ZodString;
709
+ url_2x: z.ZodString;
710
+ url_4x: z.ZodString;
711
+ }, z.core.$loose>>;
712
+ default_image: z.ZodObject<{
713
+ url_1x: z.ZodString;
714
+ url_2x: z.ZodString;
715
+ url_4x: z.ZodString;
716
+ }, z.core.$loose>;
717
+ cooldown_expires_at: z.ZodNullable<z.ZodString>;
718
+ redemptions_redeemed_current_stream: z.ZodNullable<z.ZodNumber>;
719
+ broadcaster_user_id: z.ZodString;
720
+ broadcaster_user_login: z.ZodString;
721
+ broadcaster_user_name: z.ZodString;
722
+ }, z.core.$loose>;
723
+ readonly "twitch:reward_remove": z.ZodObject<{
724
+ id: z.ZodString;
725
+ title: z.ZodString;
726
+ cost: z.ZodNumber;
727
+ prompt: z.ZodString;
728
+ background_color: z.ZodString;
729
+ is_enabled: z.ZodBoolean;
730
+ is_paused: z.ZodBoolean;
731
+ is_in_stock: z.ZodBoolean;
732
+ is_user_input_required: z.ZodBoolean;
733
+ should_redemptions_skip_request_queue: z.ZodBoolean;
734
+ max_per_stream: z.ZodObject<{
735
+ is_enabled: z.ZodBoolean;
736
+ value: z.ZodNumber;
737
+ }, z.core.$loose>;
738
+ max_per_user_per_stream: z.ZodObject<{
739
+ is_enabled: z.ZodBoolean;
740
+ value: z.ZodNumber;
741
+ }, z.core.$loose>;
742
+ global_cooldown: z.ZodObject<{
743
+ is_enabled: z.ZodBoolean;
744
+ seconds: z.ZodNumber;
745
+ }, z.core.$loose>;
746
+ image: z.ZodNullable<z.ZodObject<{
747
+ url_1x: z.ZodString;
748
+ url_2x: z.ZodString;
749
+ url_4x: z.ZodString;
750
+ }, z.core.$loose>>;
751
+ default_image: z.ZodObject<{
752
+ url_1x: z.ZodString;
753
+ url_2x: z.ZodString;
754
+ url_4x: z.ZodString;
755
+ }, z.core.$loose>;
756
+ cooldown_expires_at: z.ZodNullable<z.ZodString>;
757
+ redemptions_redeemed_current_stream: z.ZodNullable<z.ZodNumber>;
758
+ broadcaster_user_id: z.ZodString;
759
+ broadcaster_user_login: z.ZodString;
760
+ broadcaster_user_name: z.ZodString;
761
+ }, z.core.$loose>;
762
+ readonly "twitch:hype_train": z.ZodObject<{
763
+ progress: z.ZodNumber;
764
+ goal: z.ZodNumber;
765
+ expires_at: z.ZodString;
766
+ all_time_high_level: z.ZodOptional<z.ZodNumber>;
767
+ all_time_high_total: z.ZodOptional<z.ZodNumber>;
768
+ id: z.ZodString;
769
+ type: z.ZodString;
770
+ level: z.ZodNumber;
771
+ total: z.ZodNumber;
772
+ top_contributions: z.ZodArray<z.ZodObject<{
773
+ type: z.ZodString;
774
+ total: z.ZodNumber;
775
+ user_id: z.ZodString;
776
+ user_login: z.ZodString;
777
+ user_name: z.ZodString;
778
+ }, z.core.$loose>>;
779
+ started_at: z.ZodString;
780
+ is_shared_train: z.ZodBoolean;
781
+ shared_train_participants: z.ZodNullable<z.ZodArray<z.ZodUnknown>>;
782
+ broadcaster_user_id: z.ZodString;
783
+ broadcaster_user_login: z.ZodString;
784
+ broadcaster_user_name: z.ZodString;
785
+ }, z.core.$loose>;
786
+ readonly "twitch:hype_train_end": z.ZodObject<{
787
+ ended_at: z.ZodString;
788
+ cooldown_ends_at: z.ZodString;
789
+ id: z.ZodString;
790
+ type: z.ZodString;
791
+ level: z.ZodNumber;
792
+ total: z.ZodNumber;
793
+ top_contributions: z.ZodArray<z.ZodObject<{
794
+ type: z.ZodString;
795
+ total: z.ZodNumber;
796
+ user_id: z.ZodString;
797
+ user_login: z.ZodString;
798
+ user_name: z.ZodString;
799
+ }, z.core.$loose>>;
800
+ started_at: z.ZodString;
801
+ is_shared_train: z.ZodBoolean;
802
+ shared_train_participants: z.ZodNullable<z.ZodArray<z.ZodUnknown>>;
803
+ broadcaster_user_id: z.ZodString;
804
+ broadcaster_user_login: z.ZodString;
805
+ broadcaster_user_name: z.ZodString;
806
+ }, z.core.$loose>;
807
+ readonly "twitch:poll": z.ZodObject<{
808
+ ends_at: z.ZodString;
809
+ id: z.ZodString;
810
+ title: z.ZodString;
811
+ choices: z.ZodArray<z.ZodObject<{
812
+ id: z.ZodString;
813
+ title: z.ZodString;
814
+ votes: z.ZodOptional<z.ZodNumber>;
815
+ bits_votes: z.ZodOptional<z.ZodNumber>;
816
+ channel_points_votes: z.ZodOptional<z.ZodNumber>;
817
+ }, z.core.$loose>>;
818
+ bits_voting: z.ZodObject<{
819
+ is_enabled: z.ZodBoolean;
820
+ amount_per_vote: z.ZodNumber;
821
+ }, z.core.$loose>;
822
+ channel_points_voting: z.ZodObject<{
823
+ is_enabled: z.ZodBoolean;
824
+ amount_per_vote: z.ZodNumber;
825
+ }, z.core.$loose>;
826
+ started_at: z.ZodString;
827
+ broadcaster_user_id: z.ZodString;
828
+ broadcaster_user_login: z.ZodString;
829
+ broadcaster_user_name: z.ZodString;
830
+ }, z.core.$loose>;
831
+ readonly "twitch:poll_end": z.ZodObject<{
832
+ status: z.ZodString;
833
+ ended_at: z.ZodString;
834
+ id: z.ZodString;
835
+ title: z.ZodString;
836
+ choices: z.ZodArray<z.ZodObject<{
837
+ id: z.ZodString;
838
+ title: z.ZodString;
839
+ votes: z.ZodOptional<z.ZodNumber>;
840
+ bits_votes: z.ZodOptional<z.ZodNumber>;
841
+ channel_points_votes: z.ZodOptional<z.ZodNumber>;
842
+ }, z.core.$loose>>;
843
+ bits_voting: z.ZodObject<{
844
+ is_enabled: z.ZodBoolean;
845
+ amount_per_vote: z.ZodNumber;
846
+ }, z.core.$loose>;
847
+ channel_points_voting: z.ZodObject<{
848
+ is_enabled: z.ZodBoolean;
849
+ amount_per_vote: z.ZodNumber;
850
+ }, z.core.$loose>;
851
+ started_at: z.ZodString;
852
+ broadcaster_user_id: z.ZodString;
853
+ broadcaster_user_login: z.ZodString;
854
+ broadcaster_user_name: z.ZodString;
855
+ }, z.core.$loose>;
856
+ readonly "twitch:prediction": z.ZodObject<{
857
+ locks_at: z.ZodString;
858
+ id: z.ZodString;
859
+ title: z.ZodString;
860
+ outcomes: z.ZodArray<z.ZodObject<{
861
+ id: z.ZodString;
862
+ title: z.ZodString;
863
+ color: z.ZodString;
864
+ users: z.ZodOptional<z.ZodNumber>;
865
+ channel_points: z.ZodOptional<z.ZodNumber>;
866
+ top_predictors: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
867
+ channel_points_used: z.ZodNumber;
868
+ channel_points_won: z.ZodNullable<z.ZodNumber>;
869
+ user_id: z.ZodString;
870
+ user_login: z.ZodString;
871
+ user_name: z.ZodString;
872
+ }, z.core.$loose>>>>;
873
+ }, z.core.$loose>>;
874
+ started_at: z.ZodString;
875
+ broadcaster_user_id: z.ZodString;
876
+ broadcaster_user_login: z.ZodString;
877
+ broadcaster_user_name: z.ZodString;
878
+ }, z.core.$loose>;
879
+ readonly "twitch:prediction_lock": z.ZodObject<{
880
+ locked_at: z.ZodString;
881
+ id: z.ZodString;
882
+ title: z.ZodString;
883
+ outcomes: z.ZodArray<z.ZodObject<{
884
+ id: z.ZodString;
885
+ title: z.ZodString;
886
+ color: z.ZodString;
887
+ users: z.ZodOptional<z.ZodNumber>;
888
+ channel_points: z.ZodOptional<z.ZodNumber>;
889
+ top_predictors: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
890
+ channel_points_used: z.ZodNumber;
891
+ channel_points_won: z.ZodNullable<z.ZodNumber>;
892
+ user_id: z.ZodString;
893
+ user_login: z.ZodString;
894
+ user_name: z.ZodString;
895
+ }, z.core.$loose>>>>;
896
+ }, z.core.$loose>>;
897
+ started_at: z.ZodString;
898
+ broadcaster_user_id: z.ZodString;
899
+ broadcaster_user_login: z.ZodString;
900
+ broadcaster_user_name: z.ZodString;
901
+ }, z.core.$loose>;
902
+ readonly "twitch:prediction_end": z.ZodObject<{
903
+ status: z.ZodString;
904
+ ended_at: z.ZodString;
905
+ winning_outcome_id: z.ZodNullable<z.ZodString>;
906
+ id: z.ZodString;
907
+ title: z.ZodString;
908
+ outcomes: z.ZodArray<z.ZodObject<{
909
+ id: z.ZodString;
910
+ title: z.ZodString;
911
+ color: z.ZodString;
912
+ users: z.ZodOptional<z.ZodNumber>;
913
+ channel_points: z.ZodOptional<z.ZodNumber>;
914
+ top_predictors: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
915
+ channel_points_used: z.ZodNumber;
916
+ channel_points_won: z.ZodNullable<z.ZodNumber>;
917
+ user_id: z.ZodString;
918
+ user_login: z.ZodString;
919
+ user_name: z.ZodString;
920
+ }, z.core.$loose>>>>;
921
+ }, z.core.$loose>>;
922
+ started_at: z.ZodString;
923
+ broadcaster_user_id: z.ZodString;
924
+ broadcaster_user_login: z.ZodString;
925
+ broadcaster_user_name: z.ZodString;
926
+ }, z.core.$loose>;
927
+ readonly "twitch:goal": z.ZodObject<{
928
+ id: z.ZodString;
929
+ type: z.ZodString;
930
+ description: z.ZodString;
931
+ current_amount: z.ZodNumber;
932
+ target_amount: z.ZodNumber;
933
+ started_at: z.ZodString;
934
+ broadcaster_user_id: z.ZodString;
935
+ broadcaster_user_login: z.ZodString;
936
+ broadcaster_user_name: z.ZodString;
937
+ }, z.core.$loose>;
938
+ readonly "twitch:goal_end": z.ZodObject<{
939
+ ended_at: z.ZodString;
940
+ is_achieved: z.ZodBoolean;
941
+ id: z.ZodString;
942
+ type: z.ZodString;
943
+ description: z.ZodString;
944
+ current_amount: z.ZodNumber;
945
+ target_amount: z.ZodNumber;
946
+ started_at: z.ZodString;
947
+ broadcaster_user_id: z.ZodString;
948
+ broadcaster_user_login: z.ZodString;
949
+ broadcaster_user_name: z.ZodString;
950
+ }, z.core.$loose>;
951
+ readonly "twitch:ad_break": z.ZodObject<{
952
+ requester_user_id: z.ZodString;
953
+ requester_user_login: z.ZodString;
954
+ requester_user_name: z.ZodString;
955
+ duration_seconds: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
956
+ is_automatic: z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>;
957
+ started_at: z.ZodString;
958
+ broadcaster_user_id: z.ZodString;
959
+ broadcaster_user_login: z.ZodString;
960
+ broadcaster_user_name: z.ZodString;
961
+ }, z.core.$loose>;
962
+ readonly "twitch:ban": z.ZodObject<{
963
+ action: z.ZodString;
964
+ platform: z.ZodString;
965
+ target_user_id: z.ZodNullable<z.ZodString>;
966
+ target_username: z.ZodNullable<z.ZodString>;
967
+ target_display_name: z.ZodNullable<z.ZodString>;
968
+ moderator_name: z.ZodString;
969
+ moderator_login: z.ZodNullable<z.ZodString>;
970
+ reason: z.ZodNullable<z.ZodString>;
971
+ duration_secs: z.ZodNullable<z.ZodNumber>;
972
+ ends_at: z.ZodNullable<z.ZodString>;
973
+ target_message_id: z.ZodNullable<z.ZodString>;
974
+ created_at: z.ZodString;
975
+ }, z.core.$loose>;
976
+ readonly "twitch:unban": z.ZodObject<{
977
+ action: z.ZodString;
978
+ platform: z.ZodString;
979
+ target_user_id: z.ZodNullable<z.ZodString>;
980
+ target_username: z.ZodNullable<z.ZodString>;
981
+ target_display_name: z.ZodNullable<z.ZodString>;
982
+ moderator_name: z.ZodString;
983
+ moderator_login: z.ZodNullable<z.ZodString>;
984
+ reason: z.ZodNullable<z.ZodString>;
985
+ duration_secs: z.ZodNullable<z.ZodNumber>;
986
+ ends_at: z.ZodNullable<z.ZodString>;
987
+ target_message_id: z.ZodNullable<z.ZodString>;
988
+ created_at: z.ZodString;
989
+ }, z.core.$loose>;
990
+ readonly "twitch:stream_online": z.ZodObject<{
991
+ id: z.ZodString;
992
+ type: z.ZodString;
993
+ started_at: z.ZodString;
994
+ title: z.ZodOptional<z.ZodString>;
995
+ category: z.ZodOptional<z.ZodString>;
996
+ broadcaster_user_id: z.ZodString;
997
+ broadcaster_user_login: z.ZodString;
998
+ broadcaster_user_name: z.ZodString;
999
+ }, z.core.$loose>;
1000
+ readonly "twitch:stream_offline": z.ZodObject<{
1001
+ started_at: z.ZodOptional<z.ZodString>;
1002
+ duration_seconds: z.ZodOptional<z.ZodNumber>;
1003
+ broadcaster_user_id: z.ZodString;
1004
+ broadcaster_user_login: z.ZodString;
1005
+ broadcaster_user_name: z.ZodString;
1006
+ }, z.core.$loose>;
1007
+ readonly "twitch:stream_update": z.ZodObject<{
1008
+ title: z.ZodString;
1009
+ language: z.ZodString;
1010
+ category_id: z.ZodString;
1011
+ category_name: z.ZodString;
1012
+ content_classification_labels: z.ZodArray<z.ZodString>;
1013
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
1014
+ title_changed: z.ZodOptional<z.ZodBoolean>;
1015
+ category_changed: z.ZodOptional<z.ZodBoolean>;
1016
+ language_changed: z.ZodOptional<z.ZodBoolean>;
1017
+ tags_changed: z.ZodOptional<z.ZodBoolean>;
1018
+ old_title: z.ZodOptional<z.ZodString>;
1019
+ old_category_name: z.ZodOptional<z.ZodString>;
1020
+ old_tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
1021
+ broadcaster_user_id: z.ZodString;
1022
+ broadcaster_user_login: z.ZodString;
1023
+ broadcaster_user_name: z.ZodString;
1024
+ }, z.core.$loose>;
1025
+ readonly "youtube:subscribe": z.ZodObject<{
1026
+ channel_id: z.ZodString;
1027
+ video_id: z.ZodString;
1028
+ title: z.ZodString;
1029
+ published: z.ZodString;
1030
+ updated: z.ZodString;
1031
+ }, z.core.$loose>;
1032
+ readonly "youtube:member": z.ZodObject<{
1033
+ membership_event_type: z.ZodString;
1034
+ memberLevelName: z.ZodNullable<z.ZodString>;
1035
+ memberMonth: z.ZodNullable<z.ZodNumber>;
1036
+ isUpgrade: z.ZodBoolean;
1037
+ display_message: z.ZodString;
1038
+ userComment: z.ZodString;
1039
+ user_id: z.ZodString;
1040
+ user_login: z.ZodString;
1041
+ displayName: z.ZodString;
1042
+ avatarUrl: z.ZodString;
1043
+ }, z.core.$loose>;
1044
+ readonly "youtube:superchat": z.ZodObject<{
1045
+ amountMicros: z.ZodNumber;
1046
+ amountDisplayString: z.ZodString;
1047
+ currency: z.ZodString;
1048
+ tier: z.ZodNumber;
1049
+ userComment: z.ZodString;
1050
+ headerBackgroundColor: z.ZodNumber;
1051
+ bodyBackgroundColor: z.ZodNumber;
1052
+ user_id: z.ZodString;
1053
+ user_login: z.ZodString;
1054
+ displayName: z.ZodString;
1055
+ avatarUrl: z.ZodString;
1056
+ }, z.core.$loose>;
1057
+ readonly "youtube:supersticker": z.ZodObject<{
1058
+ amountMicros: z.ZodNumber;
1059
+ amountDisplayString: z.ZodString;
1060
+ currency: z.ZodString;
1061
+ stickerName: z.ZodString;
1062
+ stickerUrl: z.ZodString;
1063
+ user_id: z.ZodString;
1064
+ user_login: z.ZodString;
1065
+ displayName: z.ZodString;
1066
+ avatarUrl: z.ZodString;
1067
+ }, z.core.$loose>;
1068
+ readonly "youtube:gift_membership": z.ZodObject<{
1069
+ giftCount: z.ZodNumber;
1070
+ isGift: z.ZodBoolean;
1071
+ gift_memberships_level_name: z.ZodNullable<z.ZodString>;
1072
+ user_id: z.ZodString;
1073
+ user_login: z.ZodString;
1074
+ displayName: z.ZodString;
1075
+ avatarUrl: z.ZodString;
1076
+ }, z.core.$loose>;
1077
+ /** Stored in the event history only; never broadcast live (no fixture). */
1078
+ readonly "youtube:gift_membership_received": z.ZodObject<{
1079
+ user_id: z.ZodNullable<z.ZodString>;
1080
+ user_login: z.ZodNullable<z.ZodString>;
1081
+ displayName: z.ZodString;
1082
+ avatarUrl: z.ZodNullable<z.ZodString>;
1083
+ gifter_channel_id: z.ZodNullable<z.ZodString>;
1084
+ gifter_display_name: z.ZodNullable<z.ZodString>;
1085
+ gift_memberships_level_name: z.ZodNullable<z.ZodString>;
1086
+ }, z.core.$loose>;
1087
+ readonly "youtube:poll": z.ZodObject<{
1088
+ poll_id: z.ZodString;
1089
+ question: z.ZodString;
1090
+ status: z.ZodString;
1091
+ options: z.ZodArray<z.ZodObject<{
1092
+ option_text: z.ZodString;
1093
+ tally: z.ZodNullable<z.ZodString>;
1094
+ vote_ratio: z.ZodNullable<z.ZodNumber>;
1095
+ }, z.core.$loose>>;
1096
+ }, z.core.$loose>;
1097
+ readonly "youtube:stream_online": z.ZodObject<{
1098
+ broadcast_id: z.ZodString;
1099
+ started_at: z.ZodString;
1100
+ title: z.ZodOptional<z.ZodString>;
1101
+ category: z.ZodOptional<z.ZodString>;
1102
+ }, z.core.$loose>;
1103
+ readonly "youtube:stream_offline": z.ZodObject<{
1104
+ broadcast_id: z.ZodString;
1105
+ started_at: z.ZodOptional<z.ZodString>;
1106
+ duration_seconds: z.ZodOptional<z.ZodNumber>;
1107
+ }, z.core.$loose>;
1108
+ readonly "kick:follower": z.ZodObject<{
1109
+ broadcaster: z.ZodObject<{
1110
+ user_id: z.ZodNumber;
1111
+ username: z.ZodString;
1112
+ channel_slug: z.ZodString;
1113
+ is_verified: z.ZodBoolean;
1114
+ profile_picture: z.ZodString;
1115
+ is_anonymous: z.ZodOptional<z.ZodBoolean>;
1116
+ identity: z.ZodOptional<z.ZodUnknown>;
1117
+ }, z.core.$loose>;
1118
+ follower: z.ZodObject<{
1119
+ user_id: z.ZodNumber;
1120
+ username: z.ZodString;
1121
+ channel_slug: z.ZodString;
1122
+ is_verified: z.ZodBoolean;
1123
+ profile_picture: z.ZodString;
1124
+ is_anonymous: z.ZodOptional<z.ZodBoolean>;
1125
+ identity: z.ZodOptional<z.ZodUnknown>;
1126
+ }, z.core.$loose>;
1127
+ avatarUrl: z.ZodOptional<z.ZodString>;
1128
+ user_id: z.ZodString;
1129
+ user_login: z.ZodString;
1130
+ user_name: z.ZodString;
1131
+ is_anonymous: z.ZodBoolean;
1132
+ }, z.core.$loose>;
1133
+ readonly "kick:subscribe": z.ZodObject<{
1134
+ broadcaster: z.ZodObject<{
1135
+ user_id: z.ZodNumber;
1136
+ username: z.ZodString;
1137
+ channel_slug: z.ZodString;
1138
+ is_verified: z.ZodBoolean;
1139
+ profile_picture: z.ZodString;
1140
+ is_anonymous: z.ZodOptional<z.ZodBoolean>;
1141
+ identity: z.ZodOptional<z.ZodUnknown>;
1142
+ }, z.core.$loose>;
1143
+ subscriber: z.ZodObject<{
1144
+ user_id: z.ZodNumber;
1145
+ username: z.ZodString;
1146
+ channel_slug: z.ZodString;
1147
+ is_verified: z.ZodBoolean;
1148
+ profile_picture: z.ZodString;
1149
+ is_anonymous: z.ZodOptional<z.ZodBoolean>;
1150
+ identity: z.ZodOptional<z.ZodUnknown>;
1151
+ }, z.core.$loose>;
1152
+ duration: z.ZodNumber;
1153
+ cumulative_months: z.ZodNumber;
1154
+ created_at: z.ZodString;
1155
+ expires_at: z.ZodString;
1156
+ avatarUrl: z.ZodOptional<z.ZodString>;
1157
+ user_id: z.ZodString;
1158
+ user_login: z.ZodString;
1159
+ user_name: z.ZodString;
1160
+ is_anonymous: z.ZodBoolean;
1161
+ }, z.core.$loose>;
1162
+ readonly "kick:resub": z.ZodObject<{
1163
+ broadcaster: z.ZodObject<{
1164
+ user_id: z.ZodNumber;
1165
+ username: z.ZodString;
1166
+ channel_slug: z.ZodString;
1167
+ is_verified: z.ZodBoolean;
1168
+ profile_picture: z.ZodString;
1169
+ is_anonymous: z.ZodOptional<z.ZodBoolean>;
1170
+ identity: z.ZodOptional<z.ZodUnknown>;
1171
+ }, z.core.$loose>;
1172
+ subscriber: z.ZodObject<{
1173
+ user_id: z.ZodNumber;
1174
+ username: z.ZodString;
1175
+ channel_slug: z.ZodString;
1176
+ is_verified: z.ZodBoolean;
1177
+ profile_picture: z.ZodString;
1178
+ is_anonymous: z.ZodOptional<z.ZodBoolean>;
1179
+ identity: z.ZodOptional<z.ZodUnknown>;
1180
+ }, z.core.$loose>;
1181
+ duration: z.ZodNumber;
1182
+ cumulative_months: z.ZodNumber;
1183
+ created_at: z.ZodString;
1184
+ expires_at: z.ZodString;
1185
+ avatarUrl: z.ZodOptional<z.ZodString>;
1186
+ user_id: z.ZodString;
1187
+ user_login: z.ZodString;
1188
+ user_name: z.ZodString;
1189
+ is_anonymous: z.ZodBoolean;
1190
+ }, z.core.$loose>;
1191
+ readonly "kick:gift": z.ZodObject<{
1192
+ broadcaster: z.ZodObject<{
1193
+ user_id: z.ZodNumber;
1194
+ username: z.ZodString;
1195
+ channel_slug: z.ZodString;
1196
+ is_verified: z.ZodBoolean;
1197
+ profile_picture: z.ZodString;
1198
+ is_anonymous: z.ZodOptional<z.ZodBoolean>;
1199
+ identity: z.ZodOptional<z.ZodUnknown>;
1200
+ }, z.core.$loose>;
1201
+ gifter: z.ZodObject<{
1202
+ user_id: z.ZodNumber;
1203
+ username: z.ZodString;
1204
+ channel_slug: z.ZodString;
1205
+ is_verified: z.ZodBoolean;
1206
+ profile_picture: z.ZodString;
1207
+ is_anonymous: z.ZodOptional<z.ZodBoolean>;
1208
+ identity: z.ZodOptional<z.ZodUnknown>;
1209
+ }, z.core.$loose>;
1210
+ giftees: z.ZodArray<z.ZodObject<{
1211
+ user_id: z.ZodNumber;
1212
+ username: z.ZodString;
1213
+ channel_slug: z.ZodString;
1214
+ is_verified: z.ZodBoolean;
1215
+ profile_picture: z.ZodString;
1216
+ is_anonymous: z.ZodOptional<z.ZodBoolean>;
1217
+ identity: z.ZodOptional<z.ZodUnknown>;
1218
+ }, z.core.$loose>>;
1219
+ giftRecipients: z.ZodArray<z.ZodString>;
1220
+ giftCount: z.ZodNumber;
1221
+ total: z.ZodNumber;
1222
+ isGift: z.ZodBoolean;
1223
+ is_gift: z.ZodBoolean;
1224
+ recipient_user_id: z.ZodOptional<z.ZodString>;
1225
+ recipient_user_login: z.ZodOptional<z.ZodString>;
1226
+ recipient_user_name: z.ZodOptional<z.ZodString>;
1227
+ created_at: z.ZodString;
1228
+ expires_at: z.ZodString;
1229
+ avatarUrl: z.ZodOptional<z.ZodString>;
1230
+ user_id: z.ZodString;
1231
+ user_login: z.ZodString;
1232
+ user_name: z.ZodString;
1233
+ is_anonymous: z.ZodBoolean;
1234
+ }, z.core.$loose>;
1235
+ readonly "kick:kicks": z.ZodObject<{
1236
+ broadcaster: z.ZodObject<{
1237
+ user_id: z.ZodNumber;
1238
+ username: z.ZodString;
1239
+ channel_slug: z.ZodString;
1240
+ is_verified: z.ZodBoolean;
1241
+ profile_picture: z.ZodString;
1242
+ is_anonymous: z.ZodOptional<z.ZodBoolean>;
1243
+ identity: z.ZodOptional<z.ZodUnknown>;
1244
+ }, z.core.$loose>;
1245
+ sender: z.ZodObject<{
1246
+ user_id: z.ZodNumber;
1247
+ username: z.ZodString;
1248
+ channel_slug: z.ZodString;
1249
+ is_verified: z.ZodBoolean;
1250
+ profile_picture: z.ZodString;
1251
+ is_anonymous: z.ZodOptional<z.ZodBoolean>;
1252
+ identity: z.ZodOptional<z.ZodUnknown>;
1253
+ }, z.core.$loose>;
1254
+ gift: z.ZodObject<{
1255
+ amount: z.ZodNumber;
1256
+ name: z.ZodString;
1257
+ type: z.ZodString;
1258
+ tier: z.ZodString;
1259
+ message: z.ZodString;
1260
+ pinned_time_seconds: z.ZodNumber;
1261
+ }, z.core.$loose>;
1262
+ kicks: z.ZodNumber;
1263
+ message: z.ZodString;
1264
+ kick_gift_id: z.ZodString;
1265
+ kick_gift_name: z.ZodString;
1266
+ kick_gift_type: z.ZodString;
1267
+ kick_gift_tier: z.ZodString;
1268
+ kick_gift_color: z.ZodString;
1269
+ kick_gift_image: z.ZodObject<{
1270
+ static: z.ZodString;
1271
+ animated: z.ZodString;
1272
+ }, z.core.$loose>;
1273
+ kick_pinned_time_seconds: z.ZodNumber;
1274
+ created_at: z.ZodString;
1275
+ avatarUrl: z.ZodOptional<z.ZodString>;
1276
+ user_id: z.ZodString;
1277
+ user_login: z.ZodString;
1278
+ user_name: z.ZodString;
1279
+ is_anonymous: z.ZodBoolean;
1280
+ }, z.core.$loose>;
1281
+ readonly "kick:reward": z.ZodObject<{
1282
+ broadcaster: z.ZodObject<{
1283
+ user_id: z.ZodNumber;
1284
+ username: z.ZodString;
1285
+ channel_slug: z.ZodString;
1286
+ is_verified: z.ZodBoolean;
1287
+ profile_picture: z.ZodString;
1288
+ is_anonymous: z.ZodOptional<z.ZodBoolean>;
1289
+ identity: z.ZodOptional<z.ZodUnknown>;
1290
+ }, z.core.$loose>;
1291
+ redeemer: z.ZodObject<{
1292
+ user_id: z.ZodNumber;
1293
+ username: z.ZodString;
1294
+ channel_slug: z.ZodString;
1295
+ is_verified: z.ZodBoolean;
1296
+ profile_picture: z.ZodString;
1297
+ is_anonymous: z.ZodOptional<z.ZodBoolean>;
1298
+ identity: z.ZodOptional<z.ZodUnknown>;
1299
+ }, z.core.$loose>;
1300
+ id: z.ZodString;
1301
+ user_input: z.ZodString;
1302
+ status: z.ZodString;
1303
+ redeemed_at: z.ZodString;
1304
+ reward: z.ZodObject<{
1305
+ id: z.ZodString;
1306
+ title: z.ZodString;
1307
+ cost: z.ZodNumber;
1308
+ }, z.core.$loose>;
1309
+ user_id: z.ZodString;
1310
+ user_login: z.ZodString;
1311
+ user_name: z.ZodString;
1312
+ is_anonymous: z.ZodBoolean;
1313
+ }, z.core.$loose>;
1314
+ readonly "kick:reward_status": z.ZodObject<{
1315
+ broadcaster: z.ZodObject<{
1316
+ user_id: z.ZodNumber;
1317
+ username: z.ZodString;
1318
+ channel_slug: z.ZodString;
1319
+ is_verified: z.ZodBoolean;
1320
+ profile_picture: z.ZodString;
1321
+ is_anonymous: z.ZodOptional<z.ZodBoolean>;
1322
+ identity: z.ZodOptional<z.ZodUnknown>;
1323
+ }, z.core.$loose>;
1324
+ redeemer: z.ZodObject<{
1325
+ user_id: z.ZodNumber;
1326
+ username: z.ZodString;
1327
+ channel_slug: z.ZodString;
1328
+ is_verified: z.ZodBoolean;
1329
+ profile_picture: z.ZodString;
1330
+ is_anonymous: z.ZodOptional<z.ZodBoolean>;
1331
+ identity: z.ZodOptional<z.ZodUnknown>;
1332
+ }, z.core.$loose>;
1333
+ id: z.ZodString;
1334
+ user_input: z.ZodString;
1335
+ status: z.ZodString;
1336
+ redeemed_at: z.ZodString;
1337
+ reward: z.ZodObject<{
1338
+ id: z.ZodString;
1339
+ title: z.ZodString;
1340
+ cost: z.ZodNumber;
1341
+ }, z.core.$loose>;
1342
+ user_id: z.ZodString;
1343
+ user_login: z.ZodString;
1344
+ user_name: z.ZodString;
1345
+ is_anonymous: z.ZodBoolean;
1346
+ }, z.core.$loose>;
1347
+ readonly "kick:stream_online": z.ZodObject<{
1348
+ broadcaster: z.ZodObject<{
1349
+ user_id: z.ZodNumber;
1350
+ username: z.ZodString;
1351
+ channel_slug: z.ZodString;
1352
+ is_verified: z.ZodBoolean;
1353
+ profile_picture: z.ZodString;
1354
+ is_anonymous: z.ZodOptional<z.ZodBoolean>;
1355
+ identity: z.ZodOptional<z.ZodUnknown>;
1356
+ }, z.core.$loose>;
1357
+ is_live: z.ZodBoolean;
1358
+ title: z.ZodString;
1359
+ started_at: z.ZodString;
1360
+ ended_at: z.ZodNullable<z.ZodString>;
1361
+ }, z.core.$loose>;
1362
+ readonly "kick:stream_offline": z.ZodObject<{
1363
+ broadcaster: z.ZodObject<{
1364
+ user_id: z.ZodNumber;
1365
+ username: z.ZodString;
1366
+ channel_slug: z.ZodString;
1367
+ is_verified: z.ZodBoolean;
1368
+ profile_picture: z.ZodString;
1369
+ is_anonymous: z.ZodOptional<z.ZodBoolean>;
1370
+ identity: z.ZodOptional<z.ZodUnknown>;
1371
+ }, z.core.$loose>;
1372
+ is_live: z.ZodBoolean;
1373
+ title: z.ZodString;
1374
+ started_at: z.ZodString;
1375
+ ended_at: z.ZodString;
1376
+ duration_seconds: z.ZodOptional<z.ZodNumber>;
1377
+ }, z.core.$loose>;
1378
+ readonly "kick:stream_update": z.ZodObject<{
1379
+ broadcaster: z.ZodObject<{
1380
+ user_id: z.ZodNumber;
1381
+ username: z.ZodString;
1382
+ channel_slug: z.ZodString;
1383
+ is_verified: z.ZodBoolean;
1384
+ profile_picture: z.ZodString;
1385
+ is_anonymous: z.ZodOptional<z.ZodBoolean>;
1386
+ identity: z.ZodOptional<z.ZodUnknown>;
1387
+ }, z.core.$loose>;
1388
+ metadata: z.ZodObject<{
1389
+ title: z.ZodString;
1390
+ language: z.ZodString;
1391
+ has_mature_content: z.ZodBoolean;
1392
+ category: z.ZodObject<{
1393
+ id: z.ZodNumber;
1394
+ name: z.ZodString;
1395
+ thumbnail: z.ZodString;
1396
+ }, z.core.$loose>;
1397
+ }, z.core.$loose>;
1398
+ title: z.ZodString;
1399
+ language: z.ZodString;
1400
+ has_mature_content: z.ZodBoolean;
1401
+ category_id: z.ZodString;
1402
+ category_name: z.ZodString;
1403
+ title_changed: z.ZodOptional<z.ZodBoolean>;
1404
+ category_changed: z.ZodOptional<z.ZodBoolean>;
1405
+ language_changed: z.ZodOptional<z.ZodBoolean>;
1406
+ old_title: z.ZodOptional<z.ZodString>;
1407
+ }, z.core.$loose>;
1408
+ readonly "spotify:track": z.ZodObject<{
1409
+ is_playing: z.ZodBoolean;
1410
+ progress_ms: z.ZodNumber;
1411
+ timestamp: z.ZodNumber;
1412
+ shuffle: z.ZodString;
1413
+ repeat: z.ZodString;
1414
+ track: z.ZodObject<{
1415
+ id: z.ZodString;
1416
+ uri: z.ZodString;
1417
+ name: z.ZodString;
1418
+ artist: z.ZodString;
1419
+ album: z.ZodString;
1420
+ album_art: z.ZodString;
1421
+ duration_ms: z.ZodNumber;
1422
+ }, z.core.$loose>;
1423
+ device: z.ZodNullable<z.ZodObject<{
1424
+ id: z.ZodString;
1425
+ name: z.ZodString;
1426
+ device_type: z.ZodString;
1427
+ is_active: z.ZodBoolean;
1428
+ volume_percent: z.ZodNullable<z.ZodNumber>;
1429
+ }, z.core.$loose>>;
1430
+ context: z.ZodNullable<z.ZodObject<{
1431
+ context_type: z.ZodString;
1432
+ id: z.ZodString;
1433
+ name: z.ZodNullable<z.ZodString>;
1434
+ uri: z.ZodString;
1435
+ }, z.core.$loose>>;
1436
+ triggered_by: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1437
+ }, z.core.$loose>;
1438
+ readonly "spotify:play": z.ZodObject<{
1439
+ track_uri: z.ZodString;
1440
+ source: z.ZodOptional<z.ZodString>;
1441
+ extension_id: z.ZodOptional<z.ZodString>;
1442
+ install_id: z.ZodOptional<z.ZodString>;
1443
+ action: z.ZodString;
1444
+ track_id: z.ZodString;
1445
+ track_name: z.ZodString;
1446
+ artist: z.ZodString;
1447
+ album: z.ZodString;
1448
+ album_art: z.ZodString;
1449
+ song_url: z.ZodString;
1450
+ }, z.core.$loose>;
1451
+ readonly "spotify:pause": z.ZodObject<{
1452
+ source: z.ZodOptional<z.ZodString>;
1453
+ extension_id: z.ZodOptional<z.ZodString>;
1454
+ install_id: z.ZodOptional<z.ZodString>;
1455
+ action: z.ZodString;
1456
+ track_id: z.ZodString;
1457
+ track_name: z.ZodString;
1458
+ artist: z.ZodString;
1459
+ album: z.ZodString;
1460
+ album_art: z.ZodString;
1461
+ song_url: z.ZodString;
1462
+ }, z.core.$loose>;
1463
+ readonly "spotify:skip": z.ZodObject<{
1464
+ source: z.ZodOptional<z.ZodString>;
1465
+ extension_id: z.ZodOptional<z.ZodString>;
1466
+ install_id: z.ZodOptional<z.ZodString>;
1467
+ action: z.ZodString;
1468
+ }, z.core.$loose>;
1469
+ readonly "spotify:volume": z.ZodObject<{
1470
+ oldVolume: z.ZodNumber;
1471
+ newVolume: z.ZodNumber;
1472
+ volume_percent: z.ZodNumber;
1473
+ source: z.ZodOptional<z.ZodString>;
1474
+ extension_id: z.ZodOptional<z.ZodString>;
1475
+ install_id: z.ZodOptional<z.ZodString>;
1476
+ action: z.ZodString;
1477
+ track_id: z.ZodString;
1478
+ track_name: z.ZodString;
1479
+ artist: z.ZodString;
1480
+ album: z.ZodString;
1481
+ album_art: z.ZodString;
1482
+ song_url: z.ZodString;
1483
+ }, z.core.$loose>;
1484
+ readonly "spotify:queue_add": z.ZodObject<{
1485
+ source: z.ZodOptional<z.ZodString>;
1486
+ extension_id: z.ZodOptional<z.ZodString>;
1487
+ install_id: z.ZodOptional<z.ZodString>;
1488
+ uri: z.ZodString;
1489
+ }, z.core.$loose>;
1490
+ readonly "spotify:device": z.ZodObject<{
1491
+ fromDevice: z.ZodString;
1492
+ fromDeviceType: z.ZodString;
1493
+ toDevice: z.ZodString;
1494
+ toDeviceType: z.ZodString;
1495
+ }, z.core.$loose>;
1496
+ readonly "spotify:playlist_add": z.ZodObject<{
1497
+ playlistId: z.ZodString;
1498
+ }, z.core.$loose>;
1499
+ readonly "spotify:playlist_remove": z.ZodObject<{
1500
+ playlistId: z.ZodString;
1501
+ trackUri: z.ZodString;
1502
+ }, z.core.$loose>;
1503
+ readonly "spotify:playlist_create": z.ZodObject<{
1504
+ playlistName: z.ZodString;
1505
+ }, z.core.$loose>;
1506
+ readonly "spotify:playlist_edit": z.ZodObject<{
1507
+ playlistName: z.ZodString;
1508
+ }, z.core.$loose>;
1509
+ readonly "spotify:playlist_delete": z.ZodObject<{
1510
+ playlistId: z.ZodString;
1511
+ }, z.core.$loose>;
1512
+ readonly "streamelements:tip": z.ZodObject<{
1513
+ _id: z.ZodString;
1514
+ channel: z.ZodString;
1515
+ provider: z.ZodString;
1516
+ type: z.ZodString;
1517
+ flagged: z.ZodBoolean;
1518
+ createdAt: z.ZodString;
1519
+ updatedAt: z.ZodString;
1520
+ data: z.ZodObject<{
1521
+ tipId: z.ZodString;
1522
+ username: z.ZodString;
1523
+ displayName: z.ZodString;
1524
+ providerId: z.ZodOptional<z.ZodString>;
1525
+ amount: z.ZodNumber;
1526
+ currency: z.ZodString;
1527
+ message: z.ZodString;
1528
+ avatar: z.ZodOptional<z.ZodString>;
1529
+ }, z.core.$loose>;
1530
+ }, z.core.$loose>;
1531
+ readonly "shopify:order": z.ZodObject<{
1532
+ shop: z.ZodOptional<z.ZodObject<{
1533
+ domain: z.ZodString;
1534
+ label: z.ZodString;
1535
+ }, z.core.$loose>>;
1536
+ order_number: z.ZodNullable<z.ZodNumber>;
1537
+ name: z.ZodNullable<z.ZodString>;
1538
+ financial_status: z.ZodNullable<z.ZodString>;
1539
+ total_price: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1540
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1541
+ line_items: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
1542
+ title: z.ZodNullable<z.ZodString>;
1543
+ quantity: z.ZodNullable<z.ZodNumber>;
1544
+ price: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1545
+ }, z.core.$loose>>>>;
1546
+ customer_display: z.ZodOptional<z.ZodString>;
1547
+ }, z.core.$loose>;
1548
+ readonly "shopify:order_paid": z.ZodObject<{
1549
+ shop: z.ZodOptional<z.ZodObject<{
1550
+ domain: z.ZodString;
1551
+ label: z.ZodString;
1552
+ }, z.core.$loose>>;
1553
+ order_number: z.ZodNullable<z.ZodNumber>;
1554
+ name: z.ZodNullable<z.ZodString>;
1555
+ financial_status: z.ZodNullable<z.ZodString>;
1556
+ total_price: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1557
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1558
+ line_items: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
1559
+ title: z.ZodNullable<z.ZodString>;
1560
+ quantity: z.ZodNullable<z.ZodNumber>;
1561
+ price: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1562
+ }, z.core.$loose>>>>;
1563
+ customer_display: z.ZodOptional<z.ZodString>;
1564
+ }, z.core.$loose>;
1565
+ readonly "shopify:product": z.ZodObject<{
1566
+ shop: z.ZodOptional<z.ZodObject<{
1567
+ domain: z.ZodString;
1568
+ label: z.ZodString;
1569
+ }, z.core.$loose>>;
1570
+ title: z.ZodNullable<z.ZodString>;
1571
+ vendor: z.ZodNullable<z.ZodString>;
1572
+ product_type: z.ZodNullable<z.ZodString>;
1573
+ handle: z.ZodNullable<z.ZodString>;
1574
+ image_url: z.ZodNullable<z.ZodString>;
1575
+ }, z.core.$loose>;
1576
+ readonly "twitch:chat": z.ZodObject<{
1577
+ account_id: z.ZodString;
1578
+ platform: z.ZodString;
1579
+ channel_name: z.ZodNullable<z.ZodString>;
1580
+ user_id: z.ZodNullable<z.ZodString>;
1581
+ username: z.ZodString;
1582
+ display_name: z.ZodNullable<z.ZodString>;
1583
+ avatar_url: z.ZodNullable<z.ZodString>;
1584
+ message: z.ZodString;
1585
+ emotes: z.ZodNullable<z.ZodArray<z.ZodUnknown>>;
1586
+ gifs: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
1587
+ badges: z.ZodNullable<z.ZodArray<z.ZodUnknown>>;
1588
+ color: z.ZodNullable<z.ZodString>;
1589
+ is_mod: z.ZodBoolean;
1590
+ is_sub: z.ZodBoolean;
1591
+ is_vip: z.ZodBoolean;
1592
+ sub_tier: z.ZodNullable<z.ZodString>;
1593
+ platform_message_id: z.ZodNullable<z.ZodString>;
1594
+ lumio_user_id: z.ZodNullable<z.ZodString>;
1595
+ reply_parent_msg_id: z.ZodNullable<z.ZodString>;
1596
+ reply_parent_username: z.ZodNullable<z.ZodString>;
1597
+ reply_parent_login: z.ZodNullable<z.ZodString>;
1598
+ reply_parent_message: z.ZodNullable<z.ZodString>;
1599
+ created_at: z.ZodNullable<z.ZodString>;
1600
+ message_type: z.ZodNullable<z.ZodString>;
1601
+ user_treatment: z.ZodNullable<z.ZodString>;
1602
+ live_chat_id: z.ZodOptional<z.ZodString>;
1603
+ is_shared_chat: z.ZodOptional<z.ZodBoolean>;
1604
+ source_channel: z.ZodOptional<z.ZodUnknown>;
1605
+ announcement_color: z.ZodOptional<z.ZodUnknown>;
1606
+ }, z.core.$loose>;
1607
+ readonly "youtube:chat": z.ZodObject<{
1608
+ account_id: z.ZodString;
1609
+ platform: z.ZodString;
1610
+ channel_name: z.ZodNullable<z.ZodString>;
1611
+ user_id: z.ZodNullable<z.ZodString>;
1612
+ username: z.ZodString;
1613
+ display_name: z.ZodNullable<z.ZodString>;
1614
+ avatar_url: z.ZodNullable<z.ZodString>;
1615
+ message: z.ZodString;
1616
+ emotes: z.ZodNullable<z.ZodArray<z.ZodUnknown>>;
1617
+ gifs: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
1618
+ badges: z.ZodNullable<z.ZodArray<z.ZodUnknown>>;
1619
+ color: z.ZodNullable<z.ZodString>;
1620
+ is_mod: z.ZodBoolean;
1621
+ is_sub: z.ZodBoolean;
1622
+ is_vip: z.ZodBoolean;
1623
+ sub_tier: z.ZodNullable<z.ZodString>;
1624
+ platform_message_id: z.ZodNullable<z.ZodString>;
1625
+ lumio_user_id: z.ZodNullable<z.ZodString>;
1626
+ reply_parent_msg_id: z.ZodNullable<z.ZodString>;
1627
+ reply_parent_username: z.ZodNullable<z.ZodString>;
1628
+ reply_parent_login: z.ZodNullable<z.ZodString>;
1629
+ reply_parent_message: z.ZodNullable<z.ZodString>;
1630
+ created_at: z.ZodNullable<z.ZodString>;
1631
+ message_type: z.ZodNullable<z.ZodString>;
1632
+ user_treatment: z.ZodNullable<z.ZodString>;
1633
+ live_chat_id: z.ZodOptional<z.ZodString>;
1634
+ is_shared_chat: z.ZodOptional<z.ZodBoolean>;
1635
+ source_channel: z.ZodOptional<z.ZodUnknown>;
1636
+ announcement_color: z.ZodOptional<z.ZodUnknown>;
1637
+ }, z.core.$loose>;
1638
+ readonly "kick:chat": z.ZodObject<{
1639
+ account_id: z.ZodString;
1640
+ platform: z.ZodString;
1641
+ channel_name: z.ZodNullable<z.ZodString>;
1642
+ user_id: z.ZodNullable<z.ZodString>;
1643
+ username: z.ZodString;
1644
+ display_name: z.ZodNullable<z.ZodString>;
1645
+ avatar_url: z.ZodNullable<z.ZodString>;
1646
+ message: z.ZodString;
1647
+ emotes: z.ZodNullable<z.ZodArray<z.ZodUnknown>>;
1648
+ gifs: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
1649
+ badges: z.ZodNullable<z.ZodArray<z.ZodUnknown>>;
1650
+ color: z.ZodNullable<z.ZodString>;
1651
+ is_mod: z.ZodBoolean;
1652
+ is_sub: z.ZodBoolean;
1653
+ is_vip: z.ZodBoolean;
1654
+ sub_tier: z.ZodNullable<z.ZodString>;
1655
+ platform_message_id: z.ZodNullable<z.ZodString>;
1656
+ lumio_user_id: z.ZodNullable<z.ZodString>;
1657
+ reply_parent_msg_id: z.ZodNullable<z.ZodString>;
1658
+ reply_parent_username: z.ZodNullable<z.ZodString>;
1659
+ reply_parent_login: z.ZodNullable<z.ZodString>;
1660
+ reply_parent_message: z.ZodNullable<z.ZodString>;
1661
+ created_at: z.ZodNullable<z.ZodString>;
1662
+ message_type: z.ZodNullable<z.ZodString>;
1663
+ user_treatment: z.ZodNullable<z.ZodString>;
1664
+ live_chat_id: z.ZodOptional<z.ZodString>;
1665
+ is_shared_chat: z.ZodOptional<z.ZodBoolean>;
1666
+ source_channel: z.ZodOptional<z.ZodUnknown>;
1667
+ announcement_color: z.ZodOptional<z.ZodUnknown>;
1668
+ }, z.core.$loose>;
1669
+ readonly "chat:message": z.ZodObject<{
1670
+ account_id: z.ZodString;
1671
+ platform: z.ZodString;
1672
+ channel_name: z.ZodNullable<z.ZodString>;
1673
+ user_id: z.ZodNullable<z.ZodString>;
1674
+ username: z.ZodString;
1675
+ display_name: z.ZodNullable<z.ZodString>;
1676
+ avatar_url: z.ZodNullable<z.ZodString>;
1677
+ message: z.ZodString;
1678
+ emotes: z.ZodNullable<z.ZodArray<z.ZodUnknown>>;
1679
+ gifs: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
1680
+ badges: z.ZodNullable<z.ZodArray<z.ZodUnknown>>;
1681
+ color: z.ZodNullable<z.ZodString>;
1682
+ is_mod: z.ZodBoolean;
1683
+ is_sub: z.ZodBoolean;
1684
+ is_vip: z.ZodBoolean;
1685
+ sub_tier: z.ZodNullable<z.ZodString>;
1686
+ platform_message_id: z.ZodNullable<z.ZodString>;
1687
+ lumio_user_id: z.ZodNullable<z.ZodString>;
1688
+ reply_parent_msg_id: z.ZodNullable<z.ZodString>;
1689
+ reply_parent_username: z.ZodNullable<z.ZodString>;
1690
+ reply_parent_login: z.ZodNullable<z.ZodString>;
1691
+ reply_parent_message: z.ZodNullable<z.ZodString>;
1692
+ created_at: z.ZodNullable<z.ZodString>;
1693
+ message_type: z.ZodNullable<z.ZodString>;
1694
+ user_treatment: z.ZodNullable<z.ZodString>;
1695
+ live_chat_id: z.ZodOptional<z.ZodString>;
1696
+ is_shared_chat: z.ZodOptional<z.ZodBoolean>;
1697
+ source_channel: z.ZodOptional<z.ZodUnknown>;
1698
+ announcement_color: z.ZodOptional<z.ZodUnknown>;
1699
+ }, z.core.$loose>;
1700
+ };
1701
+ /** The payload type of every event type, inferred from its schema. */
1702
+ type LumioEventPayloadMap = {
1703
+ [K in LumioEventType]: z.infer<(typeof LUMIO_EVENT_PAYLOAD_SCHEMAS)[K]>;
1704
+ };
1705
+ /** The payload of one event type, e.g. `LumioEventPayload<"twitch:follower">`. */
1706
+ type LumioEventPayload<K extends LumioEventType> = LumioEventPayloadMap[K];
1707
+ /** A chat message (`twitch:chat`, `youtube:chat`, `kick:chat`, `chat:message`). */
1708
+ type ChatMessagePayload = z.infer<typeof chatMessagePayloadSchema>;
1709
+ /** A `twitch:ban` / `twitch:unban` moderation-log entry. */
1710
+ type ModerationLogPayload = z.infer<typeof moderationLogEntry>;
1711
+ /** The zod schema for one event type's payload. */
1712
+ declare function lumioEventPayloadSchema<K extends LumioEventType>(type: K): (typeof LUMIO_EVENT_PAYLOAD_SCHEMAS)[K];
1713
+ /** Validates `data` as the payload of `type`, e.g. before a mock host emits it. */
1714
+ declare function parseLumioEventPayload<K extends LumioEventType>(type: K, data: unknown): z.ZodSafeParseResult<LumioEventPayloadMap[K]>;
1715
+
404
1716
  declare const LUMIO_COMPONENT_TYPES: readonly ["Box", "VStack", "HStack", "CompactView", "List", "Text", "Image", "Button", "Toggle", "TextField", "TextArea", "NumberField", "Dropdown", "Slider", "IconPicker", "IconDisplay", "EditorInput", "EditorTextarea", "EditorSelect", "EditorCheckbox", "EditorSlider", "EditorColorPicker", "EditorGroup", "EditorLabel", "EditorDivider", "EditorInfo", "EditorFontRow", "EditorButton", "EditorFontPicker", "EditorChannelRow"];
405
1717
  type LumioComponentType = (typeof LUMIO_COMPONENT_TYPES)[number];
406
1718
  interface LumioComponentNode {
@@ -446,10 +1758,16 @@ interface StorageSetParams {
446
1758
  interface StorageGetParams {
447
1759
  key: string;
448
1760
  }
1761
+ /** `server.query` — run a `queryRows` export of `server/functions.ts` by name. Resolves with its rows. */
449
1762
  interface ServerQueryParams {
450
1763
  fn: string;
451
1764
  params: Record<string, unknown>;
452
1765
  }
1766
+ /**
1767
+ * `server.mutation` — run an `insertRow` / `patchRow` / `deleteRow` export by
1768
+ * name. Resolves with the written row (the deleted row's `{ _id }` for
1769
+ * `deleteRow`), or `null` when no row matched.
1770
+ */
453
1771
  interface ServerMutationParams {
454
1772
  fn: string;
455
1773
  params: Record<string, unknown>;
@@ -463,6 +1781,57 @@ interface SoundStopParams {
463
1781
  }
464
1782
  interface SoundGetListParams {
465
1783
  }
1784
+ /** `action.execute` — run a Lumio service action on behalf of the extension install. */
1785
+ interface ActionExecuteParams {
1786
+ action: LumioActionType;
1787
+ params: Record<string, unknown>;
1788
+ }
1789
+ /** Successful `action.execute` response: the action's return data (`null` when it has none). */
1790
+ interface ActionExecuteResult {
1791
+ data: unknown;
1792
+ }
1793
+ /**
1794
+ * JSON-RPC error codes a host answers a failed `action.execute` with. The host
1795
+ * never decides whether an action is allowed — the API does, with the extension
1796
+ * identity it derives from the install, not from the worker's claim.
1797
+ */
1798
+ declare const ACTION_EXECUTE_ERRORS: {
1799
+ /** Malformed request: `action` is not a string or `params` is not an object. */
1800
+ readonly INVALID_REQUEST: -32602;
1801
+ /** This host cannot run actions (no install, or a credential that may not run them). */
1802
+ readonly UNAVAILABLE: -32001;
1803
+ /** The extension does not declare the action's permission, or the caller may not use it. */
1804
+ readonly DENIED: -32002;
1805
+ /** The API does not dispatch this action. */
1806
+ readonly UNKNOWN_ACTION: -32003;
1807
+ /** The API rejected the action's params. */
1808
+ readonly INVALID_PARAMS: -32004;
1809
+ /** The action ran and failed (e.g. its target service is not connected). */
1810
+ readonly FAILED: -32005;
1811
+ };
1812
+ type ActionExecuteErrorCode = (typeof ACTION_EXECUTE_ERRORS)[keyof typeof ACTION_EXECUTE_ERRORS];
1813
+ /**
1814
+ * JSON-RPC error codes a host answers a failed `server.query` /
1815
+ * `server.mutation` with. The API resolves the function by name from the
1816
+ * install's published functions manifest and decides from the host's
1817
+ * credential whether an `editorOnly` function may run — the worker cannot
1818
+ * claim the editor.
1819
+ */
1820
+ declare const SERVER_FUNCTION_ERRORS: {
1821
+ /** Malformed request: `fn` is not a function name or `params` is not an object. */
1822
+ readonly INVALID_REQUEST: -32602;
1823
+ /** This host cannot call server functions (no install, or a credential that may not call them). */
1824
+ readonly UNAVAILABLE: -32001;
1825
+ /** The caller may not run the function (an `editorOnly` function outside the editor, or missing permission). */
1826
+ readonly DENIED: -32002;
1827
+ /** The install's published version has no server function with this name, or not of this kind. */
1828
+ readonly UNKNOWN_FUNCTION: -32003;
1829
+ /** The API rejected the params (missing or mistyped `arg()` value, invalid row id or column value). */
1830
+ readonly INVALID_PARAMS: -32004;
1831
+ /** The function ran and failed (rate limit, no data schema, storage quota, timeout). */
1832
+ readonly FAILED: -32005;
1833
+ };
1834
+ type ServerFunctionErrorCode = (typeof SERVER_FUNCTION_ERRORS)[keyof typeof SERVER_FUNCTION_ERRORS];
466
1835
  interface Sound {
467
1836
  id: string;
468
1837
  name: string;
@@ -475,7 +1844,7 @@ interface LifecycleInitParams {
475
1844
  extensionId: string;
476
1845
  installId: string;
477
1846
  accountId: string;
478
- target: "editor" | "layer" | "interactive";
1847
+ target: "editor" | "layer";
479
1848
  storage: Record<string, unknown>;
480
1849
  theme: Theme;
481
1850
  }
@@ -493,6 +1862,16 @@ interface StorageUpdateParams {
493
1862
  key: string;
494
1863
  value: unknown;
495
1864
  }
1865
+ /**
1866
+ * `server.realtime` — a message a handler of this install pushed with
1867
+ * `ctx.realtime.push(topic, payload)`. The host relays it to every rendered
1868
+ * surface of the install (editor, layer); the SDK hands it to
1869
+ * `useRealtime(topic, cb)`.
1870
+ */
1871
+ interface ServerRealtimeParams {
1872
+ topic: string;
1873
+ payload: unknown;
1874
+ }
496
1875
  interface ThemeChangeParams {
497
1876
  theme: Theme;
498
1877
  }
@@ -509,6 +1888,7 @@ declare const WORKER_METHODS: {
509
1888
  readonly SOUND_PLAY: "sound.play";
510
1889
  readonly SOUND_STOP: "sound.stop";
511
1890
  readonly SOUND_LIST: "sound.list";
1891
+ readonly ACTION_EXECUTE: "action.execute";
512
1892
  };
513
1893
  declare const HOST_METHODS: {
514
1894
  readonly LIFECYCLE_INIT: "lifecycle.init";
@@ -518,6 +1898,28 @@ declare const HOST_METHODS: {
518
1898
  readonly STORAGE_UPDATE: "storage.update";
519
1899
  readonly THEME_CHANGE: "theme.change";
520
1900
  readonly CONFIG_UPDATE: "config.update";
1901
+ readonly SERVER_REALTIME: "server.realtime";
1902
+ };
1903
+ /**
1904
+ * Rules of `ctx.realtime.push(topic, payload)`. The API and the Bot Module
1905
+ * Worker enforce them (`lo_extensions_runtime::realtime`); a push that breaks
1906
+ * one throws in the handler.
1907
+ */
1908
+ declare const REALTIME_LIMITS: {
1909
+ /** 1–64 characters of `A-Z a-z 0-9 _ . : -`, starting with a letter or digit. */
1910
+ readonly TOPIC_PATTERN: RegExp;
1911
+ /** Largest serialized payload of one push, in bytes. */
1912
+ readonly MAX_PAYLOAD_BYTES: number;
1913
+ /** Most pushes one handler run may make. */
1914
+ readonly MAX_PUSHES_PER_INVOCATION: 32;
1915
+ /** Pushes per install and minute; pushes over the cap are dropped. */
1916
+ readonly MAX_PUSHES_PER_MINUTE: 300;
1917
+ /**
1918
+ * Published bytes (serialized `{ topic, payload }`) per install and minute;
1919
+ * pushes over the cap are dropped.
1920
+ */
1921
+ readonly MAX_BYTES_PER_MINUTE: number;
521
1922
  };
522
1923
 
523
- export { ACTION_TYPES, type ActionMessage, type ConfigUpdateMessage, type ErrorMessage, type EventCallbackParams, type EventMessage, type EventPlatformParams, type ExtensionConfig, HOST_METHODS, type InitMessage, type JsonRpcMessage, type JsonRpcNotification, type JsonRpcRequest, type JsonRpcResponse, LUMIO_COMPONENT_TYPES, LUMIO_EVENT_TYPES, type LifecycleDestroyParams, type LifecycleInitParams, type LumioActionType, type LumioComponentNode, type LumioComponentType, type LumioEventType, type LumioMessage, MESSAGE_TYPES, type MessageType, type NodeConfigRequestMessage, type NodeConfigUpdateMessage, type ReadyMessage, STORAGE_SCOPES, type ServerMutationParams, type ServerQueryParams, type Sound, type SoundGetListParams, type SoundPlayEvent, type SoundPlayParams, type SoundStopEvent, type SoundStopParams, type StorageGetParams, type StorageScope, type StorageSetParams, type StorageUpdateMessage, type StorageUpdateParams, type Theme, type ThemeBorderRadius, type ThemeChangeMessage, type ThemeChangeParams, type ThemeColors, type ThemeFonts, type UiKeyframesParams, type UiReadyParams, type UiRenderParams, WORKER_METHODS, actionMessageSchema, configUpdateMessageSchema, errorMessageSchema, eventMessageSchema, extensionConfigSchema, initMessageSchema, lumioActionTypeSchema, lumioEventTypeSchema, lumioMessageSchema, nodeConfigRequestMessageSchema, nodeConfigUpdateMessageSchema, readyMessageSchema, storageScopeSchema, storageUpdateMessageSchema, themeBorderRadiusSchema, themeChangeMessageSchema, themeColorsSchema, themeFontsSchema, themeSchema };
1924
+ export { ACTION_EXECUTE_ERRORS, ACTION_TYPES, HOST_METHODS, LUMIO_COMPONENT_TYPES, LUMIO_EVENT_PAYLOAD_SCHEMAS, LUMIO_EVENT_TYPES, MESSAGE_TYPES, REALTIME_LIMITS, SERVER_FUNCTION_ERRORS, STORAGE_SCOPES, WORKER_METHODS, actionMessageSchema, chatMessagePayloadSchema, configUpdateMessageSchema, errorMessageSchema, eventMessageSchema, extensionConfigSchema, initMessageSchema, lumioActionTypeSchema, lumioEventPayloadSchema, lumioEventTypeSchema, lumioMessageSchema, nodeConfigRequestMessageSchema, nodeConfigUpdateMessageSchema, parseLumioEventPayload, readyMessageSchema, storageScopeSchema, storageUpdateMessageSchema, themeBorderRadiusSchema, themeChangeMessageSchema, themeColorsSchema, themeFontsSchema, themeSchema };
1925
+ export type { ActionExecuteErrorCode, ActionExecuteParams, ActionExecuteResult, ActionMessage, ChatMessagePayload, ConfigUpdateMessage, ErrorMessage, EventCallbackParams, EventMessage, EventPlatformParams, ExtensionConfig, InitMessage, JsonRpcMessage, JsonRpcNotification, JsonRpcRequest, JsonRpcResponse, LifecycleDestroyParams, LifecycleInitParams, LumioActionType, LumioComponentNode, LumioComponentType, LumioEventPayload, LumioEventPayloadMap, LumioEventType, LumioMessage, MessageType, ModerationLogPayload, NodeConfigRequestMessage, NodeConfigUpdateMessage, ReadyMessage, ServerFunctionErrorCode, ServerMutationParams, ServerQueryParams, ServerRealtimeParams, Sound, SoundGetListParams, SoundPlayEvent, SoundPlayParams, SoundStopEvent, SoundStopParams, StorageGetParams, StorageScope, StorageSetParams, StorageUpdateMessage, StorageUpdateParams, Theme, ThemeBorderRadius, ThemeChangeMessage, ThemeChangeParams, ThemeColors, ThemeFonts, UiKeyframesParams, UiReadyParams, UiRenderParams };