@saebyn/glowing-telegram-types 0.8.0 → 0.9.7

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/types.ts +213 -2
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@saebyn/glowing-telegram-types",
3
3
  "license": "AGPL-3.0-only",
4
- "version": "0.8.0",
4
+ "version": "0.9.7",
5
5
  "main": "src/types.ts",
6
6
  "files": [
7
7
  "src/types.ts"
package/src/types.ts CHANGED
@@ -7,7 +7,110 @@ export interface AuthorizationURLResponse {
7
7
  url: string;
8
8
  }
9
9
 
10
+ export interface ChatSubscriptionStatusResponse {
11
+ /**
12
+ * Whether the user has any active chat subscriptions
13
+ */
14
+ has_active_subscription: boolean;
15
+ /**
16
+ * Array of active EventSub chat subscriptions for the user
17
+ */
18
+ subscriptions: EventSubSubscription[];
19
+ }
20
+
21
+ export interface EventSubSubscription {
22
+ /**
23
+ * The condition object for the subscription
24
+ */
25
+ condition: Condition;
26
+ /**
27
+ * When the subscription was created
28
+ */
29
+ created_at: string;
30
+ /**
31
+ * The subscription ID
32
+ */
33
+ id: string;
34
+ /**
35
+ * The status of the subscription
36
+ */
37
+ status: string;
38
+ /**
39
+ * The transport object for the subscription
40
+ */
41
+ transport: Transport;
42
+ /**
43
+ * The type of the subscription
44
+ */
45
+ type: string;
46
+ /**
47
+ * The version of the subscription
48
+ */
49
+ version: string;
50
+ }
51
+
52
+ /**
53
+ * The condition object for the subscription
54
+ */
55
+ export interface Condition {
56
+ /**
57
+ * The ID of the broadcaster user
58
+ */
59
+ broadcaster_user_id?: string;
60
+ [property: string]: unknown;
61
+ }
62
+
63
+ /**
64
+ * The transport object for the subscription
65
+ */
66
+ export interface Transport {
67
+ /**
68
+ * The callback URL where the notifications are sent. The URL must use the HTTPS protocol
69
+ * and port 443. See Processing an event. Specify this field only if method is set to
70
+ * webhook.
71
+ */
72
+ callback?: string;
73
+ /**
74
+ * The UTC date and time that the WebSocket connection was established. This is a
75
+ * response-only field that Create EventSub Subscription and Get EventSub Subscription
76
+ * returns if the method field is set to websocket.
77
+ */
78
+ connected_at?: string;
79
+ /**
80
+ * The UTC date and time that the WebSocket connection was lost. This is a response-only
81
+ * field that Get EventSub Subscription returns if the method field is set to websocket.
82
+ */
83
+ disconnected_at?: string;
84
+ /**
85
+ * The transport method
86
+ */
87
+ method: Method;
88
+ /**
89
+ * The secret used to verify the signature. The secret must be an ASCII string that's a
90
+ * minimum of 10 characters long and a maximum of 100 characters long. For information about
91
+ * how the secret is used, see Verifying the event message. Specify this field only if
92
+ * method is set to webhook.
93
+ */
94
+ secret?: string;
95
+ /**
96
+ * An ID that identifies the WebSocket to send notifications to. When you connect to
97
+ * EventSub using WebSockets, the server returns the ID in the Welcome message. Specify this
98
+ * field only if method is set to websocket.
99
+ */
100
+ session_id?: string;
101
+ [property: string]: unknown;
102
+ }
103
+
104
+ /**
105
+ * The transport method
106
+ */
107
+ export type Method = "webhook" | "websocket";
108
+
10
109
  export interface CutList {
110
+ /**
111
+ * Audio channel mixing and volume control configuration
112
+ */
113
+ audioMixing?: AudioChannelMixing[];
11
114
  /**
12
115
  * List of input media sources
13
116
  */
@@ -26,6 +129,40 @@ export interface CutList {
26
129
  version: "1.0.0";
27
130
  }
28
131
 
132
+ /**
133
+ * Audio mixing configuration for a specific channel
134
+ */
135
+ export interface AudioChannelMixing {
136
+ /**
137
+ * Volume keyframes for this channel throughout the timeline
138
+ */
139
+ keyframes?: AudioChannelKeyframe[];
140
+ /**
141
+ * 0-indexed output audio channel number
142
+ */
143
+ outputChannel: number;
144
+ /**
145
+ * 0-indexed source audio channel number
146
+ */
147
+ sourceChannel: number;
148
+ [property: string]: unknown;
149
+ }
150
+
151
+ /**
152
+ * A keyframe defining volume level for an audio channel at a specific timeline position
153
+ */
154
+ export interface AudioChannelKeyframe {
155
+ /**
156
+ * Timeline frame position for this keyframe
157
+ */
158
+ frame: number;
159
+ /**
160
+ * Volume level (0.0 = mute, 1.0 = original, >1.0 = amplified)
161
+ */
162
+ volume: number;
163
+ [property: string]: unknown;
164
+ }
165
+
29
166
  export interface InputMedia {
30
167
  /**
31
168
  * Path of the media
@@ -140,7 +277,7 @@ export type OverlayTrackType = "alpha" | "colorkey";
140
277
  export interface Episode {
141
278
  category?: number;
142
279
  created_at?: string;
143
- cut_list?: CutListClass;
280
+ cut_list?: EpisodeCutList;
144
281
  description?: string;
145
282
  error_message?: string;
146
283
  id?: string;
@@ -163,7 +300,11 @@ export interface Episode {
163
300
  youtube_video_id?: string;
164
301
  }
165
302
 
166
- export interface CutListClass {
303
+ export interface EpisodeCutList {
304
+ /**
305
+ * Audio channel mixing and volume control configuration
306
+ */
307
+ audioMixing?: AudioChannelMixing[];
167
308
  /**
168
309
  * List of input media sources
169
310
  */
@@ -197,6 +338,50 @@ export interface Profile {
197
338
  id: string;
198
339
  }
199
340
 
341
+ export interface Project {
342
+ created_at?: string;
343
+ cut_list?: ProjectCutList;
344
+ /**
345
+ * Optional reference to the episode this project is linked to
346
+ */
347
+ episode_id?: string;
348
+ id?: string;
349
+ /**
350
+ * Current status of the project - no backend validation enforced
351
+ */
352
+ status?: string;
353
+ title?: string;
354
+ updated_at?: string;
355
+ user_id?: string;
356
+ /**
357
+ * Array of video clip IDs that are part of this project
358
+ */
359
+ video_clip_ids?: string[];
360
+ }
361
+
362
+ export interface ProjectCutList {
363
+ /**
364
+ * Audio channel mixing and volume control configuration
365
+ */
366
+ audioMixing?: AudioChannelMixing[];
367
+ /**
368
+ * List of input media sources
369
+ */
370
+ inputMedia: InputMedia[];
371
+ /**
372
+ * Ordered media sections to form the output timeline sequence
373
+ */
374
+ outputTrack: OutputTrack[];
375
+ /**
376
+ * One or more overlay tracks
377
+ */
378
+ overlayTracks?: OverlayTrack[];
379
+ /**
380
+ * Schema version
381
+ */
382
+ version: "1.0.0";
383
+ }
384
+
200
385
  export interface RenderRequest {
201
386
  episodeIds: string[];
202
387
  }
@@ -277,6 +462,20 @@ export interface StreamIngestionRequest {
277
462
  streamId: string;
278
463
  }
279
464
 
465
+ export interface SubscribeChatRequest {
466
+ }
467
+
468
+ export interface SubscribeChatResponse {
469
+ /**
470
+ * The status of the subscription request
471
+ */
472
+ status: string;
473
+ /**
474
+ * The ID of the created EventSub subscription, if successful
475
+ */
476
+ subscription_id?: null | string;
477
+ }
478
+
280
479
  /**
281
480
  * A task represents a unit of work in the system, with a unique identifier, status,
282
481
  * timestamps for creation and updates, type of task, and an associated record ID.
@@ -313,6 +512,18 @@ export interface TwitchCallbackResponse {
313
512
  url: string;
314
513
  }
315
514
 
515
+ export interface TwitchChatMessage {
516
+ channel_id: string;
517
+ event_type: string;
518
+ message: string;
519
+ sender_id: string;
520
+ timestamp: string;
521
+ ttl: number;
522
+ user_id: string;
523
+ user_login: string;
524
+ user_name: string;
525
+ }
526
+
316
527
  export interface TwitchSessionSecret {
317
528
  access_token?: string;
318
529
  csrf_token: string;