@tongue-core/project 0.1.0-rc.1 → 0.1.0-rc.10

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Backpine
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -24,6 +24,7 @@ The SDK is that host on a machine with files and processes.
24
24
  | `@tongue-core/project/build` | the project's shape (`roleOf`), the compiler (`compileModule`), bundles, `compileProject` → `loadProject` → `extractFilm` → `writeBuild`, or `buildProject` for all four | whatever builds projects (the SDK, a backend) |
25
25
  | `@tongue-core/project/load` | `ModuleHost`, linking bundles, `openBuild` (build.json, film.json and every bundle, hashes checked), `filmFromModules` (bundles a bundler already imported) | renderers, players, Workers |
26
26
  | `@tongue-core/project/template` | the template format (`template.json`), `TemplateSource`, `projectFromTemplate` | `tongue init`, apps with template catalogs |
27
+ | `@tongue-core/project/media` | media identities, prepared-media schema, shared HTTP transport and typed failures | SDK acquisition, browser playback, host storage adapters |
27
28
 
28
29
  `@tongue-core/project` exports all of it.
29
30
 
@@ -42,29 +42,39 @@ export declare const extractFilm: (project: LoadedProject, options?: ExtractOpti
42
42
  readonly kind: "font";
43
43
  readonly name: string;
44
44
  readonly source: string;
45
+ readonly sha256?: string | undefined;
46
+ readonly prepared?: string | undefined;
47
+ readonly italic?: string | undefined;
45
48
  } | {
46
49
  readonly kind: "image";
47
50
  readonly name: string;
48
51
  readonly source: string;
49
52
  readonly maxSize: number;
53
+ readonly sha256?: string | undefined;
54
+ readonly prepared?: string | undefined;
50
55
  } | {
51
56
  readonly kind: "video";
52
57
  readonly name: string;
53
58
  readonly source: string;
54
59
  readonly maxSize: number;
60
+ readonly sha256?: string | undefined;
61
+ readonly prepared?: string | undefined;
55
62
  } | {
56
63
  readonly kind: "audio";
57
64
  readonly name: string;
58
65
  readonly source: string;
66
+ readonly sha256?: string | undefined;
67
+ readonly prepared?: string | undefined;
59
68
  })[];
60
69
  readonly tracks: readonly {
61
70
  readonly id: string;
62
71
  readonly kind: "audio" | "visual";
63
72
  readonly clips: readonly ({
64
- readonly scene: string;
73
+ readonly kind: "scene";
74
+ readonly id: string;
65
75
  readonly props: import("effect/Schema").Json;
76
+ readonly scene: string;
66
77
  readonly opacity: number;
67
- readonly id: string;
68
78
  readonly start: number;
69
79
  readonly duration: number;
70
80
  readonly end: number;
@@ -72,17 +82,13 @@ export declare const extractFilm: (project: LoadedProject, options?: ExtractOpti
72
82
  readonly file: string;
73
83
  readonly line: number;
74
84
  } | null;
75
- readonly kind: "scene";
85
+ readonly blend?: "multiply" | "screen" | "overlay" | "soft-light" | "color-dodge" | "normal" | undefined;
76
86
  } | {
77
- readonly asset: string;
78
87
  readonly in: number;
79
88
  readonly out: number;
80
- readonly speed: number;
81
- readonly reverse: boolean;
82
- readonly freeze: boolean;
83
- readonly fit: "cover" | "contain";
84
- readonly opacity: number;
89
+ readonly kind: "video";
85
90
  readonly id: string;
91
+ readonly opacity: number;
86
92
  readonly start: number;
87
93
  readonly duration: number;
88
94
  readonly end: number;
@@ -90,12 +96,16 @@ export declare const extractFilm: (project: LoadedProject, options?: ExtractOpti
90
96
  readonly file: string;
91
97
  readonly line: number;
92
98
  } | null;
93
- readonly kind: "video";
94
- } | {
95
99
  readonly asset: string;
100
+ readonly speed: number;
101
+ readonly reverse: boolean;
102
+ readonly freeze: boolean;
96
103
  readonly fit: "cover" | "contain";
97
- readonly opacity: number;
104
+ readonly blend?: "multiply" | "screen" | "overlay" | "soft-light" | "color-dodge" | "normal" | undefined;
105
+ } | {
106
+ readonly kind: "image";
98
107
  readonly id: string;
108
+ readonly opacity: number;
99
109
  readonly start: number;
100
110
  readonly duration: number;
101
111
  readonly end: number;
@@ -103,15 +113,13 @@ export declare const extractFilm: (project: LoadedProject, options?: ExtractOpti
103
113
  readonly file: string;
104
114
  readonly line: number;
105
115
  } | null;
106
- readonly kind: "image";
107
- } | {
108
116
  readonly asset: string;
117
+ readonly fit: "cover" | "contain";
118
+ readonly blend?: "multiply" | "screen" | "overlay" | "soft-light" | "color-dodge" | "normal" | undefined;
119
+ } | {
109
120
  readonly in: number;
110
121
  readonly out: number;
111
- readonly speed: number;
112
- readonly gain: number;
113
- readonly fadeIn: number;
114
- readonly fadeOut: number;
122
+ readonly kind: "audio";
115
123
  readonly id: string;
116
124
  readonly start: number;
117
125
  readonly duration: number;
@@ -120,7 +128,18 @@ export declare const extractFilm: (project: LoadedProject, options?: ExtractOpti
120
128
  readonly file: string;
121
129
  readonly line: number;
122
130
  } | null;
123
- readonly kind: "audio";
131
+ readonly asset: string;
132
+ readonly speed: number;
133
+ readonly gain: number;
134
+ readonly fadeIn: number;
135
+ readonly fadeOut: number;
136
+ readonly voice?: {
137
+ readonly words: readonly {
138
+ readonly text: string;
139
+ readonly start: number;
140
+ readonly end: number;
141
+ }[];
142
+ } | undefined;
124
143
  })[];
125
144
  readonly transitions: readonly ({
126
145
  readonly from: string;
@@ -202,6 +221,21 @@ export declare const extractFilm: (project: LoadedProject, options?: ExtractOpti
202
221
  readonly line: number;
203
222
  } | null;
204
223
  readonly style: "morph";
224
+ } | {
225
+ readonly noise: "cloud" | "ridged";
226
+ readonly size: number;
227
+ readonly edge: string | null;
228
+ readonly from: string;
229
+ readonly to: string;
230
+ readonly frames: number;
231
+ readonly ease: "linear" | "glide" | "settle" | "snap" | "in" | "out" | "swift";
232
+ readonly start: number;
233
+ readonly end: number;
234
+ readonly origin: {
235
+ readonly file: string;
236
+ readonly line: number;
237
+ } | null;
238
+ readonly style: "dissolve";
205
239
  })[];
206
240
  }[];
207
241
  readonly warnings: readonly string[];
@@ -5,6 +5,7 @@ import type { ModuleHost } from "../load/host.js";
5
5
  import { type CompiledProject } from "./compile-project.js";
6
6
  import { type ExtractOptions } from "./extract.js";
7
7
  import type { ProjectFiles } from "./layout.js";
8
+ import type { MediaOriginal } from "../media/media.js";
8
9
  export declare const BUILD_FILE = "build.json";
9
10
  export declare const FILM_DOC_FILE = "film.json";
10
11
  /** Where a build keeps its imported assets. */
@@ -26,6 +27,7 @@ export interface WriteOptions {
26
27
  readonly tongue: string;
27
28
  /** The imported asset files the film loads, as the host found them. */
28
29
  readonly assets: ReadonlyArray<AssetFile>;
30
+ readonly originals?: ReadonlyArray<MediaOriginal>;
29
31
  }
30
32
  /** The files of a build of `compiled`, whose timeline is `doc`. */
31
33
  export declare function writeBuild(compiled: CompiledProject, doc: FilmDoc, options: WriteOptions): Build;
@@ -18,6 +18,7 @@ export function writeBuild(compiled, doc, options) {
18
18
  const manifest = {
19
19
  format: BUILD_FORMAT, version: BUILD_VERSION, tongue: options.tongue, project: compiled.manifest.name, source: compiled.source,
20
20
  film: FILM_DOC_FILE, assets: { dir: ASSETS_DIR, files },
21
+ ...(options.originals && options.originals.length > 0 ? { originals: options.originals } : {}),
21
22
  };
22
23
  return {
23
24
  manifest,
@@ -40,29 +40,39 @@ export declare const assembleFilm: (doc: {
40
40
  readonly kind: "font";
41
41
  readonly name: string;
42
42
  readonly source: string;
43
+ readonly sha256?: string | undefined;
44
+ readonly prepared?: string | undefined;
45
+ readonly italic?: string | undefined;
43
46
  } | {
44
47
  readonly kind: "image";
45
48
  readonly name: string;
46
49
  readonly source: string;
47
50
  readonly maxSize: number;
51
+ readonly sha256?: string | undefined;
52
+ readonly prepared?: string | undefined;
48
53
  } | {
49
54
  readonly kind: "video";
50
55
  readonly name: string;
51
56
  readonly source: string;
52
57
  readonly maxSize: number;
58
+ readonly sha256?: string | undefined;
59
+ readonly prepared?: string | undefined;
53
60
  } | {
54
61
  readonly kind: "audio";
55
62
  readonly name: string;
56
63
  readonly source: string;
64
+ readonly sha256?: string | undefined;
65
+ readonly prepared?: string | undefined;
57
66
  })[];
58
67
  readonly tracks: readonly {
59
68
  readonly id: string;
60
69
  readonly kind: "audio" | "visual";
61
70
  readonly clips: readonly ({
62
- readonly scene: string;
71
+ readonly kind: "scene";
72
+ readonly id: string;
63
73
  readonly props: import("effect/Schema").Json;
74
+ readonly scene: string;
64
75
  readonly opacity: number;
65
- readonly id: string;
66
76
  readonly start: number;
67
77
  readonly duration: number;
68
78
  readonly end: number;
@@ -70,17 +80,13 @@ export declare const assembleFilm: (doc: {
70
80
  readonly file: string;
71
81
  readonly line: number;
72
82
  } | null;
73
- readonly kind: "scene";
83
+ readonly blend?: "multiply" | "screen" | "overlay" | "soft-light" | "color-dodge" | "normal" | undefined;
74
84
  } | {
75
- readonly asset: string;
76
85
  readonly in: number;
77
86
  readonly out: number;
78
- readonly speed: number;
79
- readonly reverse: boolean;
80
- readonly freeze: boolean;
81
- readonly fit: "cover" | "contain";
82
- readonly opacity: number;
87
+ readonly kind: "video";
83
88
  readonly id: string;
89
+ readonly opacity: number;
84
90
  readonly start: number;
85
91
  readonly duration: number;
86
92
  readonly end: number;
@@ -88,12 +94,16 @@ export declare const assembleFilm: (doc: {
88
94
  readonly file: string;
89
95
  readonly line: number;
90
96
  } | null;
91
- readonly kind: "video";
92
- } | {
93
97
  readonly asset: string;
98
+ readonly speed: number;
99
+ readonly reverse: boolean;
100
+ readonly freeze: boolean;
94
101
  readonly fit: "cover" | "contain";
95
- readonly opacity: number;
102
+ readonly blend?: "multiply" | "screen" | "overlay" | "soft-light" | "color-dodge" | "normal" | undefined;
103
+ } | {
104
+ readonly kind: "image";
96
105
  readonly id: string;
106
+ readonly opacity: number;
97
107
  readonly start: number;
98
108
  readonly duration: number;
99
109
  readonly end: number;
@@ -101,15 +111,13 @@ export declare const assembleFilm: (doc: {
101
111
  readonly file: string;
102
112
  readonly line: number;
103
113
  } | null;
104
- readonly kind: "image";
105
- } | {
106
114
  readonly asset: string;
115
+ readonly fit: "cover" | "contain";
116
+ readonly blend?: "multiply" | "screen" | "overlay" | "soft-light" | "color-dodge" | "normal" | undefined;
117
+ } | {
107
118
  readonly in: number;
108
119
  readonly out: number;
109
- readonly speed: number;
110
- readonly gain: number;
111
- readonly fadeIn: number;
112
- readonly fadeOut: number;
120
+ readonly kind: "audio";
113
121
  readonly id: string;
114
122
  readonly start: number;
115
123
  readonly duration: number;
@@ -118,7 +126,18 @@ export declare const assembleFilm: (doc: {
118
126
  readonly file: string;
119
127
  readonly line: number;
120
128
  } | null;
121
- readonly kind: "audio";
129
+ readonly asset: string;
130
+ readonly speed: number;
131
+ readonly gain: number;
132
+ readonly fadeIn: number;
133
+ readonly fadeOut: number;
134
+ readonly voice?: {
135
+ readonly words: readonly {
136
+ readonly text: string;
137
+ readonly start: number;
138
+ readonly end: number;
139
+ }[];
140
+ } | undefined;
122
141
  })[];
123
142
  readonly transitions: readonly ({
124
143
  readonly from: string;
@@ -200,6 +219,21 @@ export declare const assembleFilm: (doc: {
200
219
  readonly line: number;
201
220
  } | null;
202
221
  readonly style: "morph";
222
+ } | {
223
+ readonly noise: "cloud" | "ridged";
224
+ readonly size: number;
225
+ readonly edge: string | null;
226
+ readonly from: string;
227
+ readonly to: string;
228
+ readonly frames: number;
229
+ readonly ease: "linear" | "glide" | "settle" | "snap" | "in" | "out" | "swift";
230
+ readonly start: number;
231
+ readonly end: number;
232
+ readonly origin: {
233
+ readonly file: string;
234
+ readonly line: number;
235
+ } | null;
236
+ readonly style: "dissolve";
203
237
  })[];
204
238
  }[];
205
239
  readonly warnings: readonly string[];
@@ -236,29 +270,39 @@ export declare const sceneFilmDoc: (doc: {
236
270
  readonly kind: "font";
237
271
  readonly name: string;
238
272
  readonly source: string;
273
+ readonly sha256?: string | undefined;
274
+ readonly prepared?: string | undefined;
275
+ readonly italic?: string | undefined;
239
276
  } | {
240
277
  readonly kind: "image";
241
278
  readonly name: string;
242
279
  readonly source: string;
243
280
  readonly maxSize: number;
281
+ readonly sha256?: string | undefined;
282
+ readonly prepared?: string | undefined;
244
283
  } | {
245
284
  readonly kind: "video";
246
285
  readonly name: string;
247
286
  readonly source: string;
248
287
  readonly maxSize: number;
288
+ readonly sha256?: string | undefined;
289
+ readonly prepared?: string | undefined;
249
290
  } | {
250
291
  readonly kind: "audio";
251
292
  readonly name: string;
252
293
  readonly source: string;
294
+ readonly sha256?: string | undefined;
295
+ readonly prepared?: string | undefined;
253
296
  })[];
254
297
  readonly tracks: readonly {
255
298
  readonly id: string;
256
299
  readonly kind: "audio" | "visual";
257
300
  readonly clips: readonly ({
258
- readonly scene: string;
301
+ readonly kind: "scene";
302
+ readonly id: string;
259
303
  readonly props: import("effect/Schema").Json;
304
+ readonly scene: string;
260
305
  readonly opacity: number;
261
- readonly id: string;
262
306
  readonly start: number;
263
307
  readonly duration: number;
264
308
  readonly end: number;
@@ -266,17 +310,13 @@ export declare const sceneFilmDoc: (doc: {
266
310
  readonly file: string;
267
311
  readonly line: number;
268
312
  } | null;
269
- readonly kind: "scene";
313
+ readonly blend?: "multiply" | "screen" | "overlay" | "soft-light" | "color-dodge" | "normal" | undefined;
270
314
  } | {
271
- readonly asset: string;
272
315
  readonly in: number;
273
316
  readonly out: number;
274
- readonly speed: number;
275
- readonly reverse: boolean;
276
- readonly freeze: boolean;
277
- readonly fit: "cover" | "contain";
278
- readonly opacity: number;
317
+ readonly kind: "video";
279
318
  readonly id: string;
319
+ readonly opacity: number;
280
320
  readonly start: number;
281
321
  readonly duration: number;
282
322
  readonly end: number;
@@ -284,12 +324,16 @@ export declare const sceneFilmDoc: (doc: {
284
324
  readonly file: string;
285
325
  readonly line: number;
286
326
  } | null;
287
- readonly kind: "video";
288
- } | {
289
327
  readonly asset: string;
328
+ readonly speed: number;
329
+ readonly reverse: boolean;
330
+ readonly freeze: boolean;
290
331
  readonly fit: "cover" | "contain";
291
- readonly opacity: number;
332
+ readonly blend?: "multiply" | "screen" | "overlay" | "soft-light" | "color-dodge" | "normal" | undefined;
333
+ } | {
334
+ readonly kind: "image";
292
335
  readonly id: string;
336
+ readonly opacity: number;
293
337
  readonly start: number;
294
338
  readonly duration: number;
295
339
  readonly end: number;
@@ -297,15 +341,13 @@ export declare const sceneFilmDoc: (doc: {
297
341
  readonly file: string;
298
342
  readonly line: number;
299
343
  } | null;
300
- readonly kind: "image";
301
- } | {
302
344
  readonly asset: string;
345
+ readonly fit: "cover" | "contain";
346
+ readonly blend?: "multiply" | "screen" | "overlay" | "soft-light" | "color-dodge" | "normal" | undefined;
347
+ } | {
303
348
  readonly in: number;
304
349
  readonly out: number;
305
- readonly speed: number;
306
- readonly gain: number;
307
- readonly fadeIn: number;
308
- readonly fadeOut: number;
350
+ readonly kind: "audio";
309
351
  readonly id: string;
310
352
  readonly start: number;
311
353
  readonly duration: number;
@@ -314,7 +356,18 @@ export declare const sceneFilmDoc: (doc: {
314
356
  readonly file: string;
315
357
  readonly line: number;
316
358
  } | null;
317
- readonly kind: "audio";
359
+ readonly asset: string;
360
+ readonly speed: number;
361
+ readonly gain: number;
362
+ readonly fadeIn: number;
363
+ readonly fadeOut: number;
364
+ readonly voice?: {
365
+ readonly words: readonly {
366
+ readonly text: string;
367
+ readonly start: number;
368
+ readonly end: number;
369
+ }[];
370
+ } | undefined;
318
371
  })[];
319
372
  readonly transitions: readonly ({
320
373
  readonly from: string;
@@ -396,6 +449,21 @@ export declare const sceneFilmDoc: (doc: {
396
449
  readonly line: number;
397
450
  } | null;
398
451
  readonly style: "morph";
452
+ } | {
453
+ readonly noise: "cloud" | "ridged";
454
+ readonly size: number;
455
+ readonly edge: string | null;
456
+ readonly from: string;
457
+ readonly to: string;
458
+ readonly frames: number;
459
+ readonly ease: "linear" | "glide" | "settle" | "snap" | "in" | "out" | "swift";
460
+ readonly start: number;
461
+ readonly end: number;
462
+ readonly origin: {
463
+ readonly file: string;
464
+ readonly line: number;
465
+ } | null;
466
+ readonly style: "dissolve";
399
467
  })[];
400
468
  }[];
401
469
  readonly warnings: readonly string[];
@@ -429,29 +497,39 @@ export declare const sceneFilmDoc: (doc: {
429
497
  readonly kind: "font";
430
498
  readonly name: string;
431
499
  readonly source: string;
500
+ readonly sha256?: string | undefined;
501
+ readonly prepared?: string | undefined;
502
+ readonly italic?: string | undefined;
432
503
  } | {
433
504
  readonly kind: "image";
434
505
  readonly name: string;
435
506
  readonly source: string;
436
507
  readonly maxSize: number;
508
+ readonly sha256?: string | undefined;
509
+ readonly prepared?: string | undefined;
437
510
  } | {
438
511
  readonly kind: "video";
439
512
  readonly name: string;
440
513
  readonly source: string;
441
514
  readonly maxSize: number;
515
+ readonly sha256?: string | undefined;
516
+ readonly prepared?: string | undefined;
442
517
  } | {
443
518
  readonly kind: "audio";
444
519
  readonly name: string;
445
520
  readonly source: string;
521
+ readonly sha256?: string | undefined;
522
+ readonly prepared?: string | undefined;
446
523
  })[];
447
524
  readonly tracks: readonly {
448
525
  readonly id: string;
449
526
  readonly kind: "audio" | "visual";
450
527
  readonly clips: readonly ({
451
- readonly scene: string;
528
+ readonly kind: "scene";
529
+ readonly id: string;
452
530
  readonly props: import("effect/Schema").Json;
531
+ readonly scene: string;
453
532
  readonly opacity: number;
454
- readonly id: string;
455
533
  readonly start: number;
456
534
  readonly duration: number;
457
535
  readonly end: number;
@@ -459,17 +537,13 @@ export declare const sceneFilmDoc: (doc: {
459
537
  readonly file: string;
460
538
  readonly line: number;
461
539
  } | null;
462
- readonly kind: "scene";
540
+ readonly blend?: "multiply" | "screen" | "overlay" | "soft-light" | "color-dodge" | "normal" | undefined;
463
541
  } | {
464
- readonly asset: string;
465
542
  readonly in: number;
466
543
  readonly out: number;
467
- readonly speed: number;
468
- readonly reverse: boolean;
469
- readonly freeze: boolean;
470
- readonly fit: "cover" | "contain";
471
- readonly opacity: number;
544
+ readonly kind: "video";
472
545
  readonly id: string;
546
+ readonly opacity: number;
473
547
  readonly start: number;
474
548
  readonly duration: number;
475
549
  readonly end: number;
@@ -477,12 +551,16 @@ export declare const sceneFilmDoc: (doc: {
477
551
  readonly file: string;
478
552
  readonly line: number;
479
553
  } | null;
480
- readonly kind: "video";
481
- } | {
482
554
  readonly asset: string;
555
+ readonly speed: number;
556
+ readonly reverse: boolean;
557
+ readonly freeze: boolean;
483
558
  readonly fit: "cover" | "contain";
484
- readonly opacity: number;
559
+ readonly blend?: "multiply" | "screen" | "overlay" | "soft-light" | "color-dodge" | "normal" | undefined;
560
+ } | {
561
+ readonly kind: "image";
485
562
  readonly id: string;
563
+ readonly opacity: number;
486
564
  readonly start: number;
487
565
  readonly duration: number;
488
566
  readonly end: number;
@@ -490,15 +568,13 @@ export declare const sceneFilmDoc: (doc: {
490
568
  readonly file: string;
491
569
  readonly line: number;
492
570
  } | null;
493
- readonly kind: "image";
494
- } | {
495
571
  readonly asset: string;
572
+ readonly fit: "cover" | "contain";
573
+ readonly blend?: "multiply" | "screen" | "overlay" | "soft-light" | "color-dodge" | "normal" | undefined;
574
+ } | {
496
575
  readonly in: number;
497
576
  readonly out: number;
498
- readonly speed: number;
499
- readonly gain: number;
500
- readonly fadeIn: number;
501
- readonly fadeOut: number;
577
+ readonly kind: "audio";
502
578
  readonly id: string;
503
579
  readonly start: number;
504
580
  readonly duration: number;
@@ -507,7 +583,18 @@ export declare const sceneFilmDoc: (doc: {
507
583
  readonly file: string;
508
584
  readonly line: number;
509
585
  } | null;
510
- readonly kind: "audio";
586
+ readonly asset: string;
587
+ readonly speed: number;
588
+ readonly gain: number;
589
+ readonly fadeIn: number;
590
+ readonly fadeOut: number;
591
+ readonly voice?: {
592
+ readonly words: readonly {
593
+ readonly text: string;
594
+ readonly start: number;
595
+ readonly end: number;
596
+ }[];
597
+ } | undefined;
511
598
  })[];
512
599
  readonly transitions: readonly ({
513
600
  readonly from: string;
@@ -589,6 +676,21 @@ export declare const sceneFilmDoc: (doc: {
589
676
  readonly line: number;
590
677
  } | null;
591
678
  readonly style: "morph";
679
+ } | {
680
+ readonly noise: "cloud" | "ridged";
681
+ readonly size: number;
682
+ readonly edge: string | null;
683
+ readonly from: string;
684
+ readonly to: string;
685
+ readonly frames: number;
686
+ readonly ease: "linear" | "glide" | "settle" | "snap" | "in" | "out" | "swift";
687
+ readonly start: number;
688
+ readonly end: number;
689
+ readonly origin: {
690
+ readonly file: string;
691
+ readonly line: number;
692
+ } | null;
693
+ readonly style: "dissolve";
592
694
  })[];
593
695
  }[];
594
696
  readonly warnings: readonly string[];