@vosjs/studio-core 0.10.0 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -781,6 +781,8 @@ interface AudioClip {
781
781
  loopLen?: number;
782
782
  /** duck this clip under the mic while speech is detected. */
783
783
  duck?: boolean;
784
+ /** The template that placed this clip (see the overlay clip's `from`). */
785
+ from?: string;
784
786
  }
785
787
  /** Effective placed length of a clip on the output timeline, seconds. */
786
788
  declare function clipLength(clip: Pick<AudioClip, 'in' | 'out' | 'loop' | 'loopLen'>): number;
@@ -898,8 +900,16 @@ interface FrameStyle {
898
900
  * zoomed in and pulls out; `rise` settles up and in flat. Lowered into
899
901
  * the tilt or zoom track's head and a card-pose track, so the card's only
900
902
  * rotation is still the tilt track. Absent = none, byte-identical.
903
+ * @deprecated The card's `anim.enter`; migrated on read.
901
904
  */
902
905
  entrance?: FrameEntrance;
906
+ /**
907
+ * How the card ENTERS at t = 0 and LEAVES when its footage ends (`recede`
908
+ * settles it smaller and dimmer behind whatever plays after it; `fade`
909
+ * takes it out). Past its footage the card holds its last frame at the
910
+ * exit's end pose. Absent = neither, byte-identical.
911
+ */
912
+ anim?: Anim;
903
913
  /**
904
914
  * Under `fit:'cover'`, follow the zoom track's focus with the crop
905
915
  * (`'camera'`), so a 9:16 cut of a 16:9 take keeps the affordance in
@@ -916,6 +926,8 @@ interface FrameEntrance {
916
926
  * The end card: the last frame holds for `seconds` while the card recedes
917
927
  * and the words rise over it (the house title, caption and label presets,
918
928
  * so they lower like any overlay). The clip's last frame is its poster.
929
+ * @deprecated A card `anim.exit` plus clips placed after the footage
930
+ * (`from: 'endcard'`); migrated on read.
919
931
  */
920
932
  interface EndCard {
921
933
  seconds?: number;
@@ -950,6 +962,38 @@ type OverlayKind = 'text' | 'image' | 'video';
950
962
  type TextOverlayPreset = 'title' | 'caption' | 'label';
951
963
  /** Enter/exit transition presets — pure f(t), evaluated in ON_FRAME. */
952
964
  type OverlayTransition = 'none' | 'fade' | 'rise';
965
+ /**
966
+ * THE animation vocabulary, one for every visual primitive. Which kinds a
967
+ * thing accepts is its own (`anim.ts` holds the tables): the card enters by
968
+ * `tilt-in`, `pull-out`, `rise` or `fade` and leaves by `recede` or `fade`;
969
+ * words enter by the block transitions or per unit (`pop`, `blur`,
970
+ * `typewriter`, or a `fade`/`rise` that names its unit); an image or a
971
+ * video clip enters and leaves by `fade` or `rise`; a prop idles by `spin`
972
+ * or `float`. `none` is an explicit nothing; absent is the house default.
973
+ */
974
+ type AnimKind = 'none' | 'fade' | 'rise' | 'pop' | 'blur' | 'typewriter' | 'tilt-in' | 'pull-out' | 'recede';
975
+ /** What a thing does while it stays. */
976
+ type IdleKind = 'spin' | 'float';
977
+ /**
978
+ * One step of an animation: the kind, its seconds, and for words the
979
+ * per-unit grammar. A bare kind is the same step with the house timing.
980
+ */
981
+ interface AnimStep {
982
+ kind: AnimKind;
983
+ /** Seconds the step takes (the house length when absent). */
984
+ seconds?: number;
985
+ /** Words only: the unit the step animates by (`block` = the whole clip). */
986
+ unit?: TextFxUnit;
987
+ /** Words only: the order units animate in. */
988
+ direction?: TextFxDirection;
989
+ /** Words only: seconds between one unit's start and the next. */
990
+ stagger?: number;
991
+ }
992
+ interface Anim {
993
+ enter?: AnimKind | AnimStep;
994
+ exit?: AnimKind | AnimStep;
995
+ idle?: IdleKind | null;
996
+ }
953
997
  /** Text animation vocabulary — entrance presets evaluated per unit. */
954
998
  type TextFxKind = 'fade' | 'rise' | 'pop' | 'blur' | 'typewriter';
955
999
  type TextFxUnit = 'block' | 'line' | 'word' | 'char';
@@ -1025,7 +1069,20 @@ interface OverlayClipBase {
1025
1069
  start: number;
1026
1070
  duration: number;
1027
1071
  transform: OverlayTransform;
1028
- /** Absent = 'rise' for enter, 'fade' for exit (the house default motion). */
1072
+ /**
1073
+ * How the clip enters and leaves (see Anim). Absent = the house motion:
1074
+ * a rise in, a fade out.
1075
+ */
1076
+ anim?: Anim;
1077
+ /**
1078
+ * The template that placed this clip (a vos id, or a legacy marker),
1079
+ * provenance the lowering never reads: a loop drops a template's clips,
1080
+ * a re-apply replaces one template's and leaves the maker's.
1081
+ */
1082
+ from?: string;
1083
+ /**
1084
+ * @deprecated `anim.enter` / `anim.exit`; migrated on read.
1085
+ */
1029
1086
  enter?: OverlayTransition;
1030
1087
  exit?: OverlayTransition;
1031
1088
  /**
@@ -1069,7 +1126,9 @@ interface TextOverlayClip extends OverlayClipBase {
1069
1126
  stroke?: TextOverlayStroke;
1070
1127
  /** Background pill behind the text block (absent = none). */
1071
1128
  box?: TextOverlayBox;
1072
- /** Entrance animation. Absent = the legacy `enter` transition. */
1129
+ /**
1130
+ * @deprecated A per-unit `anim.enter` step; migrated on read.
1131
+ */
1073
1132
  fx?: TextFxSpec;
1074
1133
  /**
1075
1134
  * Wrap width as a FRACTION of the frame width [0.1..1] (the transform.x
@@ -1242,6 +1301,11 @@ interface ObjectClip {
1242
1301
  /** Fraction of the frame height. */
1243
1302
  scale: number;
1244
1303
  };
1304
+ /** What the prop does while it stays (`anim.idle`), and how it comes and goes. */
1305
+ anim?: Anim;
1306
+ /** The template that placed this prop (see the overlay clip's `from`). */
1307
+ from?: string;
1308
+ /** @deprecated `anim.idle`; migrated on read. */
1245
1309
  animation?: ObjectAnimation | null;
1246
1310
  /** Pose keyframes (see MotionPose3D). Absent lowers byte-identically. */
1247
1311
  motion?: MotionPose3D[];
@@ -1604,28 +1668,21 @@ declare function projectFromArtifact(artifact: RecordingArtifact, videoUrl: stri
1604
1668
  };
1605
1669
 
1606
1670
  /**
1607
- * Hosted-doc schema versioning: the scoped reversal of "ProjectDocs
1608
- * are never persisted" is hosted versions only, and every persisted doc is
1609
- * stamped `docSchemaVersion` from day one so the migration obligation the
1610
- * old rule avoided stays bounded to one seam — migrate-on-read, here.
1611
- *
1612
- * Local studio sessions still never persist docs; CLI take dirs carry
1613
- * doc.json under `schema/doc.schema.json` (which tolerates the stamp via
1614
- * additionalProperties). Both hydration paths (studio handback, `vos
1615
- * pull`) run through migrateHostedDoc before trusting a hosted doc.
1616
- */
1617
- /**
1618
- * 2 = the document FAMILY era: a doc is a recording document (`source`)
1619
- * or a program document (`program.config`). A v1 doc IS a recording document,
1620
- * field for field, so 1 → 2 is a stamp; 0 → 1 was a stamp too.
1671
+ * 3 = the one-vocabulary era: a recording document's `frame.entrance`,
1672
+ * `endCard`, clip `enter`/`exit`/`fx` and prop `animation` are read into
1673
+ * `anim` (and the end card into clips after the footage plus a card exit).
1674
+ * 2 = the document FAMILY era (a recording document, or a program
1675
+ * document); a v1 doc IS a recording document, so 1 → 2 was a stamp, and
1676
+ * 0 → 1 was a stamp too.
1621
1677
  */
1622
- declare const DOC_SCHEMA_VERSION = 2;
1678
+ declare const DOC_SCHEMA_VERSION = 3;
1623
1679
  /**
1624
1680
  * Upgrade a hosted doc.json payload to the current schema version.
1625
- * Unstamped docs are v0 — the pre-stamp era. Every step so far is a stamp
1626
- * (a post-v1 doc field is optional by doctrine, and v2 only widened the
1627
- * family), so migration is structural identity. A real shape change chains
1628
- * its step here.
1681
+ * Unstamped docs are v0 — the pre-stamp era. v0 → v2 were stamps; v2 → v3
1682
+ * rewrites a recording document's motion spellings into the vocabulary,
1683
+ * and leaves a program document as it was (its layers migrate the same
1684
+ * way when they carry the old spellings). A real shape change chains its
1685
+ * step here.
1629
1686
  */
1630
1687
  declare function migrateHostedDoc(raw: Record<string, unknown>): Record<string, unknown>;
1631
1688
 
@@ -2033,7 +2090,7 @@ interface CopyStyleOptions {
2033
2090
  */
2034
2091
  declare function copyStyle(from: ProjectDoc, to: ProjectDoc, opts?: CopyStyleOptions): ProjectDoc;
2035
2092
  /** The frame fields a layout owns. Never `aspectRatio` or `browserBar`. */
2036
- declare const LAYOUT_FRAME_FIELDS: readonly ["background", "padding", "radius", "shadow", "shadowContact", "shadowColor", "inset", "border", "borderWidth", "borderColor", "fit", "focus", "focusFollow", "parallax", "entrance"];
2093
+ declare const LAYOUT_FRAME_FIELDS: readonly ["background", "padding", "radius", "shadow", "shadowContact", "shadowColor", "inset", "border", "borderWidth", "borderColor", "fit", "focus", "focusFollow", "parallax", "anim"];
2037
2094
  /**
2038
2095
  * The id prefix an exemplar reserves for the clips that ARE its layout:
2039
2096
  * the words and the mark a poster places (`stage-title`, `stage-kicker`,
@@ -2085,6 +2142,131 @@ interface CopiedLayout {
2085
2142
  * aspect, the browser chrome, every clip that is not a stage clip, the cut.
2086
2143
  */
2087
2144
  declare function copyLayout(from: ProjectDoc, to: ProjectDoc, opts?: CopyLayoutOptions): CopiedLayout;
2145
+ /** Where a template's clips land on the take. */
2146
+ type TemplateAnchor = 'start' | 'end' | number;
2147
+ interface ApplyTemplateOptions {
2148
+ /**
2149
+ * The anchor: `start` keeps the template's times; `end` lays them
2150
+ * relative to the take's footage end as they sat relative to the
2151
+ * template's own (an end card); a number is an output second the
2152
+ * template's clock starts at (a caption at a step's settle).
2153
+ */
2154
+ at: TemplateAnchor;
2155
+ /** Words for the template's text clips, by clip id. */
2156
+ words?: Record<string, string>;
2157
+ /** Media keys for the template's image and video clips, by clip id. */
2158
+ keys?: Record<string, string>;
2159
+ /**
2160
+ * What the clips say they came from (the template's vos id). Absent =
2161
+ * `'template'`. A re-apply with the same `from` replaces its earlier
2162
+ * clips and leaves everything else.
2163
+ */
2164
+ from?: string;
2165
+ /**
2166
+ * Carry the template's look too (the layout-owned frame fields, its
2167
+ * backdrop, the rest lean, the trailing hold): a poster. Absent = the
2168
+ * clips and the card's animation only.
2169
+ */
2170
+ look?: boolean;
2171
+ }
2172
+ interface AppliedTemplate {
2173
+ doc: ProjectDoc;
2174
+ notes: string[];
2175
+ }
2176
+ /**
2177
+ * The clips a template placed on a document (by `from`), in document order.
2178
+ */
2179
+ declare function clipsFrom(doc: Pick<ProjectDoc, 'overlays' | 'objects' | 'audio'>, from: string): {
2180
+ overlays: OverlayClip[];
2181
+ objects: ObjectClip[];
2182
+ audio: AudioClip[];
2183
+ };
2184
+ /**
2185
+ * The document without the clips a template placed. The card's `anim` is
2186
+ * the card's own once set, so it stays; a caller that wants the card still
2187
+ * clears it. Returns the same object when nothing came from `from`.
2188
+ */
2189
+ declare function dropTemplate(doc: ProjectDoc, from: string): ProjectDoc;
2190
+ /**
2191
+ * A TEMPLATE is a vos: a plain take document whose clips carry stable ids.
2192
+ * Applying it lays those clips onto another take at an ANCHOR, stamped
2193
+ * `from`, with the release's words and keys patched in by id; the take's
2194
+ * own same-id clip keeps its words unless `words` names them (the layout
2195
+ * rule); the template's card `anim` merges over the take's (an end card
2196
+ * brings the exit, a poster the entrance); with `look`, the layout-owned
2197
+ * frame fields, the backdrop, the rest lean and the hold come too, which
2198
+ * is `copyLayout`. The one assembly verb; a recipe says which template and
2199
+ * where, never the document.
2200
+ */
2201
+ declare function applyTemplate(template: ProjectDoc, take: ProjectDoc, opts: ApplyTemplateOptions): AppliedTemplate;
2202
+
2203
+ /**
2204
+ * ONE animation vocabulary for every visual primitive: the card, a text,
2205
+ * image or video clip, a prop. `anim.enter` and `anim.exit` are how a thing
2206
+ * arrives and leaves; `anim.idle` is what it does while it stays. A kind
2207
+ * alone is the house motion; a step object adds its seconds and, for words,
2208
+ * the per-unit grammar (unit, direction, stagger). Pure helpers over the
2209
+ * type; the lowering bakes them into the same ON_FRAME data the older
2210
+ * spellings produced (`enter`, `exit`, `fx`, `anim`), so a migrated document
2211
+ * paints the same picture.
2212
+ */
2213
+
2214
+ /** What the CARD can do. */
2215
+ declare const CARD_ENTER_KINDS: readonly AnimKind[];
2216
+ declare const CARD_EXIT_KINDS: readonly AnimKind[];
2217
+ /** What WORDS can do (the per-unit kinds are text-only). */
2218
+ declare const TEXT_ENTER_KINDS: readonly AnimKind[];
2219
+ declare const TEXT_EXIT_KINDS: readonly AnimKind[];
2220
+ /** What an image or a video clip can do. */
2221
+ declare const MEDIA_ENTER_KINDS: readonly AnimKind[];
2222
+ declare const MEDIA_EXIT_KINDS: readonly AnimKind[];
2223
+ /** What a prop does while it stays. */
2224
+ declare const IDLE_KINDS: readonly IdleKind[];
2225
+ /**
2226
+ * A step as an object: a bare kind becomes `{ kind }`; absent stays null so
2227
+ * a caller can tell "the house default" from "none".
2228
+ */
2229
+ declare function animStep(step: AnimKind | AnimStep | null | undefined): AnimStep | null;
2230
+ /** The enter step of a thing, or null when it carries none. */
2231
+ declare function enterOf(anim: Anim | null | undefined): AnimStep | null;
2232
+ /** The exit step of a thing, or null when it carries none. */
2233
+ declare function exitOf(anim: Anim | null | undefined): AnimStep | null;
2234
+ /**
2235
+ * Whether a text clip's enter step is a PER-UNIT animation (the baked `fx`
2236
+ * payload ON_FRAME reads) rather than the block transition: a per-unit
2237
+ * kind, or a fade/rise that names its unit, stagger or seconds. A bare
2238
+ * `'rise'` stays the block transition, which is what a migrated `enter`
2239
+ * was; a migrated `fx` always names its unit, so it stays per-unit.
2240
+ */
2241
+ declare function isUnitStep(step: AnimStep | null): boolean;
2242
+ /**
2243
+ * The text-fx spec a clip's enter step describes, in the shape the fx
2244
+ * normalizer reads, or null when the clip enters by the block transition.
2245
+ */
2246
+ declare function overlayFxSpec(clip: TextOverlayClip): TextFxSpec | null;
2247
+ /**
2248
+ * The block transition ON_FRAME reads as `enter`: the step's kind when it
2249
+ * is one of the three transitions, the house `rise` otherwise (a per-unit
2250
+ * step bakes `fx` beside it, and ON_FRAME ignores `enter` while `fx` is
2251
+ * set, exactly as before).
2252
+ */
2253
+ declare function enterKey(clip: OverlayClip): 'none' | 'fade' | 'rise';
2254
+ /** The block transition ON_FRAME reads as `exit`. */
2255
+ declare function exitKey(clip: OverlayClip): 'none' | 'fade' | 'rise';
2256
+ /** A prop's idle motion as ON_FRAME reads it (`anim`). */
2257
+ declare function idleKey(clip: ObjectClip): IdleKind | null;
2258
+ /**
2259
+ * Where the last VISUAL layer ends, in output seconds: a text, image or
2260
+ * video clip's end, a prop's span end. The output lasts at least this
2261
+ * long, so an end card is nothing but clips placed after the footage.
2262
+ * Audio never extends the output (a sound after the last picture is not a
2263
+ * thing to watch); a bed is trimmed to the output instead. A prop with no
2264
+ * span is always on and extends nothing.
2265
+ */
2266
+ declare function lastLayerEnd(doc: Pick<Partial<{
2267
+ overlays: OverlayClip[];
2268
+ objects: ObjectClip[];
2269
+ }>, 'overlays' | 'objects'>): number;
2088
2270
 
2089
2271
  /**
2090
2272
  * The digest's crop geometry, pure and shared by the CLI's page and
@@ -2809,18 +2991,34 @@ declare function applyLook(frame: FrameStyle, look: Look, size: {
2809
2991
  * THE REST of a take: the one output time its still is taken at. A poster
2810
2992
  * ends on a trailing `hold` (its last segment freezes on its last frame),
2811
2993
  * and the rest is where that hold BEGINS — the composed frame before
2812
- * nothing moves. Null when the take has no trailing hold, and null with an
2813
- * end card: the end card grows that hold at lowering and its words rise
2814
- * over the receding card during it, so the frame where it begins is
2815
- * footage under a fading title, not a poster. One convention for every
2816
- * still-taking surface (an export, a thumbnail, a kit), so they agree.
2994
+ * nothing moves. Null when the take has no trailing hold. One convention
2995
+ * for every still-taking surface (an export, a thumbnail, a kit), so they
2996
+ * agree. A legacy end card yields null: its words rise over a receding
2997
+ * card, which is footage under a fading title, not a poster.
2817
2998
  */
2818
2999
  declare function docRestTime(doc: ProjectDoc): number | null;
2819
- /** The entrance's default length, seconds. */
3000
+ /** The card entrance's default length, seconds. */
2820
3001
  declare const ENTRANCE_SECONDS = 1.2;
2821
- /** The end card's default length, seconds. */
3002
+ /** The legacy end card's default length, seconds. */
2822
3003
  declare const END_CARD_SECONDS = 2.5;
2823
- declare function entranceSeconds(e: FrameEntrance | null | undefined): number;
3004
+ /** How long the card takes to recede (the `recede` exit's house length). */
3005
+ declare const END_CARD_RECEDE = 0.7;
3006
+ /** The `fade` exit's house length. */
3007
+ declare const CARD_FADE_SECONDS = 0.35;
3008
+ /** The legacy marker a migrated end card's clips carry as `from`. */
3009
+ declare const END_CARD_FROM = "endcard";
3010
+ /** A step with a kind and optional seconds: the card's, or a legacy entrance. */
3011
+ type Step = {
3012
+ kind: string;
3013
+ seconds?: number;
3014
+ } | null | undefined;
3015
+ /** The card's enter step, from its `anim` (a migrated doc carries nothing else). */
3016
+ declare function cardEnter(frame: Pick<FrameStyle, 'anim'>): AnimStep | null;
3017
+ /** The card's exit step, from its `anim`. */
3018
+ declare function cardExit(frame: Pick<FrameStyle, 'anim'>): AnimStep | null;
3019
+ declare function entranceSeconds(e: Step): number;
3020
+ /** The exit's length: its own seconds, else the house length of its kind. */
3021
+ declare function exitSeconds(e: Step): number;
2824
3022
  /**
2825
3023
  * The rated segments with every `hold` expanded: after the last rated
2826
3024
  * piece of a held segment, a freeze piece whose tiny source span at the
@@ -2834,22 +3032,53 @@ declare function withHolds(docSegments: readonly (Segment & {
2834
3032
  /**
2835
3033
  * The card-pose track [scale, dy, opacity] in OUTPUT seconds: the entrance
2836
3034
  * settles the card in from a slightly smaller, lower, transparent pose;
2837
- * the end card recedes it under the words. Undefined when neither
2838
- * exists, so a doc without them lowers byte-identically.
3035
+ * the exit takes it out as its footage ends. The exit runs FROM the
3036
+ * footage's end when something plays after it (the card recedes under the
3037
+ * words), and ENDS at the footage's end when nothing does (the card leaves
3038
+ * as the cut closes). Undefined when the card carries neither, so a doc
3039
+ * without them lowers byte-identically.
2839
3040
  */
2840
- declare function cardPoseTrack(e: FrameEntrance | null | undefined, endStart: number | null, endSeconds: number): KeyframeTrack<number[]> | undefined;
3041
+ declare function cardPoseTrack(enter: Step, exit: Step, footageEnd: number, outputEnd?: number): KeyframeTrack<number[]> | undefined;
2841
3042
  /**
2842
- * A doc with its end card expanded: the last segment holds for the card's
2843
- * seconds and the card's words ride as OUTPUT-anchored text overlays over
2844
- * the receding footage (the house presets, so they resolve at lowering like
2845
- * any title). Returns the output second the card starts at, for the pose
2846
- * track. A doc with no end card comes back as itself.
3043
+ * The clips a legacy end card places after the footage: the house title,
3044
+ * caption and label presets over the receding card, the mark above the
3045
+ * wordmark, every one stamped `from: 'endcard'` so a loop drops them and
3046
+ * a re-apply replaces them. Pure; the words are the card's.
3047
+ */
3048
+ declare function endCardClips(card: EndCard, doc: Pick<ProjectDoc, 'export' | 'frame' | 'source'>, endStart: number): OverlayClip[];
3049
+ /**
3050
+ * A doc with its legacy end card expanded the OLD way: the last segment
3051
+ * holds for the card's seconds and the words ride over the frozen footage.
3052
+ * Kept for a caller that still wants the hold shape; the lowering migrates
3053
+ * instead (clips after the footage, a card exit, no hold), which paints the
3054
+ * same picture without a scenario field.
3055
+ * @deprecated Use `migrateMotion`.
2847
3056
  */
2848
3057
  declare function expandEndCard(doc: ProjectDoc, outputDuration: number): {
2849
3058
  doc: ProjectDoc;
2850
3059
  endStart: number | null;
2851
3060
  seconds: number;
2852
3061
  };
3062
+ /**
3063
+ * A document in the one vocabulary: `frame.entrance` becomes the card's
3064
+ * `anim.enter`; a clip's `enter`, `exit` and `fx` become its `anim`; a
3065
+ * prop's `animation` becomes its `anim.idle`; and the end card becomes a
3066
+ * card `anim.exit` of `recede` plus its clips placed after the footage
3067
+ * (no hold: the output now lasts until the last clip, and the card holds
3068
+ * its last frame at the exit's end pose, which is the picture the end card
3069
+ * painted). Returns the SAME object when there is nothing to migrate, so a
3070
+ * document already in the vocabulary lowers byte-identically and identity
3071
+ * checks hold.
3072
+ */
3073
+ declare function migrateMotion(doc: ProjectDoc): ProjectDoc;
3074
+ /**
3075
+ * Where the OUTPUT ends: the footage's end (its rated segments, holds
3076
+ * included) or the last visual clip's end, whichever is later. Past its
3077
+ * footage the card holds its last frame (`mapTime` clamps) at the pose its
3078
+ * exit settled into. A document that ends on its footage answers the
3079
+ * footage's end, byte-identically to before the rule.
3080
+ */
3081
+ declare function outputEnd(doc: Pick<ProjectDoc, 'overlays' | 'objects'>, footageEnd: number): number;
2853
3082
 
2854
3083
  /**
2855
3084
  * Compositor v2 — the layer stage geometry.
@@ -3410,4 +3639,4 @@ declare function rejectSpan(rejected: RejectedSpan[] | undefined, lane: Rejected
3410
3639
  anchor?: StepAnchor;
3411
3640
  }, note?: string): RejectedSpan;
3412
3641
 
3413
- export { ASPECT_RATIOS, AUDIO_PLAN_STEP, type AnchorKind, type AspectRatioOption, type AudioClip, type AudioPlanPoint, type AudioPlanTrack, BACKGROUND_Z, BASE_FRAME_STYLE, type Backdrop, type BackgroundMedia, type BakedText3dAsset, type BakedText3dMaterial, type BrowserBarStyle, type BuildDigestInput, CAMERA_FAR, CAMERA_NEAR, CAM_CHAIN_GAP, CAM_EASE, CAM_PAN, CAM_PAN_EASE, CAM_RAMP_IN, CAM_RAMP_OUT, CAM_SIZE_MAX, CAM_SIZE_MIN, CAM_SPAN_MIN, CAPTURE_COVERAGE_MIN, CARD_EDGE_OVERDRAW, CARD_FOV, CARD_Z, CHANNEL_SPECS_HASH, CHANNEL_SPECS_VERIFIED, CLICK_FX_INTENSITY, CLICK_FX_PRE, CLICK_HIGHLIGHT_FADE, CLICK_PAIR_MAX, CLICK_PULSE_DUR, CLICK_RECT_MAX_FRAC, CLICK_RIPPLE_DUR, CLICK_SYNTH_RELEASE, CROP_MAX_PX, CROP_MIN_FRAC, CROP_MIN_PX, CROP_PAD, CURSOR_IDLE_EPS_FRAC, CURSOR_IDLE_FADE_IN, CURSOR_IDLE_FADE_OUT, CURSOR_IDLE_HOLD, type CamBubbleRect, type CamPoseSpan, type CamStyle, type CaptureNormalization, type CardLayout, type ClickFxStyle, type CopiedLayout, type CopyLayoutOptions, type CopyStyleOptions, type CursorEvent, type CursorFadeKey, type CursorIdleOptions, type CursorStyle, type CursorTrack, DARK_GROUND, DEFAULT_BROWSER_BAR, DEFAULT_CAM_POSE, DEFAULT_CAM_STYLE, DEFAULT_CLICK_FX, DEFAULT_CURSOR_STYLE, DEFAULT_DUCK, DEFAULT_FRAME_STYLE, DEFAULT_SPEED_PARAMS, DEFAULT_TILT_POSE, DEFAULT_ZOOM_LEVEL, DEFAULT_ZOOM_STYLE, DESTINATIONS, DIGEST_CROP_MAX, DIGEST_FULL_MAX, DIGEST_VERSION, DOC_SCHEMA_VERSION, DRAG_FIT_LEVEL, type Destination, type Digest, type DigestImageRef, type DigestPlan, type DigestTakeFacts, type DocSegment, type DuckOptions, END_CARD_SECONDS, ENTRANCE_SECONDS, EXPORT_RESOLUTION_OPTIONS, EXPORT_SHORT_EDGE, type EndCard, type EnvelopePoint, type ExportResolution, type ExtractClickOptions, FOLLOW_RECENTER, FOLLOW_SAFE_RATIO, FRAME_BORDER_COLOR_DEFAULT, FRAME_BORDER_DEFAULT, FRAME_BORDER_WIDTH_DEFAULT, type FocusBounds, type FollowEvent, type FollowOptions, type FrameEntrance, type FrameGeometry, type FrameStyle, HOUSE_GRADIENT, type IngestOptions, LAYOUT_FRAME_FIELDS, LOOK_KINDS, type LayoutParts, type Look, type LookBrand, type LookKind, type LookPlacement, type LowerProgramOptions, type LoweredAudioClip, type LoweredClick, type LoweredComposition, type LoweredZoomSpan, MINIMAL_BAR_THEMES, MOTION_DELTA, MOTION_EASE, type MediaOverlayClip, type MicRms, type MinimalBarTheme, type Moment, type MomentKind, type MomentsOptions, type MotionKey, type MotionPose, type MotionPose3D, type MusicBedInput, type NormRect, OBJECT_DEFAULT_SCALE, OVERLAY_FONT_FACES, OVERLAY_LINE_HEIGHT, OVERLAY_MEDIA_DEFAULT_RADIUS, OVERLAY_MEDIA_DEFAULT_WIDTH, OVERLAY_MIN_DURATION, OVERLAY_SCALE_MAX, OVERLAY_SIZE_MAX, OVERLAY_SIZE_MIN, OVERLAY_TRANSITION_DUR, OVERLAY_Z, type ObjectAnimation, type ObjectAsset, type ObjectClip, type ObjectPrimitiveShape, type OverlayClip, type OverlayFontFace, type OverlayKind, type OverlayPresetStyle, type OverlayRect, type OverlayTransform, type OverlayTransition, PLATE_GROUND, PLAYBACK_ACTIVITY, PROGRAM_RETIME, type PlanOptions, type PlanTiltOptions, type PlaneSize, type ProgramAnchorDoc, type ProgramTweenEdit, type ProjectDoc, type PxRect, REJECT_OVERLAP, REST_TILT_ID, type RecordingArtifact, type RecordingMeta, type Rect, type RejectedLane, type RejectedSpan, type ResolvedOverlayBox, type ResolvedOverlayStyle, SCENE_MOTION, SCENE_QUIET, SPEED_RATE_MAX, SPEED_RATE_MIN, SPEED_SPAN_MIN, STAGE_CLIP_PREFIX, STUDIO_ENTRY_ID, STYLE_FIELDS, type SmoothOptions, type SmoothPoint, type SpeedParams, type SpeedSpan, type StepAnchor, type StepSpan, type StudioAudioPlan, type StudioDoc, type StudioEntry, type StyleField, TEXT3D_DEPTH_DEFAULT, TEXT3D_DEPTH_MAX, TEXT3D_DEPTH_MIN, TEXT_PRESETS, TILT_AUTO_DEAD_ZONE, TILT_AUTO_MIN, TILT_CHAIN_GAP, TILT_DEG_MAX, TILT_EASE, TILT_INTENSITY_MAX, TILT_PAN, TILT_PAN_EASE, TILT_RAMP_IN, TILT_RAMP_OUT, TILT_SPAN_MIN, TILT_UI_DEG_MAX, TRANSITION_SPEED_MULT, type Text3dMaterial, type TextFxDirection, type TextFxKind, type TextFxSpec, type TextFxUnit, type TextOverlayBox, type TextOverlayClip, type TextOverlayPreset, type TextOverlayStroke, type TiltPersonality, type TiltSpan, type TiltStyleName, type TranscriptSegment, type TransitionSpeed, WINDOW_FOCUS_MIN, ZOOM_CHAIN_GAP, ZOOM_EASE, ZOOM_LEVELS, ZOOM_LEVEL_MAX, ZOOM_LEVEL_MIN, ZOOM_PAN, ZOOM_PAN_EASE, ZOOM_RAMP_IN, ZOOM_RAMP_IN_OVERLAP, ZOOM_RAMP_OUT, ZOOM_SPAN_MIN, ZOOM_STYLES, ZOOM_STYLE_OPTIONS, type ZoomSpan, type ZoomStyleName, type ZoomStyleParams, type ZoomWindow, anchorKindOf, anchorSourceDuration, applyLook, aspectRatioValue, audioLane, backdropMedia, buildDigest, camBubbleRect, camBubbleRectAt, camLane, camMoveLane, camRectFromPose, camRestPose, camTrackFromDoc, cardInset, cardPointToScreen, cardPoseTrack, clampCamFrac, clampCamSize, clampFocus, clampSpeedRate, clampTiltDeg, clampZoomLevel, clipEnvelope, clipLength, computeCardLayout, computeMicRms, computePeaks, copyLayout, copyStyle, cropBox, cursorIdleFade, deriveViewportCrop, destinationById, destinationsForChannel, docCardLayout, docOutputDuration, docRestTime, docToCropSpace, docToFullSpace, duckCurve, effectiveSegments, entranceSeconds, envelopeAt, envelopeValueAt, expandEndCard, expectedFrameSize, exportSizeFor, extractClicks, focusBounds, followFocusEvents, frameGeometry, hexToRgbTriplet, houseLook, idleGaps, isLookKind, isMusicBed, isPlayback, isProgramDoc, isRecordingDoc, isRejected, isStageClip, layoutOf, levelForFocusFraction, lookFromBrand, lookKindForGround, lowerProgramDoc, lowerStudioDoc, lowerToComposition, micLane, migrateHostedDoc, momentsFromDoc, motionTrack, musicBedClip, normalizeCaptureSpace, objectMotionBase, objectMotionPoseAt, objectsLane, outputDurationOf, outputRangeToSource, overlapFraction, overlayFaceFor, overlayFontFaces, overlayFontString, overlayHit, overlayLines, overlayMotionBase, overlayMotionPoseAt, overlayRect, overlaysLane, pageDisplayUrl, parsePoseId, pickStyle, planAutoSpeed, planAutoTilt, planAutoZoom, planForDigest, planeSizeAtDepth, platformBarKind, programDuration, projectFromArtifact, ratedSegments, recommendedExportResolution, refillAudioBeds, rejectSpan, removeSourceRange, removeSpeedInRange, resolveExportSize, resolveOverlayBox, resolveOverlayStyle, resolveText3dAsset, resolveZoomStyle, restLeanOf, sceneChanges, scrollRuns, setSpeedInRange, smoothCursor, spanOutputExtent, speedLane, studioAudioPlan, studioEntry, studioLayerData, tiltLane, tiltTrackFromDoc, transitionMult, videoLane, voiceKey, withBackdrop, withHolds, withoutRejected, wrapProgramLength, zoomCoversRect, zoomLane, zoomSpanForRange, zoomTrackFromDoc, zoomWindow };
3642
+ export { ASPECT_RATIOS, AUDIO_PLAN_STEP, type AnchorKind, type Anim, type AnimKind, type AnimStep, type AppliedTemplate, type ApplyTemplateOptions, type AspectRatioOption, type AudioClip, type AudioPlanPoint, type AudioPlanTrack, BACKGROUND_Z, BASE_FRAME_STYLE, type Backdrop, type BackgroundMedia, type BakedText3dAsset, type BakedText3dMaterial, type BrowserBarStyle, type BuildDigestInput, CAMERA_FAR, CAMERA_NEAR, CAM_CHAIN_GAP, CAM_EASE, CAM_PAN, CAM_PAN_EASE, CAM_RAMP_IN, CAM_RAMP_OUT, CAM_SIZE_MAX, CAM_SIZE_MIN, CAM_SPAN_MIN, CAPTURE_COVERAGE_MIN, CARD_EDGE_OVERDRAW, CARD_ENTER_KINDS, CARD_EXIT_KINDS, CARD_FADE_SECONDS, CARD_FOV, CARD_Z, CHANNEL_SPECS_HASH, CHANNEL_SPECS_VERIFIED, CLICK_FX_INTENSITY, CLICK_FX_PRE, CLICK_HIGHLIGHT_FADE, CLICK_PAIR_MAX, CLICK_PULSE_DUR, CLICK_RECT_MAX_FRAC, CLICK_RIPPLE_DUR, CLICK_SYNTH_RELEASE, CROP_MAX_PX, CROP_MIN_FRAC, CROP_MIN_PX, CROP_PAD, CURSOR_IDLE_EPS_FRAC, CURSOR_IDLE_FADE_IN, CURSOR_IDLE_FADE_OUT, CURSOR_IDLE_HOLD, type CamBubbleRect, type CamPoseSpan, type CamStyle, type CaptureNormalization, type CardLayout, type ClickFxStyle, type CopiedLayout, type CopyLayoutOptions, type CopyStyleOptions, type CursorEvent, type CursorFadeKey, type CursorIdleOptions, type CursorStyle, type CursorTrack, DARK_GROUND, DEFAULT_BROWSER_BAR, DEFAULT_CAM_POSE, DEFAULT_CAM_STYLE, DEFAULT_CLICK_FX, DEFAULT_CURSOR_STYLE, DEFAULT_DUCK, DEFAULT_FRAME_STYLE, DEFAULT_SPEED_PARAMS, DEFAULT_TILT_POSE, DEFAULT_ZOOM_LEVEL, DEFAULT_ZOOM_STYLE, DESTINATIONS, DIGEST_CROP_MAX, DIGEST_FULL_MAX, DIGEST_VERSION, DOC_SCHEMA_VERSION, DRAG_FIT_LEVEL, type Destination, type Digest, type DigestImageRef, type DigestPlan, type DigestTakeFacts, type DocSegment, type DuckOptions, END_CARD_FROM, END_CARD_RECEDE, END_CARD_SECONDS, ENTRANCE_SECONDS, EXPORT_RESOLUTION_OPTIONS, EXPORT_SHORT_EDGE, type EndCard, type EnvelopePoint, type ExportResolution, type ExtractClickOptions, FOLLOW_RECENTER, FOLLOW_SAFE_RATIO, FRAME_BORDER_COLOR_DEFAULT, FRAME_BORDER_DEFAULT, FRAME_BORDER_WIDTH_DEFAULT, type FocusBounds, type FollowEvent, type FollowOptions, type FrameEntrance, type FrameGeometry, type FrameStyle, HOUSE_GRADIENT, IDLE_KINDS, type IdleKind, type IngestOptions, LAYOUT_FRAME_FIELDS, LOOK_KINDS, type LayoutParts, type Look, type LookBrand, type LookKind, type LookPlacement, type LowerProgramOptions, type LoweredAudioClip, type LoweredClick, type LoweredComposition, type LoweredZoomSpan, MEDIA_ENTER_KINDS, MEDIA_EXIT_KINDS, MINIMAL_BAR_THEMES, MOTION_DELTA, MOTION_EASE, type MediaOverlayClip, type MicRms, type MinimalBarTheme, type Moment, type MomentKind, type MomentsOptions, type MotionKey, type MotionPose, type MotionPose3D, type MusicBedInput, type NormRect, OBJECT_DEFAULT_SCALE, OVERLAY_FONT_FACES, OVERLAY_LINE_HEIGHT, OVERLAY_MEDIA_DEFAULT_RADIUS, OVERLAY_MEDIA_DEFAULT_WIDTH, OVERLAY_MIN_DURATION, OVERLAY_SCALE_MAX, OVERLAY_SIZE_MAX, OVERLAY_SIZE_MIN, OVERLAY_TRANSITION_DUR, OVERLAY_Z, type ObjectAnimation, type ObjectAsset, type ObjectClip, type ObjectPrimitiveShape, type OverlayClip, type OverlayFontFace, type OverlayKind, type OverlayPresetStyle, type OverlayRect, type OverlayTransform, type OverlayTransition, PLATE_GROUND, PLAYBACK_ACTIVITY, PROGRAM_RETIME, type PlanOptions, type PlanTiltOptions, type PlaneSize, type ProgramAnchorDoc, type ProgramTweenEdit, type ProjectDoc, type PxRect, REJECT_OVERLAP, REST_TILT_ID, type RecordingArtifact, type RecordingMeta, type Rect, type RejectedLane, type RejectedSpan, type ResolvedOverlayBox, type ResolvedOverlayStyle, SCENE_MOTION, SCENE_QUIET, SPEED_RATE_MAX, SPEED_RATE_MIN, SPEED_SPAN_MIN, STAGE_CLIP_PREFIX, STUDIO_ENTRY_ID, STYLE_FIELDS, type SmoothOptions, type SmoothPoint, type SpeedParams, type SpeedSpan, type StepAnchor, type StepSpan, type StudioAudioPlan, type StudioDoc, type StudioEntry, type StyleField, TEXT3D_DEPTH_DEFAULT, TEXT3D_DEPTH_MAX, TEXT3D_DEPTH_MIN, TEXT_ENTER_KINDS, TEXT_EXIT_KINDS, TEXT_PRESETS, TILT_AUTO_DEAD_ZONE, TILT_AUTO_MIN, TILT_CHAIN_GAP, TILT_DEG_MAX, TILT_EASE, TILT_INTENSITY_MAX, TILT_PAN, TILT_PAN_EASE, TILT_RAMP_IN, TILT_RAMP_OUT, TILT_SPAN_MIN, TILT_UI_DEG_MAX, TRANSITION_SPEED_MULT, type TemplateAnchor, type Text3dMaterial, type TextFxDirection, type TextFxKind, type TextFxSpec, type TextFxUnit, type TextOverlayBox, type TextOverlayClip, type TextOverlayPreset, type TextOverlayStroke, type TiltPersonality, type TiltSpan, type TiltStyleName, type TranscriptSegment, type TransitionSpeed, WINDOW_FOCUS_MIN, ZOOM_CHAIN_GAP, ZOOM_EASE, ZOOM_LEVELS, ZOOM_LEVEL_MAX, ZOOM_LEVEL_MIN, ZOOM_PAN, ZOOM_PAN_EASE, ZOOM_RAMP_IN, ZOOM_RAMP_IN_OVERLAP, ZOOM_RAMP_OUT, ZOOM_SPAN_MIN, ZOOM_STYLES, ZOOM_STYLE_OPTIONS, type ZoomSpan, type ZoomStyleName, type ZoomStyleParams, type ZoomWindow, anchorKindOf, anchorSourceDuration, animStep, applyLook, applyTemplate, aspectRatioValue, audioLane, backdropMedia, buildDigest, camBubbleRect, camBubbleRectAt, camLane, camMoveLane, camRectFromPose, camRestPose, camTrackFromDoc, cardEnter, cardExit, cardInset, cardPointToScreen, cardPoseTrack, clampCamFrac, clampCamSize, clampFocus, clampSpeedRate, clampTiltDeg, clampZoomLevel, clipEnvelope, clipLength, clipsFrom, computeCardLayout, computeMicRms, computePeaks, copyLayout, copyStyle, cropBox, cursorIdleFade, deriveViewportCrop, destinationById, destinationsForChannel, docCardLayout, docOutputDuration, docRestTime, docToCropSpace, docToFullSpace, dropTemplate, duckCurve, effectiveSegments, endCardClips, enterKey, enterOf, entranceSeconds, envelopeAt, envelopeValueAt, exitKey, exitOf, exitSeconds, expandEndCard, expectedFrameSize, exportSizeFor, extractClicks, focusBounds, followFocusEvents, frameGeometry, hexToRgbTriplet, houseLook, idleGaps, idleKey, isLookKind, isMusicBed, isPlayback, isProgramDoc, isRecordingDoc, isRejected, isStageClip, isUnitStep, lastLayerEnd, layoutOf, levelForFocusFraction, lookFromBrand, lookKindForGround, lowerProgramDoc, lowerStudioDoc, lowerToComposition, micLane, migrateHostedDoc, migrateMotion, momentsFromDoc, motionTrack, musicBedClip, normalizeCaptureSpace, objectMotionBase, objectMotionPoseAt, objectsLane, outputDurationOf, outputEnd, outputRangeToSource, overlapFraction, overlayFaceFor, overlayFontFaces, overlayFontString, overlayFxSpec, overlayHit, overlayLines, overlayMotionBase, overlayMotionPoseAt, overlayRect, overlaysLane, pageDisplayUrl, parsePoseId, pickStyle, planAutoSpeed, planAutoTilt, planAutoZoom, planForDigest, planeSizeAtDepth, platformBarKind, programDuration, projectFromArtifact, ratedSegments, recommendedExportResolution, refillAudioBeds, rejectSpan, removeSourceRange, removeSpeedInRange, resolveExportSize, resolveOverlayBox, resolveOverlayStyle, resolveText3dAsset, resolveZoomStyle, restLeanOf, sceneChanges, scrollRuns, setSpeedInRange, smoothCursor, spanOutputExtent, speedLane, studioAudioPlan, studioEntry, studioLayerData, tiltLane, tiltTrackFromDoc, transitionMult, videoLane, voiceKey, withBackdrop, withHolds, withoutRejected, wrapProgramLength, zoomCoversRect, zoomLane, zoomSpanForRange, zoomTrackFromDoc, zoomWindow };