@mengine/medeo-client 2.0.1-alpha.15 → 2.0.1-alpha.17

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.
@@ -3183,10 +3183,11 @@ function projectEntityTimeline(rows) {
3183
3183
  } else if (track.role === "speech") {
3184
3184
  const asset = mediaAssetFacts(graph, content);
3185
3185
  requireUntrimmedAudio(content, marker, placement);
3186
- const external = externalLocator(asset, "memota-speech");
3187
3186
  const renderEdges = graph.adjacent(content.entityId, "phonetic-script-render");
3188
3187
  const timbreEdges = graph.adjacent(content.entityId, "voice-timbre");
3189
- const assembled = renderEdges.length > 0 || timbreEdges.length > 0 ? assemblePhoneticScriptContent(rows, graph.one(content.entityId, "phonetic-script-render", "phonetic-script").entityId) : void 0;
3188
+ const isSynthesized = renderEdges.length > 0 || timbreEdges.length > 0;
3189
+ const external = externalLocator(asset, isSynthesized ? "memota-speech" : "memota");
3190
+ const assembled = isSynthesized ? assemblePhoneticScriptContent(rows, graph.one(content.entityId, "phonetic-script-render", "phonetic-script").entityId) : void 0;
3190
3191
  if (timbreEdges.length > 1) fail("A voiceover resolves at most one Voice identity");
3191
3192
  const voice = timbreEdges.length === 0 ? void 0 : graph.one(content.entityId, "voice-timbre", "voice").payload.voice;
3192
3193
  if (voice !== void 0 && (!object(voice) || voice.system !== "voice-library" || typeof voice.key !== "string")) fail("Voice must use an explicit voice-library locator");
@@ -4715,4 +4716,4 @@ function createPlainMemoryAdapter(document, options) {
4715
4716
  return new PlainMemoryAdapter(document, options);
4716
4717
  }
4717
4718
  //#endregion
4718
- export { partUnionSchema as $, decodeEntityRelationRows as A, isJsonObject as B, applyFieldChanges as C, recordEntries as Ct, EntityProjectionGraph as D, projectEntityTimeline as E, bytesToBase64 as Et, assembleScriptText as F, buildInitialVideoDocument as G, createRelationId as H, findComposedAudioScript as I, fromVideoDocument as J, buildSpeechHostMap as K, selectAudioScriptSegment as L, assembleCaptionContent as M, assembleEntityContent as N, resolveEntityTimelineLayout as O, assemblePhoneticScriptContent as P, validateVideoDocument as Q, updateEntityFields as R, equalJson as S, partUnionToDraft as St, resolveFieldPath as T, base64ToBytes as Tt, hasSequence as U, createEntityId as V, isMediaAssetVariantKind as W, VideoDocumentValidationError as X, toVideoDocument as Y, assertValidVideoDocument as Z, audioScriptAssetOf as _, partDurationMs as _t, createMirrorVideoDocument as a, laneTrackId as at, phoneticScriptAssetOf as b, effectiveVideoClipDurationMs as bt, DocumentMutationGuard as c, arrangeMainTrackSeamlessly as ct, LoroEntityDraft as d, recalculateTimelineDuration as dt, videoDocumentSchema as et, readEntityDocument as f, resolveAllSpeechOverlaps as ft, audioScriptAssetHash as g, isEmptyVideoClip as gt, audioScriptAssetFields as h, TIMELINE_SKELETON_DURATION_MS as ht, MirrorVideoDocumentAdapter as i, hasResolvedPlacement as it, ScriptCompositionError as j, EntityTimelineProjectionError as k, LORO_ENTITY_SCHEMA as l, fillMainTrackTimeGaps as lt, audioScriptAssetContent as m, syncAggregatedClipsTimePosition as mt, createPlainMemoryAdapter as n, ensureLaneTrack as nt, createMirrorVideoDocumentAdapter as o, solveVideoDocument as ot, entityOrderGroups as p, resolveSpeechOverlapByShiftingVideos as pt, derivePositionFromAbs as q, generatePartId as r, findLaneTrack as rt, readVideoDocumentFromDraft as s, cascadeAfterVideoClipChanges as st, PlainMemoryAdapter as t, LANE_KINDS_IN_STACK_ORDER as tt, LoroEntityDocument as u, reassignSpeechesToVideoClipsByTime as ut, phoneticScriptAssetContent as v, safeDurationMs as vt, assertFieldChanges as w, videoDocumentMirrorSchema as wt, scriptSourceAssetOf as x, speedOf as xt, phoneticScriptAssetHash as y, DEFAULT_UNIT_TIME_MS as yt, variantBaseEntityIds as z };
4719
+ export { validateVideoDocument as $, EntityTimelineProjectionError as A, variantBaseEntityIds as B, equalJson as C, partUnionToDraft as Ct, projectEntityTimeline as D, bytesToBase64 as Dt, resolveFieldPath as E, base64ToBytes as Et, assemblePhoneticScriptContent as F, isMediaAssetVariantKind as G, createEntityId as H, assembleScriptText as I, derivePositionFromAbs as J, buildInitialVideoDocument as K, findComposedAudioScript as L, ScriptCompositionError as M, assembleCaptionContent as N, EntityProjectionGraph as O, assembleEntityContent as P, assertValidVideoDocument as Q, selectAudioScriptSegment as R, canonicalJson as S, speedOf as St, assertFieldChanges as T, videoDocumentMirrorSchema as Tt, createRelationId as U, isJsonObject as V, hasSequence as W, toVideoDocument as X, fromVideoDocument as Y, VideoDocumentValidationError as Z, audioScriptAssetOf as _, isEmptyVideoClip as _t, createMirrorVideoDocument as a, hasResolvedPlacement as at, phoneticScriptAssetOf as b, DEFAULT_UNIT_TIME_MS as bt, DocumentMutationGuard as c, cascadeAfterVideoClipChanges as ct, LoroEntityDraft as d, reassignSpeechesToVideoClipsByTime as dt, partUnionSchema as et, readEntityDocument as f, recalculateTimelineDuration as ft, audioScriptAssetHash as g, TIMELINE_SKELETON_DURATION_MS as gt, audioScriptAssetFields as h, syncAggregatedClipsTimePosition as ht, MirrorVideoDocumentAdapter as i, findLaneTrack as it, decodeEntityRelationRows as j, resolveEntityTimelineLayout as k, LORO_ENTITY_SCHEMA as l, arrangeMainTrackSeamlessly as lt, audioScriptAssetContent as m, resolveSpeechOverlapByShiftingVideos as mt, createPlainMemoryAdapter as n, LANE_KINDS_IN_STACK_ORDER as nt, createMirrorVideoDocumentAdapter as o, laneTrackId as ot, entityOrderGroups as p, resolveAllSpeechOverlaps as pt, buildSpeechHostMap as q, generatePartId as r, ensureLaneTrack as rt, readVideoDocumentFromDraft as s, solveVideoDocument as st, PlainMemoryAdapter as t, videoDocumentSchema as tt, LoroEntityDocument as u, fillMainTrackTimeGaps as ut, phoneticScriptAssetContent as v, partDurationMs as vt, applyFieldChanges as w, recordEntries as wt, scriptSourceAssetOf as x, effectiveVideoClipDurationMs as xt, phoneticScriptAssetHash as y, safeDurationMs as yt, updateEntityFields as z };
package/dist/index.d.ts CHANGED
@@ -262,6 +262,169 @@ declare class EntityGraphHttpClient {
262
262
  private request;
263
263
  }
264
264
  //#endregion
265
+ //#region src/entity-crdt/field-changes.d.ts
266
+ /** List members are addressed by identity, never a transient array offset. */
267
+ type FieldPath = readonly (string | {
268
+ elementId: string;
269
+ })[];
270
+ type FieldChange = {
271
+ op: 'set';
272
+ path: FieldPath;
273
+ value: JsonValue;
274
+ } | {
275
+ op: 'unset';
276
+ path: FieldPath;
277
+ } | {
278
+ op: 'text.splice';
279
+ path: FieldPath;
280
+ index: number;
281
+ deleteCount: number;
282
+ text: string;
283
+ } | {
284
+ op: 'list.insert';
285
+ path: FieldPath;
286
+ value: JsonValue;
287
+ beforeElementId: string | null;
288
+ } | {
289
+ op: 'list.move';
290
+ path: FieldPath;
291
+ elementId: string;
292
+ beforeElementId: string | null;
293
+ } | {
294
+ op: 'list.remove';
295
+ path: FieldPath;
296
+ elementId: string;
297
+ };
298
+ declare function assertFieldChanges(changes: readonly FieldChange[]): void;
299
+ /** Resolve against the sequential causal view; the numeric path never crosses the API boundary. */
300
+ declare function resolveFieldPath(payload: JsonObject, path: FieldPath): (string | number)[];
301
+ /** Detached plan evaluation. Native compilation replays the original operations, not this snapshot. */
302
+ declare function applyFieldChanges(payload: JsonObject, changes: readonly FieldChange[]): JsonObject;
303
+ //#endregion
304
+ //#region src/entity-crdt/entity-document.d.ts
305
+ declare const LORO_ENTITY_SCHEMA = "medeo.entities.loro.v1";
306
+ interface EntityDocumentState {
307
+ readonly rows: EntityRelationRows;
308
+ readonly project: Readonly<Record<string, string>>;
309
+ }
310
+ type Command = {
311
+ type: 'create';
312
+ row: EntityRow;
313
+ } | {
314
+ type: 'selection-baseline';
315
+ root: string;
316
+ fingerprint: string;
317
+ } | {
318
+ type: 'order';
319
+ group: string;
320
+ roots: string[];
321
+ token: string;
322
+ } | {
323
+ type: 'write';
324
+ root: string;
325
+ payload: JsonObject;
326
+ token: string;
327
+ } | {
328
+ type: 'text';
329
+ root: string;
330
+ path: readonly (string | number)[];
331
+ start: number;
332
+ deleteCount: number;
333
+ text: string;
334
+ token: string;
335
+ } | {
336
+ type: 'field';
337
+ root: string;
338
+ path: (string | number)[];
339
+ change: FieldChange;
340
+ token: string;
341
+ } | {
342
+ type: 'relation-field';
343
+ root: string;
344
+ path: (string | number)[];
345
+ change: FieldChange;
346
+ } | {
347
+ type: 'delete';
348
+ root: string;
349
+ } | {
350
+ type: 'relation';
351
+ row: RelationRow;
352
+ } | {
353
+ type: 'relation-fields';
354
+ root: string;
355
+ metadata: JsonObject;
356
+ trace: JsonObject;
357
+ } | {
358
+ type: 'unlink';
359
+ root: string;
360
+ } | {
361
+ type: 'attach';
362
+ slot: string;
363
+ entityId: string;
364
+ };
365
+ /** Plain domain objects assembled from native Loro state, never a second writable authority. */
366
+ declare function readEntityDocument(doc: LoroDoc, allowSelectionConflicts?: boolean): EntityDocumentState;
367
+ /** Native editing containers survive domain version changes and merge independently. */
368
+ declare class LoroEntityDocument {
369
+ readonly doc: LoroDoc;
370
+ private readonly validate?;
371
+ private readonly undoManager;
372
+ constructor(doc: LoroDoc, validate?: ((state: EntityDocumentState) => void) | undefined);
373
+ /** Open a causal snapshot using the same Loro runtime as the compiler. */
374
+ static fromSnapshot(snapshot: Uint8Array, validate?: (state: EntityDocumentState) => void): LoroEntityDocument;
375
+ static create(rows: EntityRelationRows, project?: Readonly<Record<string, string>>, peerId?: PeerID): LoroEntityDocument;
376
+ snapshot(): EntityDocumentState;
377
+ relationsOf(entityId: string): readonly RelationRow[];
378
+ /** Resolve a queued edit target through its native identity without changing history. */
379
+ resolveCurrentEntityId(id: string): string;
380
+ getVersion(id: string): EntityRow | undefined;
381
+ /** The callback and every domain validation execute on a causally complete fork first. */
382
+ transact(edit: (draft: LoroEntityDraft) => void): Uint8Array;
383
+ /** Import preserves native operation identities; projection errors never discard remote operations. */
384
+ import(update: Uint8Array): void;
385
+ /**
386
+ * Bind a saved snapshot without rewriting text operations or resolving
387
+ * selection conflicts. The script names the bytes the same way everything
388
+ * else does — an Asset entity plus a Relation — and keeps only the
389
+ * fingerprint that tells a stale snapshot from a current one. The Relation is
390
+ * `to-asset`: these bytes are the script's own content written out, not a
391
+ * source it was made from.
392
+ */
393
+ bindAudioScriptAsset(entityId: string, assetId: string, expectedContentHash: string): Uint8Array;
394
+ canUndo(): boolean;
395
+ canRedo(): boolean;
396
+ undo(): boolean;
397
+ redo(): boolean;
398
+ private historyEdit;
399
+ }
400
+ declare class LoroEntityDraft {
401
+ private readonly doc;
402
+ readonly commands: Command[];
403
+ private readonly selectedRoots;
404
+ private readonly relationAliases;
405
+ constructor(doc: LoroDoc);
406
+ snapshot(): EntityDocumentState;
407
+ order(groupId: string, entityIds: readonly string[]): void;
408
+ /** Project the final scalar placement intents onto the existing native ordering containers. */
409
+ reconcileOrder(rows: EntityRelationRows): void;
410
+ create(row: EntityRow): void;
411
+ delete(entityId: string): void;
412
+ attach(slot: string, entityId: string): void;
413
+ link(row: RelationRow): void;
414
+ patchRelation(relationId: string, metadata: JsonObject, trace: JsonObject): void;
415
+ unlink(relationId: string): void;
416
+ private relationRoot;
417
+ update(entityId: string, fields: JsonObject): void;
418
+ declare(entityId: string, fields: JsonObject): void;
419
+ replaceOwned(entityId: string, payload: JsonObject): void;
420
+ editText(entityId: string, path: readonly (string | number)[], start: number, deleteCount: number, text: string): void;
421
+ /** Generic assembled-field edit compiled at the author's causal position. */
422
+ change(entityId: string, changes: readonly FieldChange[]): void;
423
+ changeRelation(relationId: string, changes: readonly FieldChange[]): void;
424
+ captureSelectionBaselines(): void;
425
+ private record;
426
+ }
427
+ //#endregion
265
428
  //#region src/entity-editor/types.d.ts
266
429
  /** Injectable domain-id mint shared by Entity and Relation authoring surfaces. */
267
430
  type EntityTimelineIdFactory = (prefix: 'entity' | 'relation') => string;
@@ -298,6 +461,71 @@ interface VoiceoverMediaAssetFact {
298
461
  }
299
462
  /** Facts resolved from media storage. A trim window never substitutes for intrinsic duration. */
300
463
  type MediaAssetFact = ImageMediaAssetFact | VideoMediaAssetFact | AudioMediaAssetFact | VoiceoverMediaAssetFact;
464
+ /** Host-resolved ASR artifact. The SDK treats its storage fields as opaque facts. */
465
+ interface CaptionAssetFact {
466
+ readonly assetId: string;
467
+ readonly storageKey?: string;
468
+ }
469
+ interface AsrCaptionSegment extends ScriptTextSegment {
470
+ readonly startMs: number;
471
+ readonly endMs: number;
472
+ }
473
+ /** One closed host command for materializing an ASR result into the Entity graph. */
474
+ interface ApplyCaptionAssetsInput {
475
+ readonly effectId: string;
476
+ readonly timelineEntityId: string;
477
+ readonly trackEntityId: string;
478
+ readonly source: {
479
+ readonly entityId: string;
480
+ readonly entityKind: 'audio' | 'video';
481
+ };
482
+ /** The exact placed use whose source-relative ASR timing is being materialized. */
483
+ readonly sourceOccurrence: {
484
+ readonly clipEntityId: string;
485
+ readonly markerEntityId: string;
486
+ };
487
+ readonly captionAsset: CaptionAssetFact;
488
+ readonly segments: readonly AsrCaptionSegment[];
489
+ }
490
+ interface ApplyCaptionAssetsResult {
491
+ readonly audioScriptEntityId: string;
492
+ readonly audioScriptMarkerEntityId: string;
493
+ readonly captionAssetEntityId: string;
494
+ readonly captionEntityIds: readonly string[];
495
+ readonly captionClipEntityIds: readonly string[];
496
+ }
497
+ interface CaptionAssetsEffectEnvelope {
498
+ readonly version: 1;
499
+ readonly baselineFingerprint: string;
500
+ readonly effectId: string;
501
+ readonly signature: string;
502
+ readonly input: ApplyCaptionAssetsInput;
503
+ readonly decisions: {
504
+ readonly sourceOccurrence: {
505
+ readonly sourceStartMs: number;
506
+ readonly sourceEndMs: number;
507
+ readonly timelineStartMs: number;
508
+ readonly rate: number;
509
+ };
510
+ readonly targetRanges: readonly {
511
+ readonly segmentId: string;
512
+ readonly start: number;
513
+ readonly end: number;
514
+ }[];
515
+ readonly captionAsset: {
516
+ readonly mode: 'create' | 'reuse' | 'replace';
517
+ readonly priorAssetEntityId?: string;
518
+ readonly resultAssetEntityId: string;
519
+ readonly reboundRelationIds: readonly string[];
520
+ };
521
+ };
522
+ }
523
+ interface CompiledCaptionAssetsEffect {
524
+ readonly result: ApplyCaptionAssetsResult;
525
+ readonly replayed: boolean;
526
+ readonly update?: Uint8Array;
527
+ readonly rows: EntityRelationRows;
528
+ }
301
529
  type ClipPlacement = {
302
530
  readonly kind: 'sequential';
303
531
  readonly order: number;
@@ -430,6 +658,139 @@ interface SetClipSpeedInput {
430
658
  readonly clipEntityId: string;
431
659
  readonly timeRemapping: LinearClipSpeed | null;
432
660
  }
661
+ type VideoClipSpeedMode = '0.5x' | '0.75x' | '1.0x' | '1.5x' | '2.0x';
662
+ interface SetVideoClipSpeedEffectInput {
663
+ readonly clips: readonly {
664
+ readonly videoClipEntityId: string;
665
+ readonly mode: VideoClipSpeedMode;
666
+ }[];
667
+ }
668
+ interface GeneratedVisualClipFact {
669
+ readonly media: VisualMediaAssetFact;
670
+ /** Finite timeline use duration. Required for still images and bounded for video. */
671
+ readonly durationMs: number;
672
+ readonly generationJobId: string;
673
+ readonly sourceMediaEntityIds: readonly string[];
674
+ readonly volume?: number;
675
+ }
676
+ interface GeneratedVisualsInputBase {
677
+ readonly effectId: string;
678
+ readonly timelineEntityId: string;
679
+ readonly clips: readonly GeneratedVisualClipFact[];
680
+ }
681
+ /** Exactly one explicit occurrence anchor; the SDK never guesses a track edge. */
682
+ type AddGeneratedVisualsInput = GeneratedVisualsInputBase & ({
683
+ readonly beforeClipEntityId: string;
684
+ readonly afterClipEntityId?: never;
685
+ } | {
686
+ readonly beforeClipEntityId?: never;
687
+ readonly afterClipEntityId: string;
688
+ });
689
+ interface ContinueVideoInput {
690
+ readonly effectId: string;
691
+ readonly timelineEntityId: string;
692
+ readonly afterClipEntityId: string;
693
+ readonly tailFrameEntityId: string;
694
+ readonly sourceMediaEntityId: string;
695
+ readonly media: VideoMediaAssetFact;
696
+ }
697
+ interface GeneratedVisualEffectEnvelope {
698
+ readonly version: 1;
699
+ readonly baselineFingerprint: string;
700
+ readonly effectId: string;
701
+ readonly signature: string;
702
+ readonly input: AddGeneratedVisualsInput;
703
+ readonly decisions: {
704
+ readonly trackEntityId: string;
705
+ readonly anchorOrder: number;
706
+ readonly anchorPosition: 'before' | 'after';
707
+ readonly insertionOrders: readonly number[];
708
+ };
709
+ }
710
+ interface GeneratedVisualEffectResult {
711
+ readonly clipEntityIds: readonly string[];
712
+ readonly mediaEntityIds: readonly string[];
713
+ }
714
+ interface CompiledGeneratedVisualEffect {
715
+ readonly result: GeneratedVisualEffectResult;
716
+ readonly replayed: boolean;
717
+ readonly update?: Uint8Array;
718
+ readonly rows: EntityRelationRows;
719
+ }
720
+ interface GeneratedSpeechCaptionFact {
721
+ readonly startMs: number;
722
+ readonly endMs: number;
723
+ readonly selection: CaptionSegmentSelection;
724
+ }
725
+ /** Host-resolved current Loro segment; arbitrary immutable JSON fields remain owned by the script. */
726
+ type ResolvedSpeechScriptSegment = ScriptTextSegment & JsonObject;
727
+ type ResolvedAsrSpeechSegment = AsrCaptionSegment & JsonObject;
728
+ type GeneratedSpeechSourceFact = {
729
+ readonly kind: 'phonetic-script';
730
+ readonly audioScriptEntityId: string;
731
+ readonly phoneticScriptEntityId: string;
732
+ readonly segments: readonly ResolvedSpeechScriptSegment[];
733
+ readonly phonemeScript?: string;
734
+ } | {
735
+ readonly kind: 'audio-script';
736
+ readonly audioScriptEntityId?: string;
737
+ readonly segments: readonly ResolvedAsrSpeechSegment[];
738
+ readonly sourceMediaEntityIds: readonly string[];
739
+ readonly sourceStartMs: number;
740
+ };
741
+ interface GeneratedSpeechFact {
742
+ readonly media: VoiceoverMediaAssetFact;
743
+ readonly source: GeneratedSpeechSourceFact;
744
+ readonly captions: readonly GeneratedSpeechCaptionFact[];
745
+ readonly volume?: number;
746
+ }
747
+ interface AddSpeechAssetsInput {
748
+ readonly effectId: string;
749
+ readonly timelineEntityId: string;
750
+ readonly items: readonly (GeneratedSpeechFact & {
751
+ readonly placementStartMs: number;
752
+ })[];
753
+ }
754
+ interface ReplaceVoiceSpeechAssetsInput {
755
+ readonly effectId: string;
756
+ readonly timelineEntityId: string;
757
+ readonly items: readonly (GeneratedSpeechFact & {
758
+ readonly targetSpeechClipEntityId: string; /** Explicit current Caption uses replaced with this selected speech use. */
759
+ readonly targetCaptionClipEntityIds: readonly string[];
760
+ })[];
761
+ }
762
+ type SpeechAssetsEffectInput = {
763
+ readonly mode: 'add';
764
+ readonly value: AddSpeechAssetsInput;
765
+ } | {
766
+ readonly mode: 'replace-voice';
767
+ readonly value: ReplaceVoiceSpeechAssetsInput;
768
+ };
769
+ interface SpeechAssetsEffectEnvelope {
770
+ readonly version: 1;
771
+ readonly baselineFingerprint: string;
772
+ readonly effectId: string;
773
+ readonly signature: string;
774
+ readonly input: SpeechAssetsEffectInput;
775
+ readonly decisions: {
776
+ readonly speechTrackEntityId: string;
777
+ readonly captionTrackEntityId?: string;
778
+ readonly targetStartsMs: readonly number[];
779
+ };
780
+ }
781
+ interface SpeechAssetsEffectResult {
782
+ readonly speechClipEntityIds: readonly string[];
783
+ readonly speechAudioEntityIds: readonly string[];
784
+ readonly audioScriptEntityIds: readonly string[];
785
+ readonly phoneticScriptEntityIds: readonly string[];
786
+ readonly captionClipEntityIds: readonly (readonly string[])[];
787
+ }
788
+ interface CompiledSpeechAssetsEffect {
789
+ readonly result: SpeechAssetsEffectResult;
790
+ readonly replayed: boolean;
791
+ readonly update?: Uint8Array;
792
+ readonly rows: EntityRelationRows;
793
+ }
433
794
  interface TrimClipInput {
434
795
  readonly clipEntityId: string;
435
796
  readonly sourceRange: SequenceRange<number>;
@@ -535,6 +896,7 @@ type ClipEntityId = EntityId;
535
896
  * and committed only after validation succeeds.
536
897
  */
537
898
  declare class EntityTimelineEditor {
899
+ #private;
538
900
  private readonly idFactory;
539
901
  private state;
540
902
  constructor(initialRows: EntityRelationRows, idFactory?: EntityTimelineIdFactory);
@@ -552,6 +914,9 @@ declare class EntityTimelineEditor {
552
914
  replaceMediaClip(input: ReplaceMediaClipInput): void;
553
915
  setClipVolume(input: SetClipVolumeInput): void;
554
916
  setClipSpeed(input: SetClipSpeedInput): void;
917
+ /** Apply one typed Director speed effect as a single graph transaction. */
918
+ setVideoClipSpeeds(input: SetVideoClipSpeedEffectInput): void;
919
+ private setClipSpeedIntoDraft;
555
920
  trimClip(input: TrimClipInput): void;
556
921
  replaceSequentialClips(input: ReplaceSequentialClipsInput): readonly ClipEntityId[];
557
922
  deleteClip(input: DeleteClipInput): void;
@@ -572,6 +937,9 @@ declare class EntityTimelineEditor {
572
937
  * never the Caption entity or the AudioScript.
573
938
  */
574
939
  insertCaptionClip(input: InsertCaptionClipInput): ClipEntityId;
940
+ static compileCaptionAssetsEffect(base: LoroEntityDocument, envelope: CaptionAssetsEffectEnvelope): CompiledCaptionAssetsEffect;
941
+ static compileGeneratedVisualEffect(base: LoroEntityDocument, envelope: GeneratedVisualEffectEnvelope): CompiledGeneratedVisualEffect;
942
+ static compileSpeechAssetsEffect(base: LoroEntityDocument, envelope: SpeechAssetsEffectEnvelope): CompiledSpeechAssetsEffect;
575
943
  private insertPlacedClipIntoDraft;
576
944
  private ensureRoleTrack;
577
945
  /** The existing pronunciation variant a voiceover consumes; composition is required. */
@@ -600,6 +968,21 @@ declare class EntityTimelineEditor {
600
968
  private relinkRelation;
601
969
  private mintRelationId;
602
970
  }
971
+ /** Freeze every state-dependent choice once in the sole FE tool-effect handler. */
972
+ declare function prepareCaptionAssetsEffect(base: LoroEntityDocument, rawInput: ApplyCaptionAssetsInput): CaptionAssetsEffectEnvelope;
973
+ /**
974
+ * Compile only a frozen envelope on its exact causal baseline. Collaborators
975
+ * receive the resulting Loro update, never the raw effect.
976
+ */
977
+ declare function compileCaptionAssetsEffect(base: LoroEntityDocument, envelope: CaptionAssetsEffectEnvelope): CompiledCaptionAssetsEffect;
978
+ /** Freeze the explicit insertion anchor and lineage on one causal baseline. */
979
+ declare function prepareGeneratedVisualEffect(base: LoroEntityDocument, rawInput: AddGeneratedVisualsInput): GeneratedVisualEffectEnvelope;
980
+ declare function prepareContinueVideoEffect(base: LoroEntityDocument, input: ContinueVideoInput): GeneratedVisualEffectEnvelope;
981
+ /** Compile once at the FE authority; retain the returned update bytes for retry and collaborators. */
982
+ declare function compileGeneratedVisualEffect(base: LoroEntityDocument, envelope: GeneratedVisualEffectEnvelope): CompiledGeneratedVisualEffect;
983
+ declare function prepareSpeechAssetsEffect(base: LoroEntityDocument, rawInput: SpeechAssetsEffectInput): SpeechAssetsEffectEnvelope;
984
+ /** Compile once at the FE authority; retain the returned update bytes for retry and collaborators. */
985
+ declare function compileSpeechAssetsEffect(base: LoroEntityDocument, envelope: SpeechAssetsEffectEnvelope): CompiledSpeechAssetsEffect;
603
986
  //#endregion
604
987
  //#region src/entity-editor/editor-resources.d.ts
605
988
  declare const roleOrder: {
@@ -652,6 +1035,12 @@ interface ImportedMediaAsset {
652
1035
  /** The timbre identity of a synthesized voiceover; absent for recorded media. */
653
1036
  readonly voiceEntityId?: string;
654
1037
  }
1038
+ interface ImportedCaptionAsset {
1039
+ readonly rows: EntityRelationRows;
1040
+ readonly assetEntityId: string;
1041
+ }
1042
+ /** Import only the fixed ASR artifact; Caption entities are authored separately. */
1043
+ declare function importCaptionAsset(initial: EntityRelationRows, fact: CaptionAssetFact, idFactory?: EntityTimelineIdFactory): ImportedCaptionAsset;
655
1044
  /**
656
1045
  * Import at the editor boundary, not at asset generation time. Existing
657
1046
  * provenance is retained.
@@ -694,169 +1083,6 @@ interface DocumentAudioScriptState {
694
1083
  /** Read only the attached version and preserve every segment; never aggregate other scripts. */
695
1084
  declare function readDocumentAudioScript(state: DocumentAudioScriptState): DocumentAudioScript;
696
1085
  //#endregion
697
- //#region src/entity-crdt/field-changes.d.ts
698
- /** List members are addressed by identity, never a transient array offset. */
699
- type FieldPath = readonly (string | {
700
- elementId: string;
701
- })[];
702
- type FieldChange = {
703
- op: 'set';
704
- path: FieldPath;
705
- value: JsonValue;
706
- } | {
707
- op: 'unset';
708
- path: FieldPath;
709
- } | {
710
- op: 'text.splice';
711
- path: FieldPath;
712
- index: number;
713
- deleteCount: number;
714
- text: string;
715
- } | {
716
- op: 'list.insert';
717
- path: FieldPath;
718
- value: JsonValue;
719
- beforeElementId: string | null;
720
- } | {
721
- op: 'list.move';
722
- path: FieldPath;
723
- elementId: string;
724
- beforeElementId: string | null;
725
- } | {
726
- op: 'list.remove';
727
- path: FieldPath;
728
- elementId: string;
729
- };
730
- declare function assertFieldChanges(changes: readonly FieldChange[]): void;
731
- /** Resolve against the sequential causal view; the numeric path never crosses the API boundary. */
732
- declare function resolveFieldPath(payload: JsonObject, path: FieldPath): (string | number)[];
733
- /** Detached plan evaluation. Native compilation replays the original operations, not this snapshot. */
734
- declare function applyFieldChanges(payload: JsonObject, changes: readonly FieldChange[]): JsonObject;
735
- //#endregion
736
- //#region src/entity-crdt/entity-document.d.ts
737
- declare const LORO_ENTITY_SCHEMA = "medeo.entities.loro.v1";
738
- interface EntityDocumentState {
739
- readonly rows: EntityRelationRows;
740
- readonly project: Readonly<Record<string, string>>;
741
- }
742
- type Command = {
743
- type: 'create';
744
- row: EntityRow;
745
- } | {
746
- type: 'selection-baseline';
747
- root: string;
748
- fingerprint: string;
749
- } | {
750
- type: 'order';
751
- group: string;
752
- roots: string[];
753
- token: string;
754
- } | {
755
- type: 'write';
756
- root: string;
757
- payload: JsonObject;
758
- token: string;
759
- } | {
760
- type: 'text';
761
- root: string;
762
- path: readonly (string | number)[];
763
- start: number;
764
- deleteCount: number;
765
- text: string;
766
- token: string;
767
- } | {
768
- type: 'field';
769
- root: string;
770
- path: (string | number)[];
771
- change: FieldChange;
772
- token: string;
773
- } | {
774
- type: 'relation-field';
775
- root: string;
776
- path: (string | number)[];
777
- change: FieldChange;
778
- } | {
779
- type: 'delete';
780
- root: string;
781
- } | {
782
- type: 'relation';
783
- row: RelationRow;
784
- } | {
785
- type: 'relation-fields';
786
- root: string;
787
- metadata: JsonObject;
788
- trace: JsonObject;
789
- } | {
790
- type: 'unlink';
791
- root: string;
792
- } | {
793
- type: 'attach';
794
- slot: string;
795
- entityId: string;
796
- };
797
- /** Plain domain objects assembled from native Loro state, never a second writable authority. */
798
- declare function readEntityDocument(doc: LoroDoc, allowSelectionConflicts?: boolean): EntityDocumentState;
799
- /** Native editing containers survive domain version changes and merge independently. */
800
- declare class LoroEntityDocument {
801
- readonly doc: LoroDoc;
802
- private readonly validate?;
803
- private readonly undoManager;
804
- constructor(doc: LoroDoc, validate?: ((state: EntityDocumentState) => void) | undefined);
805
- /** Open a causal snapshot using the same Loro runtime as the compiler. */
806
- static fromSnapshot(snapshot: Uint8Array, validate?: (state: EntityDocumentState) => void): LoroEntityDocument;
807
- static create(rows: EntityRelationRows, project?: Readonly<Record<string, string>>, peerId?: PeerID): LoroEntityDocument;
808
- snapshot(): EntityDocumentState;
809
- relationsOf(entityId: string): readonly RelationRow[];
810
- /** Resolve a queued edit target through its native identity without changing history. */
811
- resolveCurrentEntityId(id: string): string;
812
- getVersion(id: string): EntityRow | undefined;
813
- /** The callback and every domain validation execute on a causally complete fork first. */
814
- transact(edit: (draft: LoroEntityDraft) => void): Uint8Array;
815
- /** Import preserves native operation identities; projection errors never discard remote operations. */
816
- import(update: Uint8Array): void;
817
- /**
818
- * Bind a saved snapshot without rewriting text operations or resolving
819
- * selection conflicts. The script names the bytes the same way everything
820
- * else does — an Asset entity plus a Relation — and keeps only the
821
- * fingerprint that tells a stale snapshot from a current one. The Relation is
822
- * `to-asset`: these bytes are the script's own content written out, not a
823
- * source it was made from.
824
- */
825
- bindAudioScriptAsset(entityId: string, assetId: string, expectedContentHash: string): Uint8Array;
826
- canUndo(): boolean;
827
- canRedo(): boolean;
828
- undo(): boolean;
829
- redo(): boolean;
830
- private historyEdit;
831
- }
832
- declare class LoroEntityDraft {
833
- private readonly doc;
834
- readonly commands: Command[];
835
- private readonly selectedRoots;
836
- private readonly relationAliases;
837
- constructor(doc: LoroDoc);
838
- snapshot(): EntityDocumentState;
839
- order(groupId: string, entityIds: readonly string[]): void;
840
- /** Project the final scalar placement intents onto the existing native ordering containers. */
841
- reconcileOrder(rows: EntityRelationRows): void;
842
- create(row: EntityRow): void;
843
- delete(entityId: string): void;
844
- attach(slot: string, entityId: string): void;
845
- link(row: RelationRow): void;
846
- patchRelation(relationId: string, metadata: JsonObject, trace: JsonObject): void;
847
- unlink(relationId: string): void;
848
- private relationRoot;
849
- update(entityId: string, fields: JsonObject): void;
850
- declare(entityId: string, fields: JsonObject): void;
851
- replaceOwned(entityId: string, payload: JsonObject): void;
852
- editText(entityId: string, path: readonly (string | number)[], start: number, deleteCount: number, text: string): void;
853
- /** Generic assembled-field edit compiled at the author's causal position. */
854
- change(entityId: string, changes: readonly FieldChange[]): void;
855
- changeRelation(relationId: string, changes: readonly FieldChange[]): void;
856
- captureSelectionBaselines(): void;
857
- private record;
858
- }
859
- //#endregion
860
1086
  //#region src/entity-crdt/compile-rows.d.ts
861
1087
  /** Lower a detached ordinary-object edit against its actual causal Loro baseline. */
862
1088
  declare function compileEntityRows(snapshot: Uint8Array, rows: EntityRelationRows, validate?: (state: EntityDocumentState) => void): {
@@ -1765,4 +1991,4 @@ declare function phoneticScriptAssetHash(rows: EntityRelationRows, entityId: str
1765
1991
  /** The Asset a PhoneticScript was written out to, read from the graph. */
1766
1992
  declare function phoneticScriptAssetOf(rows: EntityRelationRows, entityId: string): EntityRow | undefined;
1767
1993
  //#endregion
1768
- export { type Aggregation, type AssembledCaptionContent, type AssembledPhoneticScriptContent, type Attachment, type AudioMediaAssetFact, type BgmPart, type CaptionContentInput, type CaptionDisplayCue, type CaptionPart, type CaptionSegmentSelection, type CaptionStyle, type ClipEntityId, type ClipPlacement, type CommitOptions, DEFAULT_UNIT_TIME_MS, type DeleteBgmInput, type DeleteClipInput, type DeleteClipTreeInput, type DeleteVoiceoverInput, type DerivedItemPosition, type DocStorageLike, type DocVersionMark, type DocumentAudioScript, type DocumentAudioScriptState, type EditorFoundation, EntityDocumentState, type EntityGraphCommitOptions, EntityGraphHttpClient, type EntityGraphState, EntityTimelineEditor, type EntityTimelineIdFactory, EntityTimelineProjectionError, type EntityTimelineTrackRole, type FieldChange, type FieldPath, IMPLEMENTED_SEMANTIC_OP_KINDS, type ImageMediaAssetFact, type ImplementedSemanticOpKind, type ImportedMediaAsset, type InsertCaptionClipInput, type InsertClipInput, type InsertMediaClipInput, type InsertMediaClipsInput, type InsertPlacedClipInput, type JournalEntry, LANE_KINDS_IN_STACK_ORDER, LORO_ENTITY_SCHEMA, type LaneKind, type LinearClipSpeed, LoroEntityDocument, LoroEntityDraft, type MainClipRange, type MakeEmptyPart, ManualSyncDoc, type ManualSyncDocOptions, MedeoHttpDocStorage, type MedeoHttpDocStorageOptions, type MediaAssetFact, type MediaClipInsertion, MemoryDocStorage, MengineAckFailedError, type MengineAuditEntry, type MengineAuditResponse, MengineDocSession, type MengineDocSessionOptions, type MengineDocSessionUpdateEvent, type MengineDocSyncState, type MengineDocumentVersion, type MengineEventStreamOptions, MengineHttpClient, type MengineHttpClientOptions, MengineHttpRequestError, MenginePushRejectedError, type MenginePushResponse, type MenginePushUpdateResponse, type MengineRejectedResponse, type MengineSnapshotResponse, type MengineSseUpdateEvent, type MengineSyncResponse, type MengineUndoState, type MengineUpdateMeta, MirrorVideoDocumentAdapter, type MirrorVideoDocumentOptions, type MoveClipInput, type MoveClipsToStartsInput, type MoveSequentialClipsInput, type MoveVoiceoverInput, type OpActor, type PartAggregation, type PartIdFactory, type PartKind, type PartUnion, type PatchCaptionStyleInput, PlainMemoryAdapter, type PlainMemoryAdapterOptions, type PlannedSemanticOpKind, type PullFailureReason, type PullResult, type PushOutcome, type PushOutcomeKind, type PushResult, type PushResultKind, type ReplaceClipContentInput, type ReplaceMediaClipInput, type ReplaceSequentialClipsInput, type ReplacementMediaClipInput, type ResolvedEntityClipPlacement, type ResolvedEntityTimelineLayout, type ResolvedEntityTrack, SchemaValidator, ScriptCompositionError, type SemanticDocumentAdapter, SemanticEditor, type SemanticOpInput, type SemanticOpKind, type SemanticOpName, type SequentialClipAnchor, type SetBgmInput, type SetCaptionVisibilityInput, type SetClipPlacementInput, type SetClipSpeedInput, type SetClipVolumeInput, type SnapshotReadable, type SolvedVideoDocument, type SpeechHostMap, type SpeechPart, type SpeedShift, TIMELINE_SKELETON_DURATION_MS, type Timeline, type TimelineDoc, type TimelineItem, type Track, type TrackDraft, type TrackItem, type TrackItemDraft, type TrackItemTimePosition, type TransactAudit, type TrimClipInput, type UpdateClipInput, type UpdateClipMarkerInput, ValidationError, type VideoClipPart, type VideoDocument, type VideoDocumentDraft, type VideoDocumentMirrorSchema, VideoDocumentValidationError, type VideoDocumentValidationIssue, type VideoDocumentValidationIssueCode, type VideoDraft, type CaptionPart$1 as VideoDraftCaptionPart, type VideoDraftContent, type VideoDraftPartUnion, type Timeline$1 as VideoDraftTimeline, type Track$1 as VideoDraftTrack, type TrackItem$1 as VideoDraftTrackItem, type VideoMediaAssetFact, type VisualMediaAssetFact, type VoiceoverCaptionFact, type VoiceoverMediaAssetFact, type VoiceoverTakeInput, type VoiceoverTakeResult, type WaitForServerAckOptions, applyEntityRows, applyFieldChanges, arrangeMainTrackSeamlessly, assembleCaptionContent, assembleEntityContent, assemblePhoneticScriptContent, assembleScriptText, assertCanonicalEditorResources, assertEntityProjectionPreservesLegacy, assertFieldChanges, assertMediaAssetWritePolicy, assertValidVideoDocument, audioScriptAssetContent, audioScriptAssetFields, audioScriptAssetHash, audioScriptAssetOf, base64ToBytes, buildInitialVideoDocument, buildSpeechHostMap, bytesToBase64, cascadeAfterVideoClipChanges, compileEntityRows, createEditSandbox, createMirrorVideoDocument, createMirrorVideoDocumentAdapter, createPlainMemoryAdapter, decodeDocVersionMark, derivePositionFromAbs, effectiveVideoClipDurationMs, encodeDocVersionMark, ensureEditorFoundation, ensureLaneTrack, fillMainTrackTimeGaps, findComposedAudioScript, findLaneTrack, fromVideoDocument, generatePartId, getAt, hostForAbsMs, importMediaAsset, isEmptyVideoClip, isImplementedSemanticOpKind, isMap, laneTrackId, mainTrackRanges, migrateLegacyTimelineToEntities, partDurationMs, partUnionSchema, phoneticScriptAssetContent, phoneticScriptAssetHash, phoneticScriptAssetOf, prepareCaptionContent, projectEntityTimeline, readDocumentAudioScript, readEntityDocument, readMainTrackItems, readMengineEventStream, readPart, readPartDurationMs, readVideoDocumentFromDraft, reassignSpeechesToVideoClipsByTime, recalculateTimelineDuration, relativePositionForAbs, replayJournal, resolveAllSpeechOverlaps, resolveEntityTimelineLayout, resolveFieldPath, resolveSpeechOverlapByShiftingVideos, safeDurationMs, index_d_exports as schemas, scriptSourceAssetOf, selectAudioScriptSegment, snapshotToPlain, solveVideoDocument, speedOf, syncAggregatedClipsTimePosition, toVideoDocument, validateVideoDocument, videoDocumentMirrorSchema, videoDocumentSchema };
1994
+ export { type AddGeneratedVisualsInput, type AddSpeechAssetsInput, type Aggregation, type ApplyCaptionAssetsInput, type ApplyCaptionAssetsResult, type AsrCaptionSegment, type AssembledCaptionContent, type AssembledPhoneticScriptContent, type Attachment, type AudioMediaAssetFact, type BgmPart, type CaptionAssetFact, type CaptionAssetsEffectEnvelope, type CaptionContentInput, type CaptionDisplayCue, type CaptionPart, type CaptionSegmentSelection, type CaptionStyle, type ClipEntityId, type ClipPlacement, type CommitOptions, type CompiledCaptionAssetsEffect, type CompiledGeneratedVisualEffect, type CompiledSpeechAssetsEffect, type ContinueVideoInput, DEFAULT_UNIT_TIME_MS, type DeleteBgmInput, type DeleteClipInput, type DeleteClipTreeInput, type DeleteVoiceoverInput, type DerivedItemPosition, type DocStorageLike, type DocVersionMark, type DocumentAudioScript, type DocumentAudioScriptState, type EditorFoundation, EntityDocumentState, type EntityGraphCommitOptions, EntityGraphHttpClient, type EntityGraphState, EntityTimelineEditor, type EntityTimelineIdFactory, EntityTimelineProjectionError, type EntityTimelineTrackRole, type FieldChange, type FieldPath, type GeneratedSpeechCaptionFact, type GeneratedSpeechFact, type GeneratedSpeechSourceFact, type GeneratedVisualClipFact, type GeneratedVisualEffectEnvelope, type GeneratedVisualEffectResult, IMPLEMENTED_SEMANTIC_OP_KINDS, type ImageMediaAssetFact, type ImplementedSemanticOpKind, type ImportedCaptionAsset, type ImportedMediaAsset, type InsertCaptionClipInput, type InsertClipInput, type InsertMediaClipInput, type InsertMediaClipsInput, type InsertPlacedClipInput, type JournalEntry, LANE_KINDS_IN_STACK_ORDER, LORO_ENTITY_SCHEMA, type LaneKind, type LinearClipSpeed, LoroEntityDocument, LoroEntityDraft, type MainClipRange, type MakeEmptyPart, ManualSyncDoc, type ManualSyncDocOptions, MedeoHttpDocStorage, type MedeoHttpDocStorageOptions, type MediaAssetFact, type MediaClipInsertion, MemoryDocStorage, MengineAckFailedError, type MengineAuditEntry, type MengineAuditResponse, MengineDocSession, type MengineDocSessionOptions, type MengineDocSessionUpdateEvent, type MengineDocSyncState, type MengineDocumentVersion, type MengineEventStreamOptions, MengineHttpClient, type MengineHttpClientOptions, MengineHttpRequestError, MenginePushRejectedError, type MenginePushResponse, type MenginePushUpdateResponse, type MengineRejectedResponse, type MengineSnapshotResponse, type MengineSseUpdateEvent, type MengineSyncResponse, type MengineUndoState, type MengineUpdateMeta, MirrorVideoDocumentAdapter, type MirrorVideoDocumentOptions, type MoveClipInput, type MoveClipsToStartsInput, type MoveSequentialClipsInput, type MoveVoiceoverInput, type OpActor, type PartAggregation, type PartIdFactory, type PartKind, type PartUnion, type PatchCaptionStyleInput, PlainMemoryAdapter, type PlainMemoryAdapterOptions, type PlannedSemanticOpKind, type PullFailureReason, type PullResult, type PushOutcome, type PushOutcomeKind, type PushResult, type PushResultKind, type ReplaceClipContentInput, type ReplaceMediaClipInput, type ReplaceSequentialClipsInput, type ReplaceVoiceSpeechAssetsInput, type ReplacementMediaClipInput, type ResolvedAsrSpeechSegment, type ResolvedEntityClipPlacement, type ResolvedEntityTimelineLayout, type ResolvedEntityTrack, type ResolvedSpeechScriptSegment, SchemaValidator, ScriptCompositionError, type SemanticDocumentAdapter, SemanticEditor, type SemanticOpInput, type SemanticOpKind, type SemanticOpName, type SequentialClipAnchor, type SetBgmInput, type SetCaptionVisibilityInput, type SetClipPlacementInput, type SetClipSpeedInput, type SetClipVolumeInput, type SetVideoClipSpeedEffectInput, type SnapshotReadable, type SolvedVideoDocument, type SpeechAssetsEffectEnvelope, type SpeechAssetsEffectInput, type SpeechAssetsEffectResult, type SpeechHostMap, type SpeechPart, type SpeedShift, TIMELINE_SKELETON_DURATION_MS, type Timeline, type TimelineDoc, type TimelineItem, type Track, type TrackDraft, type TrackItem, type TrackItemDraft, type TrackItemTimePosition, type TransactAudit, type TrimClipInput, type UpdateClipInput, type UpdateClipMarkerInput, ValidationError, type VideoClipPart, type VideoClipSpeedMode, type VideoDocument, type VideoDocumentDraft, type VideoDocumentMirrorSchema, VideoDocumentValidationError, type VideoDocumentValidationIssue, type VideoDocumentValidationIssueCode, type VideoDraft, type CaptionPart$1 as VideoDraftCaptionPart, type VideoDraftContent, type VideoDraftPartUnion, type Timeline$1 as VideoDraftTimeline, type Track$1 as VideoDraftTrack, type TrackItem$1 as VideoDraftTrackItem, type VideoMediaAssetFact, type VisualMediaAssetFact, type VoiceoverCaptionFact, type VoiceoverMediaAssetFact, type VoiceoverTakeInput, type VoiceoverTakeResult, type WaitForServerAckOptions, applyEntityRows, applyFieldChanges, arrangeMainTrackSeamlessly, assembleCaptionContent, assembleEntityContent, assemblePhoneticScriptContent, assembleScriptText, assertCanonicalEditorResources, assertEntityProjectionPreservesLegacy, assertFieldChanges, assertMediaAssetWritePolicy, assertValidVideoDocument, audioScriptAssetContent, audioScriptAssetFields, audioScriptAssetHash, audioScriptAssetOf, base64ToBytes, buildInitialVideoDocument, buildSpeechHostMap, bytesToBase64, cascadeAfterVideoClipChanges, compileCaptionAssetsEffect, compileEntityRows, compileGeneratedVisualEffect, compileSpeechAssetsEffect, createEditSandbox, createMirrorVideoDocument, createMirrorVideoDocumentAdapter, createPlainMemoryAdapter, decodeDocVersionMark, derivePositionFromAbs, effectiveVideoClipDurationMs, encodeDocVersionMark, ensureEditorFoundation, ensureLaneTrack, fillMainTrackTimeGaps, findComposedAudioScript, findLaneTrack, fromVideoDocument, generatePartId, getAt, hostForAbsMs, importCaptionAsset, importMediaAsset, isEmptyVideoClip, isImplementedSemanticOpKind, isMap, laneTrackId, mainTrackRanges, migrateLegacyTimelineToEntities, partDurationMs, partUnionSchema, phoneticScriptAssetContent, phoneticScriptAssetHash, phoneticScriptAssetOf, prepareCaptionAssetsEffect, prepareCaptionContent, prepareContinueVideoEffect, prepareGeneratedVisualEffect, prepareSpeechAssetsEffect, projectEntityTimeline, readDocumentAudioScript, readEntityDocument, readMainTrackItems, readMengineEventStream, readPart, readPartDurationMs, readVideoDocumentFromDraft, reassignSpeechesToVideoClipsByTime, recalculateTimelineDuration, relativePositionForAbs, replayJournal, resolveAllSpeechOverlaps, resolveEntityTimelineLayout, resolveFieldPath, resolveSpeechOverlapByShiftingVideos, safeDurationMs, index_d_exports as schemas, scriptSourceAssetOf, selectAudioScriptSegment, snapshotToPlain, solveVideoDocument, speedOf, syncAggregatedClipsTimePosition, toVideoDocument, validateVideoDocument, videoDocumentMirrorSchema, videoDocumentSchema };