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