@nodaro/prompts 1.47.0 → 1.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/dist/{catalog-packs-D7NJpo4k.d.ts → catalog-packs-BzzZCjbz.d.ts} +1 -1
  2. package/dist/{catalog-packs-C9CXEWfl.d.cts → catalog-packs-C--EzV3K.d.cts} +1 -1
  3. package/dist/{chunk-PHR4UETI.cjs → chunk-3AVLIA4B.cjs} +18 -18
  4. package/dist/{chunk-PHR4UETI.cjs.map → chunk-3AVLIA4B.cjs.map} +1 -1
  5. package/dist/{chunk-OSKABA64.cjs → chunk-3HMMG6W4.cjs} +8 -8
  6. package/dist/{chunk-OSKABA64.cjs.map → chunk-3HMMG6W4.cjs.map} +1 -1
  7. package/dist/{chunk-NN4FL7SB.js → chunk-3J52HGBL.js} +4 -4
  8. package/dist/{chunk-NN4FL7SB.js.map → chunk-3J52HGBL.js.map} +1 -1
  9. package/dist/{chunk-TXHFL725.js → chunk-4V4JJUEH.js} +102 -54
  10. package/dist/chunk-4V4JJUEH.js.map +1 -0
  11. package/dist/{chunk-CPKYIVWP.js → chunk-7C7XLZPU.js} +12 -9
  12. package/dist/chunk-7C7XLZPU.js.map +1 -0
  13. package/dist/{chunk-YCCQXX3U.cjs → chunk-7VVVHIMH.cjs} +39 -39
  14. package/dist/{chunk-YCCQXX3U.cjs.map → chunk-7VVVHIMH.cjs.map} +1 -1
  15. package/dist/{chunk-2OIKQ4WB.js → chunk-FDTRN7OE.js} +5 -5
  16. package/dist/{chunk-2OIKQ4WB.js.map → chunk-FDTRN7OE.js.map} +1 -1
  17. package/dist/{chunk-JHEZJKTX.cjs → chunk-GTN3UO74.cjs} +113 -56
  18. package/dist/chunk-GTN3UO74.cjs.map +1 -0
  19. package/dist/{chunk-C4FDHCEZ.cjs → chunk-KBIA4R6X.cjs} +125 -125
  20. package/dist/{chunk-C4FDHCEZ.cjs.map → chunk-KBIA4R6X.cjs.map} +1 -1
  21. package/dist/{chunk-2HJJBXGA.js → chunk-MJ5OXUDF.js} +6 -6
  22. package/dist/{chunk-2HJJBXGA.js.map → chunk-MJ5OXUDF.js.map} +1 -1
  23. package/dist/{chunk-OY7XOPDG.cjs → chunk-NBJR7JS4.cjs} +57 -57
  24. package/dist/chunk-NBJR7JS4.cjs.map +1 -0
  25. package/dist/{chunk-VAK4RUNU.cjs → chunk-NET25TEQ.cjs} +13 -13
  26. package/dist/{chunk-VAK4RUNU.cjs.map → chunk-NET25TEQ.cjs.map} +1 -1
  27. package/dist/{chunk-SMKIVT7P.js → chunk-NRBO4I4G.js} +4 -4
  28. package/dist/{chunk-SMKIVT7P.js.map → chunk-NRBO4I4G.js.map} +1 -1
  29. package/dist/{chunk-FCTK7RGO.cjs → chunk-OXJ5GN57.cjs} +42 -39
  30. package/dist/chunk-OXJ5GN57.cjs.map +1 -0
  31. package/dist/{chunk-IKHRZ5UQ.js → chunk-PJPCNKEJ.js} +3 -3
  32. package/dist/{chunk-IKHRZ5UQ.js.map → chunk-PJPCNKEJ.js.map} +1 -1
  33. package/dist/{chunk-XZXUU3YH.js → chunk-QN3OP6TG.js} +8 -3
  34. package/dist/chunk-QN3OP6TG.js.map +1 -0
  35. package/dist/{chunk-UNR34GYU.cjs → chunk-WW7IHRIE.cjs} +8 -3
  36. package/dist/chunk-WW7IHRIE.cjs.map +1 -0
  37. package/dist/{chunk-57PTYJJX.js → chunk-XVAVCHPJ.js} +13 -13
  38. package/dist/chunk-XVAVCHPJ.js.map +1 -0
  39. package/dist/entries/assembly.cjs +29 -29
  40. package/dist/entries/assembly.d.cts +1 -2
  41. package/dist/entries/assembly.d.ts +1 -2
  42. package/dist/entries/assembly.js +6 -6
  43. package/dist/entries/catalog-packs.d.cts +3 -3
  44. package/dist/entries/catalog-packs.d.ts +3 -3
  45. package/dist/entries/person.d.cts +2 -2
  46. package/dist/entries/person.d.ts +2 -2
  47. package/dist/entries/picker-art.cjs +19 -19
  48. package/dist/entries/picker-art.d.cts +5 -0
  49. package/dist/entries/picker-art.d.ts +5 -0
  50. package/dist/entries/picker-art.js +1 -1
  51. package/dist/entries/picker-catalogs.cjs +57 -57
  52. package/dist/entries/picker-catalogs.d.cts +26 -4
  53. package/dist/entries/picker-catalogs.d.ts +26 -4
  54. package/dist/entries/picker-catalogs.js +5 -5
  55. package/dist/entries/pickers.cjs +410 -374
  56. package/dist/entries/pickers.d.cts +524 -3
  57. package/dist/entries/pickers.d.ts +524 -3
  58. package/dist/entries/pickers.js +3 -3
  59. package/dist/entries/prompt-builder.cjs +76 -76
  60. package/dist/entries/prompt-builder.d.cts +2 -3
  61. package/dist/entries/prompt-builder.d.ts +2 -3
  62. package/dist/entries/prompt-builder.js +5 -5
  63. package/dist/index.cjs +580 -544
  64. package/dist/index.d.cts +5 -6
  65. package/dist/index.d.ts +5 -6
  66. package/dist/index.js +9 -9
  67. package/dist/{picker-catalogs-C3utGMRB.d.cts → picker-catalogs-BylSIFKL.d.cts} +17 -0
  68. package/dist/{picker-catalogs-BM8IphF1.d.ts → picker-catalogs-DHRyjPXb.d.ts} +17 -0
  69. package/dist/{subject-registry-DFiGx49v.d.ts → subject-registry-Cf802LQ5.d.ts} +8 -4
  70. package/dist/{subject-registry-CQi_CZfJ.d.cts → subject-registry-D2uMBVpP.d.cts} +8 -4
  71. package/package.json +2 -2
  72. package/src/__tests__/assemble-video-input.test.ts +13 -11
  73. package/src/__tests__/direction-registry.test.ts +5 -5
  74. package/src/__tests__/prompt-style-section.test.ts +2 -2
  75. package/src/__tests__/style-media.test.ts +141 -0
  76. package/src/__tests__/style-video-wording.test.ts +273 -0
  77. package/src/catalog-overlay.ts +15 -1
  78. package/src/direction-registry.ts +25 -7
  79. package/src/parameter-prompt-hint.ts +23 -7
  80. package/src/picker-art/look-preview-sets.ts +5 -0
  81. package/src/picker-catalogs.ts +30 -0
  82. package/src/style.ts +163 -50
  83. package/dist/chunk-57PTYJJX.js.map +0 -1
  84. package/dist/chunk-CPKYIVWP.js.map +0 -1
  85. package/dist/chunk-FCTK7RGO.cjs.map +0 -1
  86. package/dist/chunk-JHEZJKTX.cjs.map +0 -1
  87. package/dist/chunk-OY7XOPDG.cjs.map +0 -1
  88. package/dist/chunk-TXHFL725.js.map +0 -1
  89. package/dist/chunk-UNR34GYU.cjs.map +0 -1
  90. package/dist/chunk-XZXUU3YH.js.map +0 -1
  91. package/dist/transitions-BLFfAJUH.d.cts +0 -450
  92. package/dist/transitions-BgwWM37i.d.ts +0 -450
@@ -1,7 +1,6 @@
1
1
  import { CharacterMotionMetadata } from '@nodaro/shared/types';
2
2
  export { CharacterMotionMetadata } from '@nodaro/shared/types';
3
3
  import { P as PickerHintMode } from '../term-C01_g6s1.js';
4
- export { A as AURORA_SWEEP_STYLE, D as DEBRIS_SHOWER_STYLE, G as GARDEN_BLOOM_STYLE, I as INSTANT_CUT_CLAUSE, S as SAKURA_PETALS_STYLE, a as SAND_STORM_STYLE, b as SMOKE_PUFF_STYLE, T as TRANSITIONS, c as TRANSITION_CATEGORY_LABELS, d as TRANSITION_CATEGORY_ORDER, e as TRANSITION_DURATIONS, f as TRANSITION_IDS, g as TRANSITION_INTENSITIES, h as TRANSITION_OPTION_FIELDS, i as TRANSITION_POSITIONS, j as TRANSITION_STYLE_FIELD, k as Transition, l as TransitionCategory, m as TransitionDuration, n as TransitionHintOptions, o as TransitionHintScope, p as TransitionIntensity, q as TransitionOption, r as TransitionOptionChoice, s as TransitionOptionValues, t as TransitionPosition, u as TransitionTiming, v as TransitionTimingOption, W as WHITE_FLASH_STYLE, w as WIPE_DIRECTION, x as blendedCutClause, y as composeTransitionHintFromConnections, z as getTransition, B as getTransitionLabel, C as getTransitionOptions, E as getTransitionPromptHint, F as getTransitionTerm, H as isBlendableTransition, J as isInstantTransition, K as readTransitionOptionValues, L as renderTransitionBases } from '../transitions-BgwWM37i.js';
5
4
 
6
5
  /**
7
6
  * Types for the Character Motion catalog. The entry arrays live one file per
@@ -2172,7 +2171,7 @@ declare const SETTING_IDS: ReadonlyArray<string>;
2172
2171
  declare const SETTING_CATEGORY_LABELS: Readonly<Record<SettingCategory, string>>;
2173
2172
 
2174
2173
  /**
2175
- * Canonical catalog of image style presets.
2174
+ * Canonical catalog of image and video style presets.
2176
2175
  *
2177
2176
  * Style dimension of an image/video — the overall artistic rendering or
2178
2177
  * medium (anime, oil painting, photorealistic, etc.). Independent of
@@ -2192,6 +2191,14 @@ declare const SETTING_CATEGORY_LABELS: Readonly<Record<SettingCategory, string>>
2192
2191
  * inline dropdown and the Style node resolve to the same richer promptHint
2193
2192
  * at execution time.
2194
2193
  */
2194
+ /** How a style makes its pictures: filmed or photographed ("photo"), rendered or built in 3D ("3d"), or drawn and painted flat ("2d"). */
2195
+ type StyleMedium = "photo" | "3d" | "2d";
2196
+ declare const STYLE_MEDIUMS: ReadonlyArray<StyleMedium>;
2197
+ /** A style that names tones rather than colours: black and white, or a single colour (Blueprint's blue). */
2198
+ type StyleTones = "black-and-white" | "one-colour";
2199
+ /** Which kind of output a style is offered for. */
2200
+ type StyleMedia = "image" | "video";
2201
+ declare const STYLE_MEDIA: ReadonlyArray<StyleMedia>;
2195
2202
  interface Style {
2196
2203
  readonly id: string;
2197
2204
  readonly label: string;
@@ -2208,6 +2215,48 @@ interface Style {
2208
2215
  * the term ("anime", "ukiyo-e", "cyberpunk") and nothing is authored.
2209
2216
  */
2210
2217
  readonly term?: string;
2218
+ /**
2219
+ * VIDEO-ONLY wording: what the medium is, then its concrete techniques
2220
+ * ("Stop-motion claymation, handmade: every person … sculpted from matte
2221
+ * plasticine clay …"). A still's `promptHint` loses to real reference photos
2222
+ * once the shot moves: a video model holds on to a photographed face or a
2223
+ * filmed scene unless the wording names a MEDIUM strongly enough to override
2224
+ * it (in video tests on Seedance 2.5, this pattern as the prompt's first line
2225
+ * styled every shot). Every stock style carries one; the photographic styles
2226
+ * name a live-action or photographic medium, so they stay photographed. A
2227
+ * drawn style names a 2D medium, with its outline first among its techniques
2228
+ * (in the tests, lines with an outline styled every shot, a shot no reference
2229
+ * picture covers included; lines without one often left that shot
2230
+ * photographed). Every video surface reads it through
2231
+ * `getStyleVideoPromptHint`, which falls back to `promptHint` (a pack style
2232
+ * without one). Images never read it.
2233
+ */
2234
+ readonly videoPromptHint?: string;
2235
+ /**
2236
+ * How the style makes its pictures (`StyleMedium`). Required, so a new style
2237
+ * classifies itself in the one place that adds it. A video prompt words its
2238
+ * restyle by it: Nodaro Motion's art-style line says "drawn" for a 2D style
2239
+ * and "rendered" for a 3D one, and leaves a photographic style photographed.
2240
+ */
2241
+ readonly medium: StyleMedium;
2242
+ /** Set only on a style that names tones rather than colours (`StyleTones`). */
2243
+ readonly tones?: StyleTones;
2244
+ /**
2245
+ * Which outputs offer the style (`StyleMedia`). Absent means both. A
2246
+ * `["video"]` style is a look that only works in motion or was only tested
2247
+ * there (felt puppets, knitted yarn): image style lists leave it out. A
2248
+ * prompt that already names one still reads it: an image reads its
2249
+ * `promptHint`, so a graph that wires one into an image keeps working.
2250
+ */
2251
+ readonly media?: ReadonlyArray<StyleMedia>;
2252
+ /**
2253
+ * `false` on a style that does not hold up as a RESTYLE of filmed footage
2254
+ * (Nodaro Motion's Flex art style, a style-only restyle): in tests it came
2255
+ * out as the same plain 2D cartoon as Digital Art, without its own look.
2256
+ * Restyle style lists leave it out. Video GENERATION still offers it, and a
2257
+ * restyle that names it anyway still reads it. Absent: offered for restyle.
2258
+ */
2259
+ readonly restyle?: false;
2211
2260
  }
2212
2261
  declare const STYLES: ReadonlyArray<Style>;
2213
2262
  declare function getStyle(id: string | undefined | null): Style | undefined;
@@ -2223,8 +2272,33 @@ declare function getStyle(id: string | undefined | null): Style | undefined;
2223
2272
  declare function isDeniedStyleId(value: string | undefined | null): boolean;
2224
2273
  declare function getStyleLabel(id: string | undefined | null, fallback?: string): string;
2225
2274
  declare function getStylePromptHint(id: string | undefined | null): string;
2275
+ /**
2276
+ * The wording a VIDEO prompt injects for this style: its `videoPromptHint`
2277
+ * where one is authored, else the same `promptHint` an image uses. Resolved
2278
+ * through `getStyle`, so a deployment's catalog packs apply exactly as they do
2279
+ * to `getStylePromptHint` (see `overlayEntry` for how a pack's rewrite and the
2280
+ * video wording pair up). `""` for an unknown or denied id.
2281
+ */
2282
+ declare function getStyleVideoPromptHint(id: string | undefined | null): string;
2226
2283
  /** Compact counterpart of `getStylePromptHint` — see `term.ts`. */
2227
2284
  declare function getStyleTerm(id: string | undefined | null): string;
2285
+ /**
2286
+ * The style's medium (`Style.medium`), read through `getStyle` so a curated-out
2287
+ * id has none. A style a catalog pack adds without one reads as "2d", the
2288
+ * medium every non-photographic, non-rendered style has. `undefined` for an
2289
+ * unknown or denied id.
2290
+ */
2291
+ declare function getStyleMedium(id: string | undefined | null): StyleMedium | undefined;
2292
+ /** The style's tones (`Style.tones`); `undefined` for a style in colour, or an unknown or denied id. */
2293
+ declare function getStyleTones(id: string | undefined | null): StyleTones | undefined;
2294
+ /** Whether a style is offered for `media` (`Style.media`; absent means both). */
2295
+ declare function styleOffersMedia(style: Pick<Style, "media">, media: StyleMedia): boolean;
2296
+ /** The styles offered for `media`, in catalog order: what an image or a video style list shows. A new array. */
2297
+ declare function stylesForMedia<T extends Pick<Style, "media">>(styles: ReadonlyArray<T>, media: StyleMedia): T[];
2298
+ /** Whether a style is offered as a restyle of filmed footage (`Style.restyle`; absent means it is). */
2299
+ declare function styleOffersRestyle(style: Pick<Style, "restyle">): boolean;
2300
+ /** The styles a restyle list offers, in catalog order: video styles that hold up as a restyle. A new array. */
2301
+ declare function stylesForRestyle<T extends Pick<Style, "media" | "restyle">>(styles: ReadonlyArray<T>): T[];
2228
2302
  declare const STYLE_IDS: ReadonlyArray<string>;
2229
2303
 
2230
2304
  /**
@@ -2500,6 +2574,453 @@ declare function buildTemporalTerms(data: Record<string, unknown> & {
2500
2574
  temporalShutter?: unknown;
2501
2575
  }): string[];
2502
2576
 
2577
+ /**
2578
+ * Canonical catalog of cinematic transitions for AI-video generation.
2579
+ *
2580
+ * Shared between frontend (picker UI, prompt hint injection) and backend
2581
+ * (orchestrator payload builder). The `promptHint` is a natural-language
2582
+ * cue that gets composed into the user prompt when a transition node is
2583
+ * connected to a video consumer.
2584
+ *
2585
+ * Multi-pick supported: value field accepts `string | string[]` (cap 2).
2586
+ * Graph-aware: `startState` / `endState` input handles accept upstream
2587
+ * parameter nodes whose hints are folded into the composed clause as
2588
+ * "starting from <X>, ending at <Y>".
2589
+ */
2590
+
2591
+ type TransitionCategory = "standard" | "time" | "element" | "morph" | "portal" | "physics" | "light" | "glitch";
2592
+ interface Transition {
2593
+ readonly id: string;
2594
+ readonly label: string;
2595
+ readonly category: TransitionCategory;
2596
+ readonly description: string;
2597
+ readonly promptHint: string;
2598
+ /**
2599
+ * Optional authored compact term (see `term.ts`). Authored where the
2600
+ * lowercased label is not what an editor would write in a prompt — a UI
2601
+ * compound ("None / Hard Cut" → "hard cut"), an annotation the derivation
2602
+ * drops ("Fast-Forward (Day → Night)" → "day-to-night time-lapse"), a bare
2603
+ * word that collides with another meaning ("Melt Down", "Channel Flip",
2604
+ * "Roll"), or a coinage that is not the trade term ("Seamless Match" →
2605
+ * "invisible cut"). Everywhere else the label IS the term.
2606
+ */
2607
+ readonly term?: string;
2608
+ /**
2609
+ * `true` on rows whose mechanism IS A CUT — the change happens between two
2610
+ * frames, so it has no duration to time. A duration clause ("lasting
2611
+ * approximately 1 second") on such a row tells the video model to spend a
2612
+ * second on the change, and it obliges with a dissolve: a match cut rendered
2613
+ * as a 1.75 s cross-dissolve in QA. The composer therefore skips the duration
2614
+ * clause when every picked transition is instant (on a BLENDABLE cut, a
2615
+ * `blendsCut` step changes the cut itself instead — see `blendable`), and
2616
+ * consumers offer only the levers a cut takes — Position without `full`, no
2617
+ * Intensity, and Duration only on a blendable cut, as a Blend lever of "hard
2618
+ * cut" plus the `blendsCut` steps — reading `isInstantTransition` /
2619
+ * `isBlendableTransition` (the canvas panel) or the picker catalog's
2620
+ * `instant` / `blendable` / `blendsCut` flags (an id-only client).
2621
+ *
2622
+ * The same holds for INTENSITY: every intensity clause describes how the
2623
+ * change PERFORMS over time ("natural unhurried timing", "wild flourishes and
2624
+ * dramatic distortion"), and a cut has no performance to shape — "unhurried"
2625
+ * on a match cut is another invitation to blend. So the composer drops the
2626
+ * intensity clause too when every pick is instant. Position still applies —
2627
+ * WHERE the cut lands is a real choice — except `full`: a single-frame cut
2628
+ * cannot "span the entire clip", so that clause is dropped on an all-instant
2629
+ * pick (start / middle / end still place the cut).
2630
+ *
2631
+ * The bare term is not enough on its own either: "match cut" still came back
2632
+ * as a ~1 s superimposition in prod QA (seedance-2-5). The composer therefore
2633
+ * puts `INSTANT_CUT_CLAUSE` inside an all-instant pick's parentheses, once — the explicit
2634
+ * anti-blend instruction that made the model render a true single-frame cut.
2635
+ */
2636
+ readonly instant?: boolean;
2637
+ /**
2638
+ * `true` on a CUT that may become a BLENDED CUT: picked with a duration step
2639
+ * that `blendsCut` (Short), the pick's anti-blend `INSTANT_CUT_CLAUSE` is
2640
+ * REPLACED by `blendedCutClause` — the two shots blend into each other over
2641
+ * that step's own `term` — and every other rule of a cut stands (position
2642
+ * without `full`, no duration clause, no intensity clause). Any other
2643
+ * duration leaves it a hard cut. See `isBlendableTransition`.
2644
+ *
2645
+ * Set on `seamless-match` and `jump-match` only. In the blended-cut test
2646
+ * round (2026-10-04) their blended takes at Short kept what makes each row
2647
+ * itself — the invisible cut still hid its join, the jump match still held
2648
+ * the subject's place across the leap — and were approved. The blended takes
2649
+ * of `match-cut`, `jump-cut` and `action-relay` lost their trait and rated
2650
+ * below their hard cut, so those rows stay hard cuts at every duration, as
2651
+ * do `none`, `snap-to-black` and `smash-cut`, whose descriptions a blend
2652
+ * would contradict ("instantaneous", "on a single frame", "no fade").
2653
+ */
2654
+ readonly blendable?: boolean;
2655
+ /**
2656
+ * PER-ROW OPTIONS — extra choices that only mean something for THIS
2657
+ * transition (a wipe's direction), each written into the row's own hint.
2658
+ *
2659
+ * Unlike the timing scales (every row has a position), an option is declared
2660
+ * by the row that reads it, so it never appears beside a transition it would
2661
+ * not change. The row authors `promptTemplate` — its hint with one
2662
+ * `{<field>}` token per option — and `promptHint` is DERIVED from it with
2663
+ * every option on its `auto` choice (see `withOptionSlots`), so a reader of
2664
+ * the plain `promptHint` (the picker catalog, the analyzer, a catalog pack)
2665
+ * always sees a finished sentence and never a token.
2666
+ *
2667
+ * The choice's `phrase` is what fills the token, so the row BODY and the
2668
+ * option WORDING are separate: a reworded body keeps its options as long as
2669
+ * it keeps the token. `transition-options.test.ts` pins that every template
2670
+ * carries exactly one token per option and no other.
2671
+ */
2672
+ readonly options?: ReadonlyArray<TransitionOption>;
2673
+ /** The hint with a `{<field>}` token per `options` entry — see `options`. */
2674
+ readonly promptTemplate?: string;
2675
+ }
2676
+ /**
2677
+ * One choice of a per-row option. `auto` leads every option and is the choice
2678
+ * `promptHint` is written with: picking it (or picking nothing) sends no value.
2679
+ */
2680
+ interface TransitionOptionChoice {
2681
+ readonly id: string;
2682
+ readonly label: string;
2683
+ readonly description: string;
2684
+ /** The words that fill the row template's `{<field>}` token. */
2685
+ readonly phrase: string;
2686
+ /** The compact term for the choice ("left to right"); `""` on `auto`. */
2687
+ readonly term: string;
2688
+ }
2689
+ /** A per-row option (see `Transition.options`). */
2690
+ interface TransitionOption {
2691
+ /** The node-data field the chosen id is stored under — also the template
2692
+ * token's name (`{wipeDirection}`). Unique within a row; SHARED across rows
2693
+ * only where the rows mean the same kind of setting (`style`, see
2694
+ * `TRANSITION_STYLE_FIELD`) — each row still declares its own choices, and
2695
+ * a value is read only by the row that declares it. */
2696
+ readonly field: string;
2697
+ readonly label: string;
2698
+ /** `auto` first. */
2699
+ readonly choices: ReadonlyArray<TransitionOptionChoice>;
2700
+ }
2701
+ /**
2702
+ * The chosen option ids, keyed by `TransitionOption.field`
2703
+ * (`{ wipeDirection: "left-to-right" }`). One flat record for a whole pick: a
2704
+ * row reads only the fields it declares, so the other row of a two-pick, or a
2705
+ * value left behind by an earlier pick, changes nothing.
2706
+ */
2707
+ type TransitionOptionValues = Readonly<Record<string, string | undefined>>;
2708
+ /**
2709
+ * The wipe's direction. The phrase is the edge AND its travel, so the row's
2710
+ * body is free to change around it (`a clean {wipeDirection}, revealing …`).
2711
+ * `auto` names no orientation at all — a straight edge — and is what a pick
2712
+ * with no direction has always meant.
2713
+ */
2714
+ declare const WIPE_DIRECTION: TransitionOption;
2715
+ /** The shared node-data field every styled row stores its look under. */
2716
+ declare const TRANSITION_STYLE_FIELD = "style";
2717
+ declare const DEBRIS_SHOWER_STYLE: TransitionOption;
2718
+ declare const GARDEN_BLOOM_STYLE: TransitionOption;
2719
+ declare const SMOKE_PUFF_STYLE: TransitionOption;
2720
+ declare const SAKURA_PETALS_STYLE: TransitionOption;
2721
+ declare const AURORA_SWEEP_STYLE: TransitionOption;
2722
+ declare const SAND_STORM_STYLE: TransitionOption;
2723
+ declare const WHITE_FLASH_STYLE: TransitionOption;
2724
+ /**
2725
+ * The three timing scales, each derived from the catalog that defines it (see
2726
+ * `TRANSITION_POSITIONS` and friends below).
2727
+ *
2728
+ * The direction matters. These used to be hand-written unions with the clause
2729
+ * tables written out separately beside them, so the two could disagree: add a
2730
+ * step to the union, forget the clause, and the composer indexed a missing key
2731
+ * — pushing `undefined` into the parts list, which `join(", ")` renders as a
2732
+ * dangling separator on a prompt that then ships to a provider with the user's
2733
+ * chosen parameter silently dropped. Deriving the union FROM the catalog makes
2734
+ * that unrepresentable: one array is the source of the type, the option list
2735
+ * the API serves, and the clause table, so a new step reaches all three or
2736
+ * none. The exact id sets are pinned by `transition-timing-catalogs.test.ts`.
2737
+ */
2738
+ type TransitionPosition = (typeof TRANSITION_POSITIONS)[number]["id"];
2739
+ type TransitionDuration = (typeof TRANSITION_DURATIONS)[number]["id"];
2740
+ type TransitionIntensity = (typeof TRANSITION_INTENSITIES)[number]["id"];
2741
+ interface TransitionTiming {
2742
+ position?: TransitionPosition;
2743
+ duration?: TransitionDuration;
2744
+ intensity?: TransitionIntensity;
2745
+ }
2746
+ declare const TRANSITIONS: ReadonlyArray<Transition>;
2747
+ declare const TRANSITION_CATEGORY_ORDER: ReadonlyArray<TransitionCategory>;
2748
+ declare const TRANSITION_CATEGORY_LABELS: Readonly<Record<TransitionCategory, string>>;
2749
+ declare function getTransition(id: string | undefined | null): Transition | undefined;
2750
+ declare function getTransitionLabel(id: string | undefined | null, fallback?: string): string;
2751
+ /**
2752
+ * The row's hint. With `values`, a row that declares `options` is written with
2753
+ * the chosen choices in its template (an absent or unknown choice reads as
2754
+ * `auto`, which IS `promptHint`); every other row ignores them.
2755
+ *
2756
+ * A catalog pack that REWROTE the row's hint owns its words: its text has no
2757
+ * token to fill, so it is returned as written and the options add nothing.
2758
+ */
2759
+ declare function getTransitionPromptHint(id: string | undefined | null, values?: TransitionOptionValues): string;
2760
+ /** The per-row options a transition declares (`[]` for most rows, an unknown
2761
+ * id and `auto`). Reads through `getTransition`, like every other getter. */
2762
+ declare function getTransitionOptions(id: string | undefined | null): ReadonlyArray<TransitionOption>;
2763
+ /** Every option field any row declares, in catalog order — what a node-data
2764
+ * reader collects into `TransitionOptionValues`. */
2765
+ declare const TRANSITION_OPTION_FIELDS: ReadonlyArray<string>;
2766
+ /**
2767
+ * Collect `TransitionOptionValues` from a node-data-shaped record: every
2768
+ * declared option field whose value is a non-empty string. Validation against
2769
+ * a row's choices happens at render (an unknown id reads as `auto`).
2770
+ */
2771
+ declare function readTransitionOptionValues(data: Readonly<Record<string, unknown>> | undefined | null): TransitionOptionValues | undefined;
2772
+ /**
2773
+ * Compact professional TERM for an id — the short phrase an editor would write
2774
+ * in a prompt ("hard cut", "invisible cut", "day-to-night time-lapse"), as
2775
+ * opposed to the paragraph-length `promptHint`.
2776
+ *
2777
+ * Same lookup and same empty-string-on-miss behavior as
2778
+ * `getTransitionPromptHint`, so the two can never disagree about which entry
2779
+ * they describe. The no-op "Auto" entry resolves to `""` in both.
2780
+ */
2781
+ declare function getTransitionTerm(id: string | undefined | null): string;
2782
+ declare const TRANSITION_IDS: ReadonlyArray<string>;
2783
+ /**
2784
+ * Whether a transition is a CUT — instantaneous by nature, so it takes no
2785
+ * duration (see `Transition.instant`). Reads through `getTransition`, so it
2786
+ * answers for the same entry every other getter describes; an unknown id, the
2787
+ * no-op "auto" and an empty value are all `false`.
2788
+ *
2789
+ * A multi-pick (`string[]`) is instant only when EVERY picked id is: a cut
2790
+ * paired with a dissolve still has a dissolve to time.
2791
+ */
2792
+ declare function isInstantTransition(id: string | ReadonlyArray<string> | undefined | null): boolean;
2793
+ /**
2794
+ * Whether a pick may become a BLENDED CUT (see `Transition.blendable`): every
2795
+ * picked id is a blendable cut. Same lookup and same empty-pick answer as
2796
+ * `isInstantTransition`, so a pick is blendable only where it is instant. Like
2797
+ * that check, it reads the ids it is given: the composer passes only the ids
2798
+ * that contribute a fragment, so a no-op "auto" beside a blendable cut does not
2799
+ * stop the blend there (`["auto", "seamless-match"]` given whole is `false`).
2800
+ */
2801
+ declare function isBlendableTransition(id: string | ReadonlyArray<string> | undefined | null): boolean;
2802
+ /**
2803
+ * The anti-blend instruction an all-instant transition pick carries — the ONE
2804
+ * place this sentence lives (see `Transition.instant`). Each row keeps its own
2805
+ * meaning in its own hint (a match cut still matches shapes, snap to black
2806
+ * still holds black for a beat); this clause only forbids the blend a video
2807
+ * model otherwise puts between the two images. Measured on prod with
2808
+ * seedance-2-5: with it, a match cut renders as a true single-frame hard cut,
2809
+ * with and without an end frame; without it, as a ~1 s dissolve.
2810
+ */
2811
+ declare const INSTANT_CUT_CLAUSE = "an abrupt single-frame hard cut, no dissolve, crossfade or superimposition; the two images never blend";
2812
+ /**
2813
+ * The transition BASE fragments for a pick — one `<term> (<hint body>)` per id
2814
+ * that resolves to a term, in pick order. When EVERY contributing id is
2815
+ * instant, the FIRST fragment's parentheses also carry `; INSTANT_CUT_CLAUSE`
2816
+ * (once per pick — two cuts picked together are still one cut). FIRST, not
2817
+ * last: the direction fold sheds fragments from the TAIL under a provider cap,
2818
+ * so the clause rides the fragment that survives longest. A mixed pick carries
2819
+ * no clause: its non-cut is meant to blend.
2820
+ *
2821
+ * The same text in both hint modes. A transition only ever reaches a VIDEO
2822
+ * prompt (the registry row is `surface: "video"`; the canvas node is in
2823
+ * `VIDEO_ONLY_PARAMETER_NODE_TYPES`), and there the bare compact term was not
2824
+ * enough to steer the model, so the mode no longer changes a transition.
2825
+ *
2826
+ * Each fragment is ONE string, parentheses included: the cap-aware assemblers
2827
+ * shed whole fragments from the tail, so a fragment is kept or dropped whole
2828
+ * and can never lose its hint or its clause on its own.
2829
+ *
2830
+ * Shared by `composeTransitionHintFromConnections` (the canvas transition node,
2831
+ * Studio's transition clauses) and the direction registry's `transition` row
2832
+ * (the server fold of `direction.transition`), so both paths word a transition
2833
+ * identically.
2834
+ *
2835
+ * `values` are the per-row option choices (`TransitionOptionValues`) — a wipe's
2836
+ * direction. The direction registry passes none, so a `direction.transition`
2837
+ * wipe reads as `auto`.
2838
+ *
2839
+ * These bases are always the HARD cut's: a pick here has no duration, so it
2840
+ * never becomes a blended cut. The blend exists only where a duration is
2841
+ * picked, in `composeTransitionHintFromConnections`.
2842
+ */
2843
+ declare function renderTransitionBases(ids: ReadonlyArray<string>, _mode?: PickerHintMode, values?: TransitionOptionValues): string[];
2844
+ /**
2845
+ * THE BLENDED CUT — what a blendable cut becomes when a duration that
2846
+ * `blendsCut` (Short) is picked on it: instead of the anti-blend
2847
+ * `INSTANT_CUT_CLAUSE`, the two shots blend into each other over that step's
2848
+ * own `term` ("about 1 second"), so the time words are the catalog's and never
2849
+ * typed here. "" for every other value (auto, instant, medium, long, an unknown
2850
+ * id, none), which leaves the cut a hard cut.
2851
+ */
2852
+ declare function blendedCutClause(duration: string | undefined): string;
2853
+ /**
2854
+ * The transition node's three timing parameters, as catalogs.
2855
+ *
2856
+ * These are graded scales, not free numbers — the same shape as
2857
+ * `exposure-settings`' aperture or `temporal`'s speed — so a consumer that can
2858
+ * only send ids (Studio, the SDK, MCP) can offer them without composing prompt
2859
+ * text of its own. `auto` is the no-op head of each scale: an empty
2860
+ * `promptHint`, so an unset parameter contributes nothing and the model is left
2861
+ * to decide, exactly as before these were enumerable.
2862
+ *
2863
+ * `POSITION_CLAUSES` / `DURATION_CLAUSES` / `INTENSITY_CLAUSES` below are
2864
+ * DERIVED from these arrays, so the clause the composer injects and the hint
2865
+ * the catalog advertises are the same string by construction and cannot drift.
2866
+ */
2867
+ interface TransitionTimingOption {
2868
+ readonly id: string;
2869
+ readonly label: string;
2870
+ readonly description: string;
2871
+ readonly promptHint: string;
2872
+ readonly term?: string;
2873
+ /** Duration rows only: `true` on a step a blendable CUT may take — picked on
2874
+ * such a pick it turns the cut into a BLENDED CUT over this row's `term`
2875
+ * (see `blendedCutClause`). Absent = a cut ignores the step and stays a
2876
+ * hard cut. Set on `short` only: the 2026-10-04 test round approved the
2877
+ * blend at about 1 second, not at Medium's 2. */
2878
+ readonly blendsCut?: boolean;
2879
+ }
2880
+ declare const TRANSITION_POSITIONS: readonly [{
2881
+ readonly id: "auto";
2882
+ readonly label: "Auto";
2883
+ readonly description: "Let the model place it";
2884
+ readonly promptHint: "";
2885
+ readonly term: "";
2886
+ }, {
2887
+ readonly id: "start";
2888
+ readonly label: "Start";
2889
+ readonly description: "At the opening of the clip";
2890
+ readonly promptHint: "the transition occurs at the opening of the clip";
2891
+ readonly term: "at the opening of the clip";
2892
+ }, {
2893
+ readonly id: "middle";
2894
+ readonly label: "Middle";
2895
+ readonly description: "In the middle of the clip";
2896
+ readonly promptHint: "the transition occurs in the middle of the clip";
2897
+ readonly term: "mid-clip";
2898
+ }, {
2899
+ readonly id: "end";
2900
+ readonly label: "End";
2901
+ readonly description: "At the end of the clip";
2902
+ readonly promptHint: "the transition occurs at the end of the clip";
2903
+ readonly term: "at the end of the clip";
2904
+ }, {
2905
+ readonly id: "full";
2906
+ readonly label: "Full";
2907
+ readonly description: "Spans the entire clip";
2908
+ readonly promptHint: "the transition spans the entire clip";
2909
+ readonly term: "across the whole clip";
2910
+ }];
2911
+ declare const TRANSITION_DURATIONS: readonly [{
2912
+ readonly id: "auto";
2913
+ readonly label: "Auto";
2914
+ readonly description: "Let the model time it";
2915
+ readonly promptHint: "";
2916
+ readonly term: "";
2917
+ }, {
2918
+ readonly id: "instant";
2919
+ readonly label: "Instant";
2920
+ readonly description: "No perceptible duration";
2921
+ readonly promptHint: "occurring instantaneously";
2922
+ readonly term: "instantaneous";
2923
+ }, {
2924
+ readonly id: "short";
2925
+ readonly label: "Short (~1s)";
2926
+ readonly description: "Approximately 1 second";
2927
+ readonly promptHint: "lasting approximately 1 second";
2928
+ readonly term: "about 1 second";
2929
+ readonly blendsCut: true;
2930
+ }, {
2931
+ readonly id: "medium";
2932
+ readonly label: "Medium (~2s)";
2933
+ readonly description: "Approximately 2 seconds";
2934
+ readonly promptHint: "lasting approximately 2 seconds";
2935
+ readonly term: "about 2 seconds";
2936
+ }, {
2937
+ readonly id: "long";
2938
+ readonly label: "Long (~3s)";
2939
+ readonly description: "Approximately 3 seconds";
2940
+ readonly promptHint: "lasting approximately 3 seconds";
2941
+ readonly term: "about 3 seconds";
2942
+ }];
2943
+ declare const TRANSITION_INTENSITIES: readonly [{
2944
+ readonly id: "auto";
2945
+ readonly label: "Auto";
2946
+ readonly description: "Let the model judge it";
2947
+ readonly promptHint: "";
2948
+ readonly term: "";
2949
+ }, {
2950
+ readonly id: "subtle";
2951
+ readonly label: "Subtle";
2952
+ readonly description: "Restrained, minimal flourish";
2953
+ readonly promptHint: "with subtle restrained energy and minimal flourish";
2954
+ readonly term: "subtly";
2955
+ }, {
2956
+ readonly id: "natural";
2957
+ readonly label: "Natural";
2958
+ readonly description: "Unhurried, unforced timing";
2959
+ readonly promptHint: "with natural timing";
2960
+ readonly term: "at a natural pace";
2961
+ }, {
2962
+ readonly id: "dynamic";
2963
+ readonly label: "Dynamic";
2964
+ readonly description: "Assertive, energetic";
2965
+ readonly promptHint: "with dynamic energy and assertive flourish";
2966
+ readonly term: "energetically";
2967
+ }, {
2968
+ readonly id: "crazy";
2969
+ readonly label: "Crazy";
2970
+ readonly description: "Extreme, wild, distorted";
2971
+ readonly promptHint: "with extreme exaggerated energy, wild flourishes, and dramatic distortion";
2972
+ readonly term: "wildly exaggerated";
2973
+ }];
2974
+ /**
2975
+ * Where the composed hint lands. `"clip"` (the default) is a whole video's
2976
+ * prompt, so a position is placed within "the clip". `"shot"` is one shot's
2977
+ * time window inside a multi-shot prompt (`0-2s — …`, `2-4s — …`): there "the
2978
+ * middle of the clip" points the model at the wrong span, so the position
2979
+ * clause says "of this shot" instead.
2980
+ */
2981
+ type TransitionHintScope = "clip" | "shot";
2982
+ interface TransitionHintOptions {
2983
+ readonly scope?: TransitionHintScope;
2984
+ /** The per-row option choices (a wipe's `wipeDirection`) — see
2985
+ * `Transition.options`. Absent, every row reads as `auto`. */
2986
+ readonly optionValues?: TransitionOptionValues;
2987
+ }
2988
+ /**
2989
+ * Compose a structural prompt-hint sentence from a transition id (or array
2990
+ * of 1-2 ids for multi-pick) plus optional start-state/end-state hints
2991
+ * (collected by walking the source node's startState / endState input
2992
+ * handle edges upstream) and optional timing fields.
2993
+ *
2994
+ * Behavior:
2995
+ * - 0 hints (no transition, empty array, or all-empty hints) → ""
2996
+ * - each pick rendered `<term> (<hint body>)` (`renderTransitionBases`),
2997
+ * n picks joined with ", and "
2998
+ * - Timing/start/end clauses apply ONCE at the outer layer, not per-id
2999
+ * - When every picked id is instant (a cut — see `isInstantTransition`) the
3000
+ * first base's parentheses carry `INSTANT_CUT_CLAUSE` once, and the
3001
+ * duration and intensity clauses are dropped; position still applies,
3002
+ * except `full` — a single-frame cut spans nothing, so it adds no clause
3003
+ * - A BLENDED CUT: when every picked id is a blendable cut
3004
+ * (`isBlendableTransition`) and the duration `blendsCut` (Short), that
3005
+ * clause is `blendedCutClause(duration)` INSTEAD of `INSTANT_CUT_CLAUSE`
3006
+ * (replaced, not appended; still once, in the first parentheses); every
3007
+ * other rule above stands as for a hard cut, so there is still no duration
3008
+ * clause, no intensity clause and no `full`. Any other duration on such a
3009
+ * pick, and any duration on any other cut, leaves the hard cut
3010
+ * - null input is treated like undefined (falsy short-circuit → returns "")
3011
+ *
3012
+ * @param _mode Accepted for the picker-hint signature; a transition composes
3013
+ * the same text in both modes — each pick as `<term> (<hint body>)`, see
3014
+ * `renderTransitionBases`.
3015
+ * @param options `scope: "shot"` when the hint is folded into one shot's time
3016
+ * window of a multi-shot prompt — the position clause then says "of this
3017
+ * shot" instead of "of the clip" (and `full`, on a non-cut, "spans this
3018
+ * entire shot"). Omitted, the wording is the clip's. `optionValues` are the
3019
+ * per-row option choices (a wipe's direction), written into the row's own
3020
+ * description; omitted, every row reads as `auto`.
3021
+ */
3022
+ declare function composeTransitionHintFromConnections(transitionId: string | ReadonlyArray<string> | undefined, startHints: ReadonlyArray<string>, endHints: ReadonlyArray<string>, timing?: TransitionTiming, _mode?: PickerHintMode, options?: TransitionHintOptions): string;
3023
+
2503
3024
  /**
2504
3025
  * Voice-character catalog: age + gender + language + accent + timbre. Feeds
2505
3026
  * Voice Design's voiceDescription field via the Sound aggregator.
@@ -2714,4 +3235,4 @@ interface CharacterMotionBindings {
2714
3235
  * unknown; this never certifies a sequence or predicts clip duration. */
2715
3236
  declare function getCharacterMotionDiagnostics(value: string | readonly string[] | null | undefined, timing?: CharacterMotionTiming, bindings?: CharacterMotionBindings): readonly CharacterMotionDiagnostic[];
2716
3237
 
2717
- export { ACTION_FX, ACTION_FX_CATEGORY_LABELS, ACTION_FX_CATEGORY_ORDER, ACTION_FX_IDS, AESTHETICS, AESTHETIC_CATEGORY_LABELS, AESTHETIC_CATEGORY_ORDER, AESTHETIC_IDS, ATMOSPHERES, ATMOSPHERE_IDS, type ActionFx, type ActionFxCategory, type Aesthetic, type AestheticCategory, type Atmosphere, BACKDROPS, BACKDROP_CATEGORY_LABELS, BACKDROP_CATEGORY_ORDER, BACKDROP_IDS, type Backdrop, type BackdropCategory, CAMERA_FORMATS, CAMERA_FORMAT_IDS, CAMERA_MOTIONS, CAMERA_MOTION_CATEGORY_LABELS, CAMERA_MOTION_CATEGORY_ORDER, CAMERA_MOTION_IDS, CHARACTER_FX, CHARACTER_FX_CATEGORY_LABELS, CHARACTER_FX_CATEGORY_ORDER, CHARACTER_FX_DURATIONS, CHARACTER_FX_IDS, CHARACTER_FX_INTENSITIES, CHARACTER_FX_POSITIONS, CHARACTER_MOTIONS, CHARACTER_MOTION_CATEGORY_LABELS, CHARACTER_MOTION_CATEGORY_ORDER, CHARACTER_MOTION_IDS, CHARACTER_MOTION_MAX_PICKS, CHARACTER_MOTION_PACES, CHARACTER_MOTION_POSITIONS, COLOR_LOOKS, COLOR_LOOK_CATEGORY_LABELS, COLOR_LOOK_CATEGORY_ORDER, COLOR_LOOK_IDS, COMPOSITION_EFFECTS, COMPOSITION_EFFECT_IDS, type CameraFormat, type CameraMotion, type CameraMotionCategory, type CategorizedInstrument, type CharacterFx, type CharacterFxCategory, type CharacterFxDuration, type CharacterFxIntensity, type CharacterFxPosition, type CharacterFxTiming, type CharacterFxTimingOption, type CharacterMotion, type CharacterMotionBindings, type CharacterMotionCategory, type CharacterMotionDiagnostic, type CharacterMotionFloor, type CharacterMotionPace, type CharacterMotionPosition, type CharacterMotionTiming, type CharacterMotionTimingOption, type ColorLook, type ColorLookCategory, type CompositionEffect, ERAS, ERA_CATEGORY_LABELS, ERA_CATEGORY_ORDER, ERA_IDS, EXPOSURE_CATEGORY_LABELS, EXPOSURE_CATEGORY_ORDER, EXPOSURE_FIELD_BY_CATEGORY, EXPOSURE_IDS, EXPOSURE_SETTINGS, type Era, type EraCategory, type ExposureCategory, type ExposureSettings, type ExposureValue, FRAMINGS, FRAMING_CATEGORY_LABELS, FRAMING_CATEGORY_ORDER, FRAMING_FIELD_BY_CATEGORY, FRAMING_IDS, type Framing, type FramingCategory, type FramingValue, HELD_PROPS, HELD_PROP_CATEGORY_LABELS, HELD_PROP_CATEGORY_ORDER, HELD_PROP_IDS, type HeldProp, type HeldPropCategory, INSTRUMENTATION_DEFAULT_DATA, INSTRUMENTS, INSTRUMENT_CATEGORY_LABELS, INSTRUMENT_CATEGORY_ORDER, type InstrumentCategory, type InstrumentationEntry, LENSES, LENS_IDS, LIGHTINGS, LIGHTING_CATEGORY_LABELS, LIGHTING_CATEGORY_ORDER, LIGHTING_FIELD_BY_CATEGORY, LIGHTING_IDS, LOOP_SUBJECTS, LOOP_SUBJECT_CATEGORY_LABELS, LOOP_SUBJECT_CATEGORY_ORDER, type Lens, type Lighting, type LightingCategory, type LightingValue, type LoopSubject, type LoopSubjectCategory, MATERIALS, MATERIAL_CATEGORY_LABELS, MATERIAL_CATEGORY_ORDER, MATERIAL_IDS, MAX_SELECTED_BY_FRAMING_CATEGORY, MAX_SELECTED_BY_STYLING_DIMENSION, MOODS, MOOD_CATEGORY_LABELS, MOOD_CATEGORY_ORDER, MOOD_IDS, MUSIC_EMOTIONS, MUSIC_ENERGIES, MUSIC_ERAS, MUSIC_GENRES, MUSIC_GENRE_CATEGORY_LABELS, MUSIC_GENRE_CATEGORY_ORDER, MUSIC_GENRE_DEFAULT_DATA, MUSIC_MOOD_DEFAULT_DATA, MUSIC_VIBES, type Material, type MaterialCategory, type Mood, type MoodCategory, type MoodValue, type MusicEra, type MusicGenre, type MusicGenreCategory, type MusicMoodData, type MusicMoodEntry, type MusicSubgenre, PHOTOGRAPHERS, PHOTOGRAPHER_CATEGORY_LABELS, PHOTOGRAPHER_CATEGORY_ORDER, PHOTOGRAPHER_IDS, PHOTO_GENRES, PHOTO_GENRE_CATEGORY_LABELS, PHOTO_GENRE_CATEGORY_ORDER, PHOTO_GENRE_IDS, POSES, POSE_CATEGORY_LABELS, POSE_CATEGORY_ORDER, POSE_IDS, POST_PROCESS_EFFECTS, POST_PROCESS_EFFECT_IDS, PRODUCTION_STYLES, type PhotoGenre, type PhotoGenreCategory, type Photographer, type PhotographerCategory, type Pose, type PoseCategory, type PoseValue, type PostProcessEffect, RENDER_QUALITIES, RENDER_QUALITY_IDS, type RenderQuality, SETTINGS, SETTING_CATEGORY_LABELS, SETTING_IDS, SINGING_STYLES, STYLES, STYLE_IDS, STYLINGS, STYLING_DIMENSION_LABELS, STYLING_DIMENSION_ORDER, STYLING_DIMENSION_SECTIONS, STYLING_FIELD_BY_DIMENSION, STYLING_IDS, type Setting, type SettingCategory, type Style, type Styling, type StylingDimension, type StylingDimensionSection, type StylingValue, TEMPORALS, TEMPORAL_CATEGORY_LABELS, TEMPORAL_CATEGORY_ORDER, TEMPORAL_FIELD_BY_CATEGORY, TEMPORAL_IDS, type Temporal, type TemporalCategory, type TemporalValue, VOCAL_PRESENCE, VOCAL_PRESENCE_INSTRUMENTAL_ID, VOICE_ACCENTS, VOICE_AGES, VOICE_ARCHETYPES, VOICE_CHARACTER_DEFAULT_DATA, VOICE_DELIVERY_DEFAULT_DATA, VOICE_EMOTIONS, VOICE_GENDERS, VOICE_LANGUAGES, VOICE_PACES, VOICE_TIMBRES, type VoiceCharacterEntry, type VoiceDeliveryEntry, WARDROBE, WARDROBE_CATEGORY_LABELS, WARDROBE_DIMENSION_ORDER, WARDROBE_FIELD_BY_DIMENSION, type WardrobeDimension, type WardrobeEntry, type WardrobeValue, buildActionFxHints, buildActionFxTerms, buildAestheticHints, buildAestheticTerms, buildAtmosphereHints, buildAtmosphereTerms, buildExposureHints, buildExposureTerms, buildFramingHints, buildFramingTerms, buildHeldPropHints, buildHeldPropTerms, buildInstrumentationHints, buildInstrumentationTerms, buildLightingHints, buildLightingTerms, buildMaterialHints, buildMaterialTerms, buildMoodHints, buildMoodTerms, buildMusicGenreHints, buildMusicGenreTerms, buildMusicMoodHints, buildMusicMoodTerms, buildPhotographerHints, buildPhotographerTerms, buildPoseHints, buildPoseTerms, buildPostProcessHints, buildPostProcessTerms, buildStylingHints, buildStylingTerms, buildTemporalHints, buildTemporalTerms, buildVoiceCharacterHints, buildVoiceCharacterTerms, buildVoiceDeliveryHints, buildVoiceDeliveryTerms, buildWardrobeHints, composeCameraMotionHintFromConnections, composeCameraMotionTermFromConnections, composeCharacterFxHintFromConnections, composeCharacterMotionHintFromConnections, getActionFx, getActionFxLabel, getActionFxPromptHint, getActionFxTerm, getAesthetic, getAestheticLabel, getAestheticPromptHint, getAestheticTerm, getAtmosphere, getAtmosphereLabel, getAtmospherePromptHint, getAtmosphereTerm, getBackdrop, getBackdropLabel, getBackdropPromptHint, getBackdropTerm, getCameraFormat, getCameraFormatLabel, getCameraFormatPromptHint, getCameraFormatTerm, getCameraMotion, getCameraMotionLabel, getCameraMotionPromptHint, getCameraMotionTerm, getCharacterFx, getCharacterFxLabel, getCharacterFxPromptHint, getCharacterFxTerm, getCharacterMotion, getCharacterMotionDiagnostics, getCharacterMotionLabel, getCharacterMotionPromptHint, getCharacterMotionTerm, getColorLook, getColorLookLabel, getColorLookPromptHint, getColorLookTerm, getCompositionEffect, getCompositionEffectLabel, getCompositionEffectPromptHint, getCompositionEffectTerm, getEra, getEraLabel, getEraPromptHint, getEraTerm, getExposure, getExposureLabel, getExposurePromptHint, getExposureTerm, getFraming, getFramingCategoryLimit, getFramingLabel, getFramingPromptHint, getFramingTerm, getHeldProp, getHeldPropLabel, getHeldPropPromptHint, getHeldPropTerm, getInstrument, getInstrumentTerm, getLens, getLensLabel, getLensPromptHint, getLensTerm, getLighting, getLightingLabel, getLightingPromptHint, getLightingTerm, getLoopSubject, getLoopSubjectLabel, getLoopSubjectPromptHint, getLoopSubjectTerm, getMaterial, getMaterialLabel, getMaterialPromptHint, getMaterialTerm, getMood, getMoodLabel, getMoodPromptHint, getMoodTerm, getMusicEmotion, getMusicEmotionTerm, getMusicEnergy, getMusicEnergyTerm, getMusicEra, getMusicEraTerm, getMusicGenre, getMusicGenreLabel, getMusicGenreTerm, getMusicSubgenre, getMusicSubgenreTerm, getMusicVibe, getMusicVibeTerm, getPhotoGenre, getPhotoGenreLabel, getPhotoGenrePromptHint, getPhotoGenreTerm, getPhotographer, getPhotographerLabel, getPhotographerPromptHint, getPhotographerTerm, getPose, getPoseLabel, getPosePromptHint, getPoseTerm, getPostProcessEffect, getPostProcessEffectLabel, getPostProcessEffectPromptHint, getPostProcessEffectTerm, getProductionStyle, getProductionStyleTerm, getRenderQuality, getRenderQualityLabel, getRenderQualityPromptHint, getRenderQualityTerm, getSetting, getSettingLabel, getSettingPromptHint, getSettingTerm, getSingingStyle, getSingingStyleTerm, getStyle, getStyleLabel, getStylePromptHint, getStyleTerm, getStyling, getStylingDimensionLimit, getStylingLabel, getStylingPromptHint, getStylingTerm, getTemporal, getTemporalLabel, getTemporalPromptHint, getTemporalTerm, getVocalPresence, getVocalPresenceTerm, getVoiceAccent, getVoiceAccentTerm, getVoiceAge, getVoiceAgeTerm, getVoiceArchetype, getVoiceArchetypeTerm, getVoiceEmotion, getVoiceEmotionTerm, getVoiceGender, getVoiceGenderTerm, getVoiceLanguage, getVoiceLanguageTerm, getVoicePace, getVoicePaceTerm, getVoiceTimbre, getVoiceTimbreTerm, getWardrobeEntriesByDimension, getWardrobeEntry, getWardrobePromptHint, isDeniedStyleId, isInstrumentalVocal, isVantageFraming };
3238
+ export { ACTION_FX, ACTION_FX_CATEGORY_LABELS, ACTION_FX_CATEGORY_ORDER, ACTION_FX_IDS, AESTHETICS, AESTHETIC_CATEGORY_LABELS, AESTHETIC_CATEGORY_ORDER, AESTHETIC_IDS, ATMOSPHERES, ATMOSPHERE_IDS, AURORA_SWEEP_STYLE, type ActionFx, type ActionFxCategory, type Aesthetic, type AestheticCategory, type Atmosphere, BACKDROPS, BACKDROP_CATEGORY_LABELS, BACKDROP_CATEGORY_ORDER, BACKDROP_IDS, type Backdrop, type BackdropCategory, CAMERA_FORMATS, CAMERA_FORMAT_IDS, CAMERA_MOTIONS, CAMERA_MOTION_CATEGORY_LABELS, CAMERA_MOTION_CATEGORY_ORDER, CAMERA_MOTION_IDS, CHARACTER_FX, CHARACTER_FX_CATEGORY_LABELS, CHARACTER_FX_CATEGORY_ORDER, CHARACTER_FX_DURATIONS, CHARACTER_FX_IDS, CHARACTER_FX_INTENSITIES, CHARACTER_FX_POSITIONS, CHARACTER_MOTIONS, CHARACTER_MOTION_CATEGORY_LABELS, CHARACTER_MOTION_CATEGORY_ORDER, CHARACTER_MOTION_IDS, CHARACTER_MOTION_MAX_PICKS, CHARACTER_MOTION_PACES, CHARACTER_MOTION_POSITIONS, COLOR_LOOKS, COLOR_LOOK_CATEGORY_LABELS, COLOR_LOOK_CATEGORY_ORDER, COLOR_LOOK_IDS, COMPOSITION_EFFECTS, COMPOSITION_EFFECT_IDS, type CameraFormat, type CameraMotion, type CameraMotionCategory, type CategorizedInstrument, type CharacterFx, type CharacterFxCategory, type CharacterFxDuration, type CharacterFxIntensity, type CharacterFxPosition, type CharacterFxTiming, type CharacterFxTimingOption, type CharacterMotion, type CharacterMotionBindings, type CharacterMotionCategory, type CharacterMotionDiagnostic, type CharacterMotionFloor, type CharacterMotionPace, type CharacterMotionPosition, type CharacterMotionTiming, type CharacterMotionTimingOption, type ColorLook, type ColorLookCategory, type CompositionEffect, DEBRIS_SHOWER_STYLE, ERAS, ERA_CATEGORY_LABELS, ERA_CATEGORY_ORDER, ERA_IDS, EXPOSURE_CATEGORY_LABELS, EXPOSURE_CATEGORY_ORDER, EXPOSURE_FIELD_BY_CATEGORY, EXPOSURE_IDS, EXPOSURE_SETTINGS, type Era, type EraCategory, type ExposureCategory, type ExposureSettings, type ExposureValue, FRAMINGS, FRAMING_CATEGORY_LABELS, FRAMING_CATEGORY_ORDER, FRAMING_FIELD_BY_CATEGORY, FRAMING_IDS, type Framing, type FramingCategory, type FramingValue, GARDEN_BLOOM_STYLE, HELD_PROPS, HELD_PROP_CATEGORY_LABELS, HELD_PROP_CATEGORY_ORDER, HELD_PROP_IDS, type HeldProp, type HeldPropCategory, INSTANT_CUT_CLAUSE, INSTRUMENTATION_DEFAULT_DATA, INSTRUMENTS, INSTRUMENT_CATEGORY_LABELS, INSTRUMENT_CATEGORY_ORDER, type InstrumentCategory, type InstrumentationEntry, LENSES, LENS_IDS, LIGHTINGS, LIGHTING_CATEGORY_LABELS, LIGHTING_CATEGORY_ORDER, LIGHTING_FIELD_BY_CATEGORY, LIGHTING_IDS, LOOP_SUBJECTS, LOOP_SUBJECT_CATEGORY_LABELS, LOOP_SUBJECT_CATEGORY_ORDER, type Lens, type Lighting, type LightingCategory, type LightingValue, type LoopSubject, type LoopSubjectCategory, MATERIALS, MATERIAL_CATEGORY_LABELS, MATERIAL_CATEGORY_ORDER, MATERIAL_IDS, MAX_SELECTED_BY_FRAMING_CATEGORY, MAX_SELECTED_BY_STYLING_DIMENSION, MOODS, MOOD_CATEGORY_LABELS, MOOD_CATEGORY_ORDER, MOOD_IDS, MUSIC_EMOTIONS, MUSIC_ENERGIES, MUSIC_ERAS, MUSIC_GENRES, MUSIC_GENRE_CATEGORY_LABELS, MUSIC_GENRE_CATEGORY_ORDER, MUSIC_GENRE_DEFAULT_DATA, MUSIC_MOOD_DEFAULT_DATA, MUSIC_VIBES, type Material, type MaterialCategory, type Mood, type MoodCategory, type MoodValue, type MusicEra, type MusicGenre, type MusicGenreCategory, type MusicMoodData, type MusicMoodEntry, type MusicSubgenre, PHOTOGRAPHERS, PHOTOGRAPHER_CATEGORY_LABELS, PHOTOGRAPHER_CATEGORY_ORDER, PHOTOGRAPHER_IDS, PHOTO_GENRES, PHOTO_GENRE_CATEGORY_LABELS, PHOTO_GENRE_CATEGORY_ORDER, PHOTO_GENRE_IDS, POSES, POSE_CATEGORY_LABELS, POSE_CATEGORY_ORDER, POSE_IDS, POST_PROCESS_EFFECTS, POST_PROCESS_EFFECT_IDS, PRODUCTION_STYLES, type PhotoGenre, type PhotoGenreCategory, type Photographer, type PhotographerCategory, type Pose, type PoseCategory, type PoseValue, type PostProcessEffect, RENDER_QUALITIES, RENDER_QUALITY_IDS, type RenderQuality, SAKURA_PETALS_STYLE, SAND_STORM_STYLE, SETTINGS, SETTING_CATEGORY_LABELS, SETTING_IDS, SINGING_STYLES, SMOKE_PUFF_STYLE, STYLES, STYLE_IDS, STYLE_MEDIA, STYLE_MEDIUMS, STYLINGS, STYLING_DIMENSION_LABELS, STYLING_DIMENSION_ORDER, STYLING_DIMENSION_SECTIONS, STYLING_FIELD_BY_DIMENSION, STYLING_IDS, type Setting, type SettingCategory, type Style, type StyleMedia, type StyleMedium, type StyleTones, type Styling, type StylingDimension, type StylingDimensionSection, type StylingValue, TEMPORALS, TEMPORAL_CATEGORY_LABELS, TEMPORAL_CATEGORY_ORDER, TEMPORAL_FIELD_BY_CATEGORY, TEMPORAL_IDS, TRANSITIONS, TRANSITION_CATEGORY_LABELS, TRANSITION_CATEGORY_ORDER, TRANSITION_DURATIONS, TRANSITION_IDS, TRANSITION_INTENSITIES, TRANSITION_OPTION_FIELDS, TRANSITION_POSITIONS, TRANSITION_STYLE_FIELD, type Temporal, type TemporalCategory, type TemporalValue, type Transition, type TransitionCategory, type TransitionDuration, type TransitionHintOptions, type TransitionHintScope, type TransitionIntensity, type TransitionOption, type TransitionOptionChoice, type TransitionOptionValues, type TransitionPosition, type TransitionTiming, type TransitionTimingOption, VOCAL_PRESENCE, VOCAL_PRESENCE_INSTRUMENTAL_ID, VOICE_ACCENTS, VOICE_AGES, VOICE_ARCHETYPES, VOICE_CHARACTER_DEFAULT_DATA, VOICE_DELIVERY_DEFAULT_DATA, VOICE_EMOTIONS, VOICE_GENDERS, VOICE_LANGUAGES, VOICE_PACES, VOICE_TIMBRES, type VoiceCharacterEntry, type VoiceDeliveryEntry, WARDROBE, WARDROBE_CATEGORY_LABELS, WARDROBE_DIMENSION_ORDER, WARDROBE_FIELD_BY_DIMENSION, WHITE_FLASH_STYLE, WIPE_DIRECTION, type WardrobeDimension, type WardrobeEntry, type WardrobeValue, blendedCutClause, buildActionFxHints, buildActionFxTerms, buildAestheticHints, buildAestheticTerms, buildAtmosphereHints, buildAtmosphereTerms, buildExposureHints, buildExposureTerms, buildFramingHints, buildFramingTerms, buildHeldPropHints, buildHeldPropTerms, buildInstrumentationHints, buildInstrumentationTerms, buildLightingHints, buildLightingTerms, buildMaterialHints, buildMaterialTerms, buildMoodHints, buildMoodTerms, buildMusicGenreHints, buildMusicGenreTerms, buildMusicMoodHints, buildMusicMoodTerms, buildPhotographerHints, buildPhotographerTerms, buildPoseHints, buildPoseTerms, buildPostProcessHints, buildPostProcessTerms, buildStylingHints, buildStylingTerms, buildTemporalHints, buildTemporalTerms, buildVoiceCharacterHints, buildVoiceCharacterTerms, buildVoiceDeliveryHints, buildVoiceDeliveryTerms, buildWardrobeHints, composeCameraMotionHintFromConnections, composeCameraMotionTermFromConnections, composeCharacterFxHintFromConnections, composeCharacterMotionHintFromConnections, composeTransitionHintFromConnections, getActionFx, getActionFxLabel, getActionFxPromptHint, getActionFxTerm, getAesthetic, getAestheticLabel, getAestheticPromptHint, getAestheticTerm, getAtmosphere, getAtmosphereLabel, getAtmospherePromptHint, getAtmosphereTerm, getBackdrop, getBackdropLabel, getBackdropPromptHint, getBackdropTerm, getCameraFormat, getCameraFormatLabel, getCameraFormatPromptHint, getCameraFormatTerm, getCameraMotion, getCameraMotionLabel, getCameraMotionPromptHint, getCameraMotionTerm, getCharacterFx, getCharacterFxLabel, getCharacterFxPromptHint, getCharacterFxTerm, getCharacterMotion, getCharacterMotionDiagnostics, getCharacterMotionLabel, getCharacterMotionPromptHint, getCharacterMotionTerm, getColorLook, getColorLookLabel, getColorLookPromptHint, getColorLookTerm, getCompositionEffect, getCompositionEffectLabel, getCompositionEffectPromptHint, getCompositionEffectTerm, getEra, getEraLabel, getEraPromptHint, getEraTerm, getExposure, getExposureLabel, getExposurePromptHint, getExposureTerm, getFraming, getFramingCategoryLimit, getFramingLabel, getFramingPromptHint, getFramingTerm, getHeldProp, getHeldPropLabel, getHeldPropPromptHint, getHeldPropTerm, getInstrument, getInstrumentTerm, getLens, getLensLabel, getLensPromptHint, getLensTerm, getLighting, getLightingLabel, getLightingPromptHint, getLightingTerm, getLoopSubject, getLoopSubjectLabel, getLoopSubjectPromptHint, getLoopSubjectTerm, getMaterial, getMaterialLabel, getMaterialPromptHint, getMaterialTerm, getMood, getMoodLabel, getMoodPromptHint, getMoodTerm, getMusicEmotion, getMusicEmotionTerm, getMusicEnergy, getMusicEnergyTerm, getMusicEra, getMusicEraTerm, getMusicGenre, getMusicGenreLabel, getMusicGenreTerm, getMusicSubgenre, getMusicSubgenreTerm, getMusicVibe, getMusicVibeTerm, getPhotoGenre, getPhotoGenreLabel, getPhotoGenrePromptHint, getPhotoGenreTerm, getPhotographer, getPhotographerLabel, getPhotographerPromptHint, getPhotographerTerm, getPose, getPoseLabel, getPosePromptHint, getPoseTerm, getPostProcessEffect, getPostProcessEffectLabel, getPostProcessEffectPromptHint, getPostProcessEffectTerm, getProductionStyle, getProductionStyleTerm, getRenderQuality, getRenderQualityLabel, getRenderQualityPromptHint, getRenderQualityTerm, getSetting, getSettingLabel, getSettingPromptHint, getSettingTerm, getSingingStyle, getSingingStyleTerm, getStyle, getStyleLabel, getStyleMedium, getStylePromptHint, getStyleTerm, getStyleTones, getStyleVideoPromptHint, getStyling, getStylingDimensionLimit, getStylingLabel, getStylingPromptHint, getStylingTerm, getTemporal, getTemporalLabel, getTemporalPromptHint, getTemporalTerm, getTransition, getTransitionLabel, getTransitionOptions, getTransitionPromptHint, getTransitionTerm, getVocalPresence, getVocalPresenceTerm, getVoiceAccent, getVoiceAccentTerm, getVoiceAge, getVoiceAgeTerm, getVoiceArchetype, getVoiceArchetypeTerm, getVoiceEmotion, getVoiceEmotionTerm, getVoiceGender, getVoiceGenderTerm, getVoiceLanguage, getVoiceLanguageTerm, getVoicePace, getVoicePaceTerm, getVoiceTimbre, getVoiceTimbreTerm, getWardrobeEntriesByDimension, getWardrobeEntry, getWardrobePromptHint, isBlendableTransition, isDeniedStyleId, isInstantTransition, isInstrumentalVocal, isVantageFraming, readTransitionOptionValues, renderTransitionBases, styleOffersMedia, styleOffersRestyle, stylesForMedia, stylesForRestyle };