@nodaro/shared 3.10.0 → 3.12.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 (72) hide show
  1. package/dist/index.cjs +2242 -86
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +1779 -32
  4. package/dist/index.d.ts +1779 -32
  5. package/dist/index.js +2041 -87
  6. package/dist/index.js.map +1 -1
  7. package/package.json +1 -1
  8. package/src/__tests__/caption-styles.test.ts +207 -0
  9. package/src/__tests__/edl-multicam.test.ts +304 -0
  10. package/src/__tests__/edl.test.ts +822 -0
  11. package/src/__tests__/fan-out-rows.test.ts +208 -0
  12. package/src/__tests__/instagram-scrape.test.ts +66 -0
  13. package/src/__tests__/llm-models.test.ts +48 -11
  14. package/src/__tests__/meta-ads-scrape.test.ts +284 -0
  15. package/src/__tests__/node-runtime-keys.test.ts +15 -0
  16. package/src/__tests__/parameter-node-value.test.ts +13 -1
  17. package/src/__tests__/presentation-utils.test.ts +67 -0
  18. package/src/__tests__/producer-types.test.ts +19 -0
  19. package/src/__tests__/schedule-rules.test.ts +265 -0
  20. package/src/__tests__/speaker-layouts.test.ts +203 -0
  21. package/src/__tests__/transcribe-capabilities.test.ts +104 -0
  22. package/src/__tests__/transcribe-preflight.test.ts +60 -0
  23. package/src/__tests__/trigger-feeds.test.ts +39 -0
  24. package/src/__tests__/video-analysis.test.ts +15 -0
  25. package/src/__tests__/video-duration-auto.test.ts +65 -0
  26. package/src/__tests__/video-duration.test.ts +56 -0
  27. package/src/__tests__/video-frame-fit.test.ts +189 -0
  28. package/src/__tests__/video-link.test.ts +137 -0
  29. package/src/__tests__/workflow-export-strip.test.ts +59 -1
  30. package/src/caption-styles.ts +240 -0
  31. package/src/catalog-projection.ts +3 -0
  32. package/src/character-motion-metadata.ts +19 -0
  33. package/src/credit-identifiers.ts +31 -0
  34. package/src/edit-plan-contract.ts +96 -0
  35. package/src/edl-multicam.ts +185 -0
  36. package/src/edl.ts +747 -0
  37. package/src/entity-image-handle.ts +24 -1
  38. package/src/fan-out-rows.ts +213 -0
  39. package/src/i18n/character-motion.ar.ts +126 -75
  40. package/src/i18n/character-motion.de.ts +126 -75
  41. package/src/i18n/character-motion.es.ts +126 -75
  42. package/src/i18n/character-motion.fr.ts +126 -75
  43. package/src/i18n/character-motion.he.ts +126 -75
  44. package/src/i18n/character-motion.hi.ts +126 -75
  45. package/src/i18n/character-motion.ja.ts +126 -75
  46. package/src/i18n/character-motion.ko.ts +126 -75
  47. package/src/i18n/character-motion.pt-BR.ts +126 -75
  48. package/src/i18n/character-motion.ru.ts +126 -75
  49. package/src/i18n/character-motion.zh-CN.ts +126 -75
  50. package/src/index.ts +211 -3
  51. package/src/instagram-scrape.ts +204 -0
  52. package/src/llm-models.ts +80 -3
  53. package/src/meta-ads-scrape.ts +463 -0
  54. package/src/model-catalog.ts +48 -5
  55. package/src/model-constants.ts +148 -5
  56. package/src/node-mappable-fields.ts +2 -0
  57. package/src/node-runtime-keys.ts +28 -0
  58. package/src/parameter-node-value.ts +31 -5
  59. package/src/presentation-utils.ts +49 -0
  60. package/src/producer-types.ts +20 -0
  61. package/src/schedule-rules.ts +484 -0
  62. package/src/speaker-layouts.ts +220 -0
  63. package/src/transcribe-preflight.ts +101 -0
  64. package/src/trigger-feeds.ts +59 -0
  65. package/src/trigger-node-types.ts +20 -0
  66. package/src/video-analysis.ts +15 -0
  67. package/src/video-duration-auto.ts +18 -0
  68. package/src/video-duration.ts +32 -0
  69. package/src/video-frame-fit.ts +228 -0
  70. package/src/video-link.ts +167 -0
  71. package/src/video-output-canvas.ts +119 -0
  72. package/src/workflow-export.ts +37 -1
package/dist/index.d.ts CHANGED
@@ -954,6 +954,38 @@ declare const VIDEO_GEN_COLLAPSED_T2V_IDS: ReadonlySet<string>;
954
954
  /** Video-to-video providers */
955
955
  declare const VIDEO_TO_VIDEO_PROVIDERS: readonly ["wan", "wan-flash", "wan-videoedit", "luma-modify", "runway-aleph", "happyhorse-edit"];
956
956
  type VideoToVideoProvider = typeof VIDEO_TO_VIDEO_PROVIDERS[number];
957
+ /**
958
+ * Seedance models the Video to Video NODE offers as a whole-clip, prompt-driven
959
+ * EDIT ("make it black and white", "she wears @image_1").
960
+ *
961
+ * These are deliberately NOT members of {@link VIDEO_TO_VIDEO_PROVIDERS} (the
962
+ * `/v1/video-to-video` route's own enum): Seedance has no separate edit
963
+ * endpoint — it edits a REFERENCE video when the prompt reads as an edit. So
964
+ * every surface (single-node run, DAG payload builder, MCP `modify_video`)
965
+ * dispatches these through the ONE existing Seedance reference-video lane
966
+ * (`text-to-video`), with the source clip as `@video_1` and the edit shape
967
+ * below. Reference-clip bounds, the unit×(input+output) reservation, the
968
+ * measured settlement, the edit-mode retry and the reconcile recovery are that
969
+ * lane's — there is no second copy to keep in step.
970
+ */
971
+ declare const SEEDANCE_VIDEO_EDIT_PROVIDERS: readonly ["seedance-2-5"];
972
+ type SeedanceVideoEditProvider = typeof SEEDANCE_VIDEO_EDIT_PROVIDERS[number];
973
+ declare function isSeedanceVideoEditProvider(provider: string | undefined): provider is SeedanceVideoEditProvider;
974
+ /** Every model the Video to Video node can be set to: the route's own providers
975
+ * plus the Seedance edit models dispatched through the text-to-video lane. */
976
+ declare const VIDEO_TO_VIDEO_NODE_PROVIDERS: readonly ["wan", "wan-flash", "wan-videoedit", "luma-modify", "runway-aleph", "happyhorse-edit", "seedance-2-5"];
977
+ type VideoToVideoNodeProvider = typeof VIDEO_TO_VIDEO_NODE_PROVIDERS[number];
978
+ /**
979
+ * The request shape Seedance edit mode requires, sent UP FRONT by the Video to
980
+ * Video node: the output takes the source clip's own ratio and length
981
+ * (`adaptive`, and Auto = `VIDEO_DURATION_AUTO`). Camel-cased twin of the KIE
982
+ * wire pair the provider layer resubmits with when Seedance reclassifies an
983
+ * ordinary run as an edit.
984
+ */
985
+ declare const SEEDANCE_VIDEO_EDIT_SHAPE: {
986
+ readonly aspectRatio: "adaptive";
987
+ readonly duration: -1;
988
+ };
957
989
  /** Face swap providers */
958
990
  declare const FACE_SWAP_PROVIDERS: readonly ["roop"];
959
991
  type FaceSwapProvider = typeof FACE_SWAP_PROVIDERS[number];
@@ -997,9 +1029,70 @@ type TextToAudioProvider = typeof TEXT_TO_AUDIO_PROVIDERS[number];
997
1029
  /** Music generation providers */
998
1030
  declare const MUSIC_PROVIDERS: readonly ["minimax"];
999
1031
  type MusicProvider = typeof MUSIC_PROVIDERS[number];
1000
- /** Transcription providers */
1001
- declare const TRANSCRIBE_PROVIDERS: readonly ["elevenlabs-stt"];
1032
+ /**
1033
+ * Transcription providers a caller may name — on `/v1/transcribe`, the SDK/CLI
1034
+ * and the canvas Transcribe node. All three lanes are served on cloud again
1035
+ * (the canvas picker re-offered the two Replicate lanes in #768 while this enum
1036
+ * still hid them, so a single-node Run on Whisper 400'd where the same node in a
1037
+ * workflow Run worked). `elevenlabs-stt` stays FIRST: several call sites take
1038
+ * "the first enabled word-capable provider" from this order.
1039
+ */
1040
+ declare const TRANSCRIBE_PROVIDERS: readonly ["elevenlabs-stt", "whisper", "incredibly-fast-whisper"];
1002
1041
  type TranscribeProvider = typeof TRANSCRIBE_PROVIDERS[number];
1042
+ /**
1043
+ * Every transcription LANE the platform implements. Today this is the same set
1044
+ * as `TRANSCRIBE_PROVIDERS`; it stays a separate name because the two answer
1045
+ * different questions — "what may a caller name" vs "what can run" — and they
1046
+ * have diverged before (the Replicate lanes were hidden from callers for months
1047
+ * while still reached at runtime via the route default and add-captions'
1048
+ * auto-transcribe). Capability questions must be asked over THIS union.
1049
+ */
1050
+ declare const TRANSCRIBE_LANES: readonly ["whisper", "incredibly-fast-whisper", "elevenlabs-stt"];
1051
+ type TranscribeLane = typeof TRANSCRIBE_LANES[number];
1052
+ /**
1053
+ * What each transcription lane can actually DO. Single source of truth — never
1054
+ * re-derive a capability from a provider-name check.
1055
+ *
1056
+ * `wordTimestamps`: does the lane return per-word start/end times?
1057
+ * - `whisper` (Replicate `openai/whisper`) — NO. Its input schema has no
1058
+ * `word_timestamps` field in ANY published version, so Replicate silently
1059
+ * drops the key and the segments come back without `words`. Asking this lane
1060
+ * for word timings yields an empty array, never an error.
1061
+ * - `incredibly-fast-whisper` — yes, via `timestamp: "word"`.
1062
+ * - `elevenlabs-stt` (direct Scribe) — always word-level, flag or not.
1063
+ */
1064
+ declare const TRANSCRIBE_PROVIDER_CAPABILITIES: Record<TranscribeLane, {
1065
+ wordTimestamps: boolean;
1066
+ }>;
1067
+ /** The lanes that can honour a word-timestamps request, in declaration order. */
1068
+ declare function transcribeProvidersWithWordTimestamps(): TranscribeLane[];
1069
+ /**
1070
+ * Capability question for a lane id that came from UNTRUSTED data — node data,
1071
+ * an imported workflow, a wire body — where the string may be anything at all.
1072
+ * An unknown lane answers `false`: we cannot promise word timings from a lane
1073
+ * we know nothing about, and "false" is always the safe answer (it suppresses
1074
+ * an INFERRED request, and turns an EXPLICIT one into the honest refusal in
1075
+ * `transcribe()` instead of a `Cannot read properties of undefined` TypeError).
1076
+ */
1077
+ declare function transcribeLaneSupportsWordTimestamps(lane: string | null | undefined): boolean;
1078
+ /**
1079
+ * The lane an absent `provider` resolves to — the historical `/v1/transcribe`
1080
+ * default, kept as-is because the credit guard reserves on the provider id
1081
+ * (changing it would silently change what bills).
1082
+ */
1083
+ declare const DEFAULT_TRANSCRIBE_PROVIDER: TranscribeLane;
1084
+ /**
1085
+ * The lane a transcribe NODE with no `provider` in its data resolves to —
1086
+ * deliberately NOT `DEFAULT_TRANSCRIBE_PROVIDER`. The route's default is the
1087
+ * legacy whisper lane and exists only so a pre-existing REST caller keeps
1088
+ * billing the same id; a node authored/imported without a provider is a fresh
1089
+ * request, and the canvas picker's own default is this one. Single-sourced so
1090
+ * the backend DAG (`payload-builder.ts`) and the frontend run
1091
+ * (`execute-node.ts`) cannot drift into sending different engines for the same
1092
+ * node — they did, and the frontend's silent whisper fallback started 400ing
1093
+ * once the Replicate lanes left `TRANSCRIBE_PROVIDERS`.
1094
+ */
1095
+ declare const DEFAULT_TRANSCRIBE_NODE_PROVIDER: TranscribeLane;
1003
1096
  /** Script generation providers */
1004
1097
  declare const SCRIPT_PROVIDERS: readonly ["gemini", "claude", "gpt"];
1005
1098
  type ScriptProvider = typeof SCRIPT_PROVIDERS[number];
@@ -1664,6 +1757,11 @@ declare const PRICING_DEFAULT_DURATION_SEC: Record<string, number>;
1664
1757
  * closes.
1665
1758
  */
1666
1759
  declare function pricedOutputDurationSec(provider: string, requested: number | string | undefined): number;
1760
+ /** Models that accept `VIDEO_DURATION_AUTO` — a catalog capability (docs.kie.ai:
1761
+ * the Seedance 2 family, "4-15 seconds or -1" / 2.5 "Special values -1"). */
1762
+ declare function supportsAutoVideoDuration(provider: string | undefined): boolean;
1763
+ /** The longest clip a duration-tiered provider can render (its top priced tier). */
1764
+ declare function maxVideoDurationSec(provider: string): number | undefined;
1667
1765
  /**
1668
1766
  * Resolution assumed for PRICING when a request names a provider but omits
1669
1767
  * `resolution` — the resolution twin of {@link PRICING_DEFAULT_DURATION_SEC},
@@ -2168,6 +2266,14 @@ interface ModelCatalogEntry {
2168
2266
  unlistedResolutionRendersAs?: string;
2169
2267
  qualities?: readonly string[];
2170
2268
  durations?: readonly number[];
2269
+ /**
2270
+ * The model accepts an AUTO duration (`duration: -1`, see
2271
+ * `VIDEO_DURATION_AUTO`): it picks the clip length itself — the source clip's
2272
+ * length on a video edit, a length within `durations` otherwise. A capability,
2273
+ * not a member of `durations` (which stay real seconds). Runs are reserved at
2274
+ * the longest clip and settled on the delivered one.
2275
+ */
2276
+ autoDuration?: boolean;
2171
2277
  pricing: readonly PriceVariant[];
2172
2278
  /** Editorial highlight — "best in tier". Surfaces in MCP output as a ⭐. */
2173
2279
  featured?: boolean;
@@ -2561,6 +2667,24 @@ declare function resolveImageGenCreditIdentifier(opts: {
2561
2667
  swapToI2i?: boolean;
2562
2668
  }): string;
2563
2669
  declare function buildVideoCreditModelIdentifier(provider: string, duration?: number | string, sound?: boolean, nodeType?: "image-to-video" | "text-to-video", mode?: string, resolution?: string, hasVideoRef?: boolean): string;
2670
+ /**
2671
+ * The credit identifier a Video to Video node's Seedance EDIT lane reserves
2672
+ * under. Seedance has no v2v endpoint — the lane is a text-to-video job in edit
2673
+ * shape with the source clip as reference video 1 — so it prices on the
2674
+ * REFERENCE-VIDEO ladder at the model's LONGEST clip (Auto duration), and the
2675
+ * measured settlement refunds down to what was actually delivered.
2676
+ *
2677
+ * It exists because that is a 7-positional-argument call with four
2678
+ * easy-to-transpose slots, and FOUR surfaces must agree on it exactly: the
2679
+ * orchestrator's reservation (payload-builder.ts), the backend pre-run
2680
+ * estimator (ee/billing/credits.ts), the node's cost pill, and the frontend
2681
+ * run-level estimate (config-panels/helpers.ts). A quote that disagrees with
2682
+ * the reserve is the documented `price_not_configured` / blank-pill trap.
2683
+ *
2684
+ * `resolution` is the node's one `v2vResolution` field; when unset the model's
2685
+ * own UI fill is priced, which is what the lane will send.
2686
+ */
2687
+ declare function seedanceVideoEditCreditId(provider: string, resolution?: string): string;
2564
2688
  /** What the video credit identifier PRICES for a request, for the levers whose
2565
2689
  * priced value must also be the value we SEND. */
2566
2690
  interface PricedVideoSelection {
@@ -2780,6 +2904,18 @@ declare function imageOverlayCredits(variants: ReadonlyArray<unknown> | undefine
2780
2904
  * Lives in `@nodaro/shared` so frontend (store walks) and backend
2781
2905
  * (orchestrator input-resolver) can use one source of truth. */
2782
2906
  declare function extractVideoDurationFromNode(data: Record<string, unknown> | undefined): number | undefined;
2907
+ /** Duration (seconds) of an edit-plan SOURCE node's media, for the reserve
2908
+ * bucket. Extends {@link extractVideoDurationFromNode} with the AUDIO lane:
2909
+ * `upload-audio` (and URL-imported audio) write their length to
2910
+ * `metadata.durationSeconds` ONLY — never `generatedResults[].duration` /
2911
+ * `data.duration` — so a podcast's audio master would otherwise resolve to
2912
+ * undefined and reserve the 180-minute ceiling (a ~6× overbill). A
2913
+ * `reference-audio` node records its extracted file's length in the same field,
2914
+ * stamped with `metadata.mediaUrl` (see the binding check below).
2915
+ *
2916
+ * Deliberately a NEW function, not a change to `extractVideoDurationFromNode`,
2917
+ * so no other node's duration read shifts — this fallback is edit-plan-scoped. */
2918
+ declare function editPlanSourceDurationSec(data: Record<string, unknown> | undefined): number | undefined;
2783
2919
 
2784
2920
  /**
2785
2921
  * Topaz image upscale — the single authority for "which lever did the user
@@ -2945,6 +3081,24 @@ interface InputFieldSchema {
2945
3081
  }
2946
3082
  /** Get the overridable field schema for an input node type. */
2947
3083
  declare function getInputFieldSchema(nodeType: string): InputFieldSchema | undefined;
3084
+ /**
3085
+ * Shallow-merge run-time input overrides (a published app's inputs, an API-token
3086
+ * run, MCP `run_app` / `run_workflow` inputs, a wired component handle) over a
3087
+ * node's SAVED data — the one merge every such lane must use.
3088
+ *
3089
+ * `metadata` holds facts measured FROM the node's media (its length, its
3090
+ * dimensions). When an override swaps that media — the node's primary input
3091
+ * field is a media url (`INPUT_FIELD_MAP`) and the override changes it — the
3092
+ * snapshot's facts describe a file that is no longer there, so they are dropped
3093
+ * unless the override supplies its own. Left behind, a publisher's
3094
+ * `metadata.durationSeconds` outranks the run's own transcript as Edit Plan's
3095
+ * duration basis and under-buckets a caller's longer episode: an estimate that
3096
+ * passes the balance precheck for a run the reserve then refuses.
3097
+ *
3098
+ * Schema-driven on purpose: a new media input node is covered by its
3099
+ * `INPUT_FIELD_MAP` row, with no list to remember here.
3100
+ */
3101
+ declare function mergeNodeInputOverrides(nodeType: string | undefined, data: Record<string, unknown>, overrides: Record<string, unknown>): Record<string, unknown>;
2948
3102
  /** Migrate a legacy string[] order to PresentationItem[]. */
2949
3103
  declare function migrateToItems(order: string[] | undefined): PresentationItem[] | undefined;
2950
3104
  /** Strip nested groups — groups may only contain non-group items. */
@@ -3146,13 +3300,34 @@ interface LlmModelDef {
3146
3300
  *
3147
3301
  * Consumers MUST give such a model output headroom regardless of the
3148
3302
  * requested effort, or reasoning silently eats a small legacy cap and the
3149
- * answer truncates with `stop_reason: max_tokens` — a paid-for empty reply,
3150
- * not an error. `deriveParams` (llm-client.ts) and the film-pipeline's
3151
- * `callLLM` both floor on this flag; keep it in sync with the vendor's
3303
+ * answer truncates with `stop_reason: max_tokens` — a paid-for empty reply
3304
+ * (since #1588 the client fails such a call rather than return the
3305
+ * fragment, but the floor is what keeps it from happening). `deriveParams`
3306
+ * (llm-client.ts) floors to {@link reasoningOutputFloor}; the film
3307
+ * pipeline's `callLLM` — Anthropic SDK only, so only its Claude members
3308
+ * matter — floors at the default. Keep the flag in sync with the vendor's
3152
3309
  * documented default rather than inferring it from the model name.
3153
3310
  */
3154
3311
  thinkingDefaultOn?: true;
3312
+ /**
3313
+ * The output-token cap a REASONING call on this model is floored to — the
3314
+ * room its thinking shares with the answer (`thinkingDefaultOn`, or an
3315
+ * xhigh/max effort). Absent = {@link REASONING_OUTPUT_FLOOR}; read it through
3316
+ * {@link reasoningOutputFloor}, never directly.
3317
+ *
3318
+ * Declare it ONLY where a lane serving this model is not known to accept the
3319
+ * default: the floor rides every lane the model can be served on (KIE AND its
3320
+ * direct fallback), so it has to sit at the intersection of what they take —
3321
+ * the rule `maxOutputTokens` already follows for the Gemini flash entries.
3322
+ * Never below `maxOutputTokens` (a floor under the default cap is not a
3323
+ * floor — guarded by a registry test).
3324
+ */
3325
+ reasoningOutputFloor?: number;
3155
3326
  }
3327
+ /** The reasoning floor for a model that declares no lane limit of its own. */
3328
+ declare const REASONING_OUTPUT_FLOOR = 32768;
3329
+ /** The output cap a reasoning call on `model` is floored to (see `LlmModelDef.reasoningOutputFloor`). */
3330
+ declare function reasoningOutputFloor(model: LlmModelDef): number;
3156
3331
  declare const LLM_MODELS: readonly LlmModelDef[];
3157
3332
  declare const LLM_MODEL_IDS: string[];
3158
3333
  /** Vision models that can return GUARANTEED structured output — the
@@ -3190,7 +3365,7 @@ declare function groupLlmModelsByVendor(models?: readonly LlmModelDef[]): LlmMod
3190
3365
  * group headers (e.g. the compact node quick strips) but should still read
3191
3366
  * vendor-clustered and tier-ordered. */
3192
3367
  declare function orderedLlmModels(models?: readonly LlmModelDef[]): LlmModelDef[];
3193
- type LlmFeature = "ai-writer" | "llm-chat" | "prompt-helper" | "scene-graph-ai" | "after-effects" | "motion-graphics" | "motion-graphics-lottie" | "lottie-overlay" | "3d-title" | "3d-scene" | "image-to-text" | "describe-to-picker" | "qa-check" | "generate-script" | "translate" | "image-critic" | "pick-best-llm" | "workflow-copilot";
3368
+ type LlmFeature = "ai-writer" | "llm-chat" | "prompt-helper" | "scene-graph-ai" | "after-effects" | "motion-graphics" | "motion-graphics-lottie" | "lottie-overlay" | "3d-title" | "3d-scene" | "image-to-text" | "meta-ads-analysis" | "describe-to-picker" | "qa-check" | "generate-script" | "translate" | "image-critic" | "pick-best-llm" | "workflow-copilot";
3194
3369
  /** Engine-dependent LlmFeature for the motion-graphics node (design §8: every credit-id site must branch on engine). */
3195
3370
  declare function motionGraphicsFeature(engine?: string): LlmFeature;
3196
3371
  /** Feature → default model when user hasn't selected one */
@@ -3804,6 +3979,113 @@ declare function getEffectiveRepeatCount(nodeData: Record<string, unknown>): num
3804
3979
  */
3805
3980
  declare function expandItemsWithRepeat(listItems: string[] | undefined, nodeType: string, nodeData: Record<string, unknown>): string[] | null;
3806
3981
 
3982
+ /**
3983
+ * The text LANES the input resolvers route somewhere OTHER than the prompt slot
3984
+ * (`negative` → negativePrompt, `system-prompt` → systemPrompt, an avatar's
3985
+ * `script`, an editor's `transcript`, …). A list that drives a fan-out through
3986
+ * one of these must NOT also be written into the prompt: the per-row resolution
3987
+ * already delivered it where it belongs.
3988
+ *
3989
+ * Keyed by handle, scoped by node type, because the routers are: `transcript`
3990
+ * is the caption track of Add Captions but the very text Forced Alignment
3991
+ * aligns. `"*"` = every node type (the router branch is unconditional).
3992
+ *
3993
+ * DERIVED, not remembered: each engine has a totality test
3994
+ * (`fanout-text-handle-totality`) that routes a text source into EVERY input
3995
+ * handle of EVERY node type through the real resolver and fails the build on any
3996
+ * pair where this table and the router disagree — in either direction. An
3997
+ * unlisted lane keeps the old behavior (the item is the prompt), so a miss can
3998
+ * only ever reproduce the old bug on that one lane, never a new one.
3999
+ */
4000
+ declare const NON_PROMPT_TEXT_LANES: Readonly<Record<string, "*" | readonly string[]>>;
4001
+ /** Does a TEXT list wired to `targetHandle` of a `nodeType` node feed its prompt slot? */
4002
+ declare function fanOutTextFeedsPrompt(nodeType: string | null | undefined, targetHandle: string | null | undefined): boolean;
4003
+ /**
4004
+ * Drop the empty entries of a row-aligned list, remembering the row every kept
4005
+ * value came from. The items are what drives a fan-out (nothing runs for an
4006
+ * empty cell); the rows are what keeps the OTHER wires on the same row.
4007
+ */
4008
+ declare function compactWithRows(aligned: readonly string[]): {
4009
+ items: string[];
4010
+ rowIndices: number[];
4011
+ };
4012
+ /**
4013
+ * One column of a manual List table, row-aligned: a row is dropped only when
4014
+ * EVERY cell of it is blank (the trailing empty row the editor keeps), and an
4015
+ * empty cell of a row that has content stays in place as "".
4016
+ */
4017
+ declare function liveRowColumn(rows: ReadonlyArray<ReadonlyArray<string | undefined>>, colIndex: number): string[];
4018
+ /** One list wire that could drive a fan-out. */
4019
+ interface FanOutCandidate {
4020
+ /** Target handle of the consumer-side wire. */
4021
+ targetHandle: string | null | undefined;
4022
+ /** The wire's values in row order — may hold "" for an empty row. */
4023
+ aligned: readonly string[];
4024
+ }
4025
+ /**
4026
+ * Turn the lists that reach a node into ONE fan-out, so that nothing depends on
4027
+ * the order the wires were drawn in. `candidates` are the "each" lists that hold
4028
+ * more than one value, in wire order.
4029
+ *
4030
+ * The PRIMARY is the list that holds the most values (the first of them when
4031
+ * several tie): it sets the row space. Both engines get it from here, so the
4032
+ * orchestrator and the in-browser executor cannot disagree on how many times a
4033
+ * node runs. Lists with the SAME number of rows share that row space — two
4034
+ * columns of one table, two Extract Field lists cut from one array — and are
4035
+ * settled together:
4036
+ *
4037
+ * - the DRIVER (its item becomes the per-row override) is a text list that
4038
+ * feeds the prompt, when there is one: that item is what must win over the
4039
+ * typed prompt, and a list wired to `negative` must never supply it;
4040
+ * - a ROW runs when ANY of those lists has a value in it. A row is never
4041
+ * dropped because one column is empty there — that column just contributes
4042
+ * nothing for the row — and a row with no value anywhere does not run.
4043
+ *
4044
+ * A list with a different number of rows is not part of this: it keeps
4045
+ * wrapping around per iteration, as it always has.
4046
+ */
4047
+ declare function resolveListFanOut<C extends FanOutCandidate>(candidates: readonly C[], nodeType: string | null | undefined): ListFanOut | undefined;
4048
+ /**
4049
+ * Is this fan-out item a media URL (as opposed to text)? The ONE guess both
4050
+ * engines make when a list item has to be applied as an override — kept here so
4051
+ * the backend worker and the in-browser executor cannot disagree on it.
4052
+ */
4053
+ declare function isFanOutUrlItem(item: string): boolean;
4054
+ /** What a fan-out source resolved to. */
4055
+ interface ListFanOut {
4056
+ /** The driving list's value for every row that runs — "" where the driver has
4057
+ * none for a row another list keeps alive (nothing is overridden there). */
4058
+ items: string[];
4059
+ /** `rowIndices[k]` = the row `items[k]` came from, in the driver's row space. */
4060
+ rowIndices: number[];
4061
+ /** Target handle of the consumer-side wire that drives the fan-out. */
4062
+ targetHandle: string | null | undefined;
4063
+ }
4064
+ /** The iterations a node will run, in order. */
4065
+ interface FanOutPlan {
4066
+ /** One entry per iteration (list items, repeat / provider sentinels). */
4067
+ items: string[];
4068
+ /** Row each iteration reads its inputs from; undefined when nothing is list-driven. */
4069
+ rows: Array<number | undefined>;
4070
+ /** Handle the driving list is wired to; undefined when nothing is list-driven. */
4071
+ targetHandle: string | null | undefined;
4072
+ }
4073
+ /**
4074
+ * Expand a fan-out into its iterations (list x Repeat xN, providers, repeats —
4075
+ * `expandItemsWithRepeat` stays the single rule for that) and pin every
4076
+ * iteration to the ROW its item came from. Repeat xN runs a row N times: the
4077
+ * copies share the row, they do not walk on to the next one.
4078
+ */
4079
+ declare function planFanOut(fanOut: ListFanOut | undefined, nodeType: string, nodeData: Record<string, unknown>): FanOutPlan | null;
4080
+ /**
4081
+ * Extract Field, List output, over a root ARRAY: one entry per element, "" where
4082
+ * the element has no value — so two Extract Field lists cut from the same array
4083
+ * stay row-aligned. Returns undefined when rows cannot be defined (the root is
4084
+ * not an array, an element fans into several values, or no element carries the
4085
+ * field at all) — the caller then keeps the plain "values that exist" list.
4086
+ */
4087
+ declare function alignedFieldList(value: unknown, path: string): string[] | undefined;
4088
+
3807
4089
  /**
3808
4090
  * Like Promise.allSettled but limits how many tasks run concurrently.
3809
4091
  * Uses a worker-pool pattern so a new task starts as soon as a slot frees up.
@@ -4455,11 +4737,35 @@ declare const HINT_EXEMPT_PARAMETER_TYPES: ReadonlySet<string>;
4455
4737
  declare const VIDEO_ONLY_PARAMETER_NODE_TYPES: ReadonlySet<string>;
4456
4738
  /**
4457
4739
  * Pickers whose fragment depends on OTHER nodes wired into them — camera
4458
- * motion's start / end states, character motion's target and partner names —
4459
- * so both executors must pass the graph to `getParameterPromptHint` for them.
4460
- * Transition and Character FX compose from the graph in the editor preview but
4461
- * are deliberately NOT here: adding them changes the prompt of workflows that
4462
- * already exist, which is its own reviewed change.
4740
+ * motion's and transition's start / end states, character motion's target and
4741
+ * partner names, character FX's target name — so both executors must pass the
4742
+ * graph to `getParameterPromptHint` for them.
4743
+ *
4744
+ * TRANSITION AND CHARACTER-FX JOINED THIS SET (signed off). They compose from
4745
+ * the graph everywhere a human LOOKS at them — the config panel's injection
4746
+ * preview and the canvas card both run
4747
+ * `getParameterPromptHint(node, { nodes, edges })` — and on the frontend
4748
+ * `{Label}` path (`execution-graph.ts :: extractNodeOutput`), but the two
4749
+ * cinematography collectors that read THIS set dispatched them without the
4750
+ * graph, so a wired `startState` / `target` was promised in the preview and
4751
+ * dropped at execution. Admitting them here closes that gap on BOTH executors
4752
+ * at once.
4753
+ *
4754
+ * THE BOUND, and it is proved rather than asserted: a picker with NOTHING
4755
+ * wired to its own `startState` / `endState` / `target` handles emits
4756
+ * byte-identical text with and without the graph — the composers are simply
4757
+ * called with empty clause arrays either way. So only workflows that actually
4758
+ * wire those handles change at all, and they change to the text their own
4759
+ * preview already shows. The prompts package's
4760
+ * `graph-composed-unwired-identity.test.ts` walks every transition and
4761
+ * character-fx catalog entry in both hint modes, under two unwired graph
4762
+ * shapes, and asserts that equality — with a wired positive control so it
4763
+ * cannot go vacuous.
4764
+ *
4765
+ * ADD A NEW GRAPH-COMPOSED PICKER HERE AND TO
4766
+ * `LABEL_REF_GRAPH_COMPOSED_PARAMETER_TYPES` (backend
4767
+ * `services/workflow-engine/label-ref-hint-context.ts`) when it ships, so its
4768
+ * `{Label}` text and its directly-wired text agree from its first release.
4463
4769
  */
4464
4770
  declare const EXECUTION_GRAPH_COMPOSED_PARAMETER_TYPES: ReadonlySet<string>;
4465
4771
  declare function setRegisteredPersonPackFields(fields: readonly string[]): void;
@@ -4757,6 +5063,479 @@ declare const SUNO_FIELD_HANDLE_FIELDS: readonly ["style", "lyrics", "title", "n
4757
5063
  /** Map a `field-<key>` handle id to its data key, or null if not a field handle. */
4758
5064
  declare function fieldKeyFromHandle(handleId: string): string | null;
4759
5065
 
5066
+ /**
5067
+ * The node types the server projects onto `workflow_triggers` rows when a
5068
+ * workflow is saved (backend `lib/workflow-trigger-sync.ts`), and that the
5069
+ * editor therefore asks the server to re-project after its own saves. One
5070
+ * vocabulary for both sides: a projected type added here reaches the
5071
+ * editor's "does this save need a sync?" question by construction.
5072
+ */
5073
+ declare const SCHEDULE_TRIGGER_NODE_TYPE = "schedule-trigger";
5074
+ declare const WEBHOOK_TRIGGER_NODE_TYPE = "webhook-trigger";
5075
+ declare const TELEGRAM_TRIGGER_NODE_TYPE = "telegram-trigger";
5076
+ declare const PROJECTED_TRIGGER_NODE_TYPES: ReadonlySet<string>;
5077
+ declare function isProjectedTriggerNodeType(type: unknown): type is string;
5078
+
5079
+ /**
5080
+ * Every way one node FEEDS another — the ONE definition the server's run
5081
+ * scope (`triggerRunScope`) and the editor's "is this trigger wired?" read
5082
+ * from, so the card can never say "the branch" while the server runs the
5083
+ * whole workflow, or the other way round:
5084
+ *
5085
+ * - a drawn edge whose two ends are both on the graph (a delta that deleted a
5086
+ * node leaves its edges behind; those feed nothing);
5087
+ * - Group membership: a node inside a Group feeds the group (`parentId`),
5088
+ * the way the engine orders a group after its members;
5089
+ * - a field mapping: `data.fieldMappings[field].sourceNodeId` feeds the node
5090
+ * that carries the mapping, even after the edge it was made from is gone.
5091
+ */
5092
+ interface FeedNode {
5093
+ readonly id: string;
5094
+ readonly parentId?: string | null;
5095
+ readonly data?: unknown;
5096
+ }
5097
+ interface FeedEdge {
5098
+ readonly source: string;
5099
+ readonly target: string;
5100
+ }
5101
+ interface FeedMaps {
5102
+ /** node id → the ids it feeds */
5103
+ readonly children: ReadonlyMap<string, ReadonlyArray<string>>;
5104
+ /** node id → the ids that feed it */
5105
+ readonly parents: ReadonlyMap<string, ReadonlyArray<string>>;
5106
+ }
5107
+ declare function buildFeedMaps(nodes: ReadonlyArray<FeedNode>, edges: ReadonlyArray<FeedEdge>): FeedMaps;
5108
+ /** Does this node feed anything? A trigger that does not runs the whole workflow. */
5109
+ declare function nodeFeedsAnything(nodes: ReadonlyArray<FeedNode>, edges: ReadonlyArray<FeedEdge>, nodeId: string): boolean;
5110
+
5111
+ /**
5112
+ * Schedule Trigger rules — the ONE model both sides read.
5113
+ *
5114
+ * A schedule is a list of rules; the workflow runs whenever any rule says
5115
+ * "this minute". The editor previews a schedule (headline, today's timeline,
5116
+ * the next runs, runs per day) and the server decides whether to fire — from
5117
+ * the same functions here, so what the panel shows is what the cron does.
5118
+ *
5119
+ * Kinds, with the fields each reads (everything else on the rule is ignored):
5120
+ * - `minutes` — `every` (1–59): at minute 0, N, 2N… of every hour (cron `*\/N`).
5121
+ * - `hours` — `every` (1–23) at `minute`: at hour 0, N, 2N… of every day.
5122
+ * - `days` — `every` (1–31) at `hour:minute`: every Nth calendar day.
5123
+ * - `weeks` — `every` (1–52) on `weekdays` at `hour:minute`: every Nth week.
5124
+ * - `months` — `every` (1–12) on `dayOfMonth` at `hour:minute`: every Nth month
5125
+ * (a day the month lacks — 31 in April — runs on its last day).
5126
+ * - `cron` — a 5-field cron expression, for the person who wants one.
5127
+ *
5128
+ * "Every Nth day / week / month" counts from a fixed origin (the Unix epoch,
5129
+ * in the schedule's timezone; weeks start on Monday) rather than from the
5130
+ * moment the rule was saved — so the preview and the server agree, a re-save
5131
+ * never shifts the phase, and two people reading the rule get the same days.
5132
+ *
5133
+ * Time is read in the schedule's timezone (an IANA name; missing or unknown
5134
+ * → UTC — callers validate with `isValidTimezone` and refuse the unknown
5135
+ * ones, so that fallback is only ever a defence). Resolution is one minute:
5136
+ * the cron ticks once a minute and asks "does this minute match?" — there is
5137
+ * no sub-minute scheduling.
5138
+ *
5139
+ * Daylight-saving: a wall-clock minute that does not exist on the day the
5140
+ * clocks jump forward is skipped that day. On the day they fall back, a rule
5141
+ * that names a time of day (`hours` / `days` / `weeks` / `months` / `cron`)
5142
+ * runs once — the second pass is the same wall-clock minute
5143
+ * (`localMinuteKey`) as the fire just before it, and both the server and the
5144
+ * preview drop it — while a `minutes` rule keeps its cadence through the
5145
+ * repeated hour, because real time keeps passing.
5146
+ */
5147
+ declare const SCHEDULE_RULE_KINDS: readonly ["minutes", "hours", "days", "weeks", "months", "cron"];
5148
+ type ScheduleRuleKind = (typeof SCHEDULE_RULE_KINDS)[number];
5149
+ interface ScheduleRule {
5150
+ readonly id: string;
5151
+ readonly kind: ScheduleRuleKind;
5152
+ /** Every N units (see `SCHEDULE_EVERY_LIMITS`). */
5153
+ readonly every?: number;
5154
+ /** 0–23, in the schedule's timezone. Read by days / weeks / months. */
5155
+ readonly hour?: number;
5156
+ /** 0–59. Read by every kind but `minutes` and `cron`. */
5157
+ readonly minute?: number;
5158
+ /** 0 = Sunday … 6 = Saturday (the cron / JavaScript convention). Read by `weeks`. */
5159
+ readonly weekdays?: ReadonlyArray<number>;
5160
+ /** 1–31. Read by `months`. */
5161
+ readonly dayOfMonth?: number;
5162
+ /** A 5-field cron expression. Read by `cron`. */
5163
+ readonly cron?: string;
5164
+ }
5165
+ interface ScheduleSpec {
5166
+ readonly rules: ReadonlyArray<ScheduleRule>;
5167
+ /** IANA timezone; missing or unknown means UTC. */
5168
+ readonly timezone?: string;
5169
+ /** Stop after this many runs; missing means unlimited. */
5170
+ readonly maxExecutions?: number;
5171
+ }
5172
+ /** `every` limits per kind — the panel's range hints and the normaliser's clamps. */
5173
+ declare const SCHEDULE_EVERY_LIMITS: Readonly<Record<Exclude<ScheduleRuleKind, "cron">, readonly [number, number]>>;
5174
+ /** A 5-field cron expression — the only shape the matcher understands. */
5175
+ declare function isCronExpression(value: unknown): value is string;
5176
+ /**
5177
+ * One rule as the user typed it → one rule the engine can run, or `null` when
5178
+ * there is nothing to run (unknown kind, a cron rule with no expression, a
5179
+ * weeks rule with no weekday). Out-of-range numbers are clamped, never
5180
+ * refused: a half-typed "0" must not silently disable a schedule.
5181
+ */
5182
+ declare function normalizeScheduleRule(raw: unknown, fallbackId?: string): ScheduleRule | null;
5183
+ /** Every usable rule, in order; unusable ones dropped. */
5184
+ declare function normalizeScheduleRules(raw: unknown): ScheduleRule[];
5185
+ /**
5186
+ * The schedule an OLD node carried — `interval` ("5m" / "1h" / "1d" or one of
5187
+ * the editor's cron presets) and/or `cron` — as rules. Seconds cannot be
5188
+ * scheduled (the cron ticks once a minute) and become "every minute".
5189
+ */
5190
+ declare function legacyScheduleToRules(data: {
5191
+ interval?: unknown;
5192
+ cron?: unknown;
5193
+ cronExpression?: unknown;
5194
+ }): ScheduleRule[];
5195
+ interface LocalTime {
5196
+ readonly year: number;
5197
+ /** 1–12 */
5198
+ readonly month: number;
5199
+ /** 1–31 */
5200
+ readonly day: number;
5201
+ readonly hour: number;
5202
+ readonly minute: number;
5203
+ /** 0 = Sunday … 6 = Saturday */
5204
+ readonly weekday: number;
5205
+ /** Calendar days since 1970-01-01, in the schedule's timezone. */
5206
+ readonly epochDay: number;
5207
+ }
5208
+ /** A timezone this runtime can read the clock in (an IANA name such as `Asia/Jerusalem`). */
5209
+ declare function isValidTimezone(value: unknown): value is string;
5210
+ /** One wall-clock minute, as a key: the same key twice means the clocks fell back. */
5211
+ declare function localMinuteKey(local: LocalTime): string;
5212
+ /** The wall-clock time in the schedule's timezone (UTC when it is missing or unknown). */
5213
+ declare function localTimeIn(date: Date, timezone?: string): LocalTime;
5214
+ /** How far the timezone's wall clock is ahead of UTC at this instant, in minutes. */
5215
+ declare function timezoneOffsetMinutes(date: Date, timezone?: string): number;
5216
+ /** Standard 5-field cron field: `*`, `N`, `a-b`, `a,b`, `*\/N`, `a-b/N`, `a/N`. */
5217
+ declare function matchesCronField(field: string, value: number, min: number, max: number): boolean;
5218
+ /** Does this wall-clock minute match the cron expression? */
5219
+ declare function matchesCron(expression: string, local: LocalTime): boolean;
5220
+ /** Does this wall-clock minute match the rule? */
5221
+ declare function ruleMatches(rule: ScheduleRule, local: LocalTime): boolean;
5222
+ /** Does the schedule run at this instant (any rule, this minute)? */
5223
+ declare function scheduleMatchesAt(spec: ScheduleSpec, at: Date): boolean;
5224
+ /**
5225
+ * Every minute in [from, until] at which the schedule runs, oldest first, at
5226
+ * most `cap`. Scans minute by minute with the timezone offset re-read once per
5227
+ * quarter hour, so a 62-day horizon costs ~90k cheap checks and ~6k clock
5228
+ * reads. A wall-clock minute the clocks fall back onto is listed once.
5229
+ */
5230
+ declare function scheduleOccurrences(spec: ScheduleSpec, from: Date, until: Date, cap: number): Date[];
5231
+ /**
5232
+ * How far ahead a preview must look to find the schedule's next run: two
5233
+ * periods of its slowest rule (a quarterly rule needs half a year, a yearly
5234
+ * one two), never less than two months and never more than ~two years.
5235
+ */
5236
+ declare function previewHorizonMs(rules: ReadonlyArray<ScheduleRule>): number;
5237
+ /**
5238
+ * The next `count` runs strictly after `from` (the minute `from` is in does
5239
+ * not count, the very next one does), looking `horizonMs` ahead — by default
5240
+ * as far as the rules need (`previewHorizonMs`).
5241
+ */
5242
+ declare function nextScheduleRuns(spec: ScheduleSpec, from: Date, count: number, horizonMs?: number): Date[];
5243
+
5244
+ declare const META_ADS_SCRAPE_NODE_TYPE: "meta-ads-scrape";
5245
+ /** The WIRE modes — what `POST /v1/meta-ads-scrape` accepts. */
5246
+ declare const META_ADS_SCRAPE_MODES: readonly ["search", "pages"];
5247
+ type MetaAdsScrapeMode = (typeof META_ADS_SCRAPE_MODES)[number];
5248
+ /** The NODE modes — the wire modes plus the editor-only advertiser picker (runs as pages). */
5249
+ declare const META_ADS_NODE_MODES: readonly ["search", "pages", "advertiser"];
5250
+ type MetaAdsNodeMode = (typeof META_ADS_NODE_MODES)[number];
5251
+ /** Coerce stored node data to a node mode; anything unknown is the default keyword search. */
5252
+ declare function metaAdsNodeMode(value: unknown): MetaAdsNodeMode;
5253
+ /** An advertiser the user picked by name — stored on the node, run as its Page url. */
5254
+ interface MetaAdsAdvertiser {
5255
+ readonly pageId: string;
5256
+ readonly name: string;
5257
+ /** The Facebook Page url. The actor resolves it to the Ad Library advertiser itself — the Page id and the advertiser id are NOT the same number. */
5258
+ readonly url: string;
5259
+ readonly imageUrl?: string;
5260
+ readonly verified?: boolean;
5261
+ }
5262
+ /** How many matches an advertiser lookup returns — more than the pick cap, so a same-name brand can be told apart by its badge / avatar. */
5263
+ declare const META_ADS_ADVERTISER_MAX_RESULTS = 8;
5264
+ /** http(s) url on facebook.com (any subdomain) — the ONE predicate for a Page address, on the route's Zod and on stored picks alike. */
5265
+ declare function isFacebookPageUrl(value: unknown): value is string;
5266
+ /** A Page avatar lives on Meta's CDN; anything else is not stored (it would be fetched by every viewer's browser and our image proxy). */
5267
+ declare function isMetaCdnImageUrl(value: unknown): value is string;
5268
+ /** Stored / relayed advertisers, sanitized: a page id, a name, a facebook.com url, a Meta-CDN avatar; deduped by page id; at most `limit` (the pick cap by default). */
5269
+ declare function metaAdsAdvertisersFrom(raw: unknown, limit?: number): MetaAdsAdvertiser[];
5270
+ declare const META_ADS_SCRAPE_PERIODS: readonly ["24h", "7d", "30d", "all"];
5271
+ type MetaAdsScrapePeriod = (typeof META_ADS_SCRAPE_PERIODS)[number];
5272
+ declare const META_ADS_SCRAPE_STATUSES: readonly ["active", "inactive", "all"];
5273
+ type MetaAdsScrapeStatus = (typeof META_ADS_SCRAPE_STATUSES)[number];
5274
+ /** Meta's `publisher_platform` vocabulary — the values an ad's `platforms` carries and the filter the node accepts. */
5275
+ declare const META_ADS_PLATFORMS: readonly ["FACEBOOK", "INSTAGRAM", "AUDIENCE_NETWORK", "MESSENGER", "WHATSAPP", "THREADS"];
5276
+ type MetaAdsPlatform = (typeof META_ADS_PLATFORMS)[number];
5277
+ declare function isMetaAdsPlatform(value: unknown): value is MetaAdsPlatform;
5278
+ /**
5279
+ * Creative format, classified from the creative's measured pixels — the
5280
+ * user's "phone vs web" question. `vertical` = Stories / Reels / mobile feed
5281
+ * (9:16, 4:5), `square` = 1:1 (±5 %), `horizontal` = feed / web / banners
5282
+ * (16:9, 1.91:1). One classifier for the route (node setting), the Results
5283
+ * chips and the card, so they can never disagree.
5284
+ */
5285
+ declare const META_ADS_FORMATS: readonly ["vertical", "square", "horizontal"];
5286
+ type MetaAdsFormat = (typeof META_ADS_FORMATS)[number];
5287
+ type MetaAdsCreativeFormat = MetaAdsFormat | "unknown";
5288
+ declare function isMetaAdsFormat(value: unknown): value is MetaAdsFormat;
5289
+ /** The featured ad index, clamped so a rerun that returned fewer ads never indexes past the end. */
5290
+ declare function clampMetaAdsFeaturedIndex(stored: unknown, count: number): number;
5291
+ interface FeaturedMetaAdOutputs {
5292
+ readonly text?: string;
5293
+ readonly imageUrl?: string;
5294
+ readonly videoUrl?: string;
5295
+ }
5296
+ /**
5297
+ * What the node's typed `text` / `image` / `video` handles carry: the
5298
+ * FEATURED ad's copy (headline + body), first image (else the video poster)
5299
+ * and first video. ONE derivation for the route's output_data, the backend
5300
+ * saved-output hydration and the editor's extractNodeOutput, so a thumb pick
5301
+ * re-hydrates the handles identically everywhere.
5302
+ */
5303
+ declare function featuredMetaAdOutputs(json: unknown, featuredIndex: unknown): FeaturedMetaAdOutputs;
5304
+ declare function classifyCreativeFormat(width: unknown, height: unknown): MetaAdsCreativeFormat;
5305
+ /** Presets the config panel offers; the route accepts any integer 1..MAX_COUNT. */
5306
+ declare const META_ADS_SCRAPE_COUNT_OPTIONS: readonly [10, 20, 50, 100];
5307
+ declare const META_ADS_SCRAPE_DEFAULT_COUNT = 20;
5308
+ declare const META_ADS_SCRAPE_MAX_COUNT = 100;
5309
+ declare const META_ADS_SCRAPE_MAX_SOURCES = 5;
5310
+ /** Meta caps Ad Library search terms at 100 characters. */
5311
+ declare const META_ADS_SCRAPE_MAX_QUERY_LENGTH = 100;
5312
+ declare const META_ADS_SCRAPE_DEFAULT_COUNTRY = "ALL";
5313
+ /** Requested-total buckets. Sorted ascending; the last one is `MAX_COUNT × MAX_SOURCES`. */
5314
+ declare const META_ADS_SCRAPE_TIERS: readonly [10, 20, 50, 100, 200, 500];
5315
+ type MetaAdsScrapeTier = (typeof META_ADS_SCRAPE_TIERS)[number];
5316
+ /**
5317
+ * Optional per-ad AI analysis — the "expert competitor ad analyst" pass.
5318
+ * Priced per REQUESTED ad like the scrape, by the analysing model's tier,
5319
+ * and folded into the SAME tiered identifier so every quote (guard,
5320
+ * reservation, card badge, run total, backend estimator) stays one SKU:
5321
+ *
5322
+ * meta-ads-scrape:<tier> tier
5323
+ * meta-ads-scrape:<tier>:analysis tier × (1 + 3) standard models
5324
+ * meta-ads-scrape:<tier>:analysis:economy tier × (1 + 1)
5325
+ * meta-ads-scrape:<tier>:analysis:premium tier × (1 + 4)
5326
+ *
5327
+ * The per-ad SKUs (`meta-ads-analysis[:economy|:premium]`) price the
5328
+ * SETTLEMENT: a run commits tier + per-ad × ads actually analysed and
5329
+ * refunds the rest (an ad the model failed on, or one the deadline skipped).
5330
+ */
5331
+ declare const META_ADS_ANALYSIS_TIERS: readonly ["economy", "standard", "premium"];
5332
+ type MetaAdsAnalysisTier = (typeof META_ADS_ANALYSIS_TIERS)[number];
5333
+ declare const META_ADS_ANALYSIS_CREDITS_PER_AD: Record<MetaAdsAnalysisTier, number>;
5334
+ declare const META_ADS_ANALYSIS_CREDIT_ID: "meta-ads-analysis";
5335
+ /** The user's optional analyst focus, appended to the fixed prompt. */
5336
+ declare const META_ADS_ANALYSIS_FOCUS_MAX = 500;
5337
+ /** The per-ad settlement SKU for a tier (the bare id is the standard tier). */
5338
+ declare function metaAdsAnalysisCreditId(tier: MetaAdsAnalysisTier): string;
5339
+ /** The analysing model's tier; an absent model is the feature default. */
5340
+ declare function metaAdsAnalysisTier(modelId?: unknown): MetaAdsAnalysisTier;
5341
+ /** What one analysed ad carries (`ad.analysis`); fixed fields + string lists only — never a map (Gemini via KIE drops map fields). */
5342
+ interface AdCreativeAnalysis {
5343
+ readonly assetType: "static" | "motion" | "carousel" | "unknown";
5344
+ readonly format: string;
5345
+ readonly visualHooks: readonly string[];
5346
+ readonly audiences: readonly string[];
5347
+ readonly graphicIdentity: string;
5348
+ readonly copywritingHooks: readonly string[];
5349
+ readonly usps: readonly string[];
5350
+ readonly cta: string;
5351
+ readonly summary: string;
5352
+ }
5353
+ /** Read a stored analysis back defensively (a node's saved JSON is untrusted shape); null when there is none. */
5354
+ declare function adCreativeAnalysisFrom(raw: unknown): AdCreativeAnalysis | null;
5355
+ /**
5356
+ * Credit cost per SKU — mirror of the backend `STATIC_CREDIT_COSTS` rows and
5357
+ * migrations 428 / 429, for the frontend badge / estimator. 1 credit per
5358
+ * requested ad at every tier, plus the analysis multiples above; the bare
5359
+ * identifier is the pre-Zod fallback (mid tier, never the max).
5360
+ */
5361
+ declare const META_ADS_SCRAPE_CREDIT_COSTS: Record<string, number>;
5362
+ declare const META_ADS_SCRAPE_FALLBACK_CREDIT_ID = "meta-ads-scrape:20";
5363
+ /**
5364
+ * Page urls are typed one per line in the config panel (a FieldMapping
5365
+ * injects the same text); the route wants an array. Tolerates commas and
5366
+ * whitespace as separators (a url never contains either) and an array that
5367
+ * already went through this once.
5368
+ */
5369
+ declare function splitMetaAdsPageUrls(value: unknown): string[];
5370
+ declare function isMetaAdsScrapeMode(value: unknown): value is MetaAdsScrapeMode;
5371
+ /**
5372
+ * Advertiser NAMES to resolve at run time (advertiser mode driven by the `in`
5373
+ * input) — one per line or comma-separated. Unlike page urls, a name contains
5374
+ * spaces, so this never splits on whitespace. Trimmed, de-duped, each 2..100
5375
+ * chars, capped at `MAX_SOURCES`.
5376
+ */
5377
+ declare function splitMetaAdsAdvertiserNames(value: unknown): string[];
5378
+ /** The node-data fields that decide what a run scrapes (and therefore what it costs). Index-signature so any node-data bag is accepted as-is. */
5379
+ interface MetaAdsNodeSourceFields {
5380
+ readonly [key: string]: unknown;
5381
+ readonly mode?: unknown;
5382
+ readonly query?: unknown;
5383
+ readonly pageUrls?: unknown;
5384
+ readonly advertisers?: unknown;
5385
+ }
5386
+ /**
5387
+ * How many sources a run bills — the number the card badge, the run total,
5388
+ * the pre-run estimator and the backend quote must all read, so an advertiser
5389
+ * pick can never be quoted as one source while the server reserves five. An
5390
+ * empty page list / no picks counts as one (the run then fails validation
5391
+ * before anything is reserved).
5392
+ */
5393
+ declare function metaAdsScrapeSources(data: MetaAdsNodeSourceFields): number;
5394
+ type MetaAdsWireSources = {
5395
+ readonly mode: "search";
5396
+ readonly query: string | undefined;
5397
+ } | {
5398
+ readonly mode: "pages";
5399
+ readonly pageUrls: string[];
5400
+ readonly advertiserNames?: string[];
5401
+ };
5402
+ /**
5403
+ * The wire half of a request from node data — ONE mapping for the editor's
5404
+ * executor and the orchestrator's payload builder. The keyword / page list
5405
+ * falls back to the upstream text so a Prompt or List node can drive the
5406
+ * scrape; advertiser picks are explicit (no upstream fallback) and run as
5407
+ * their Page urls, which is why the route never sees "advertiser".
5408
+ */
5409
+ declare function metaAdsScrapeWireSources(data: MetaAdsNodeSourceFields, upstream?: unknown): MetaAdsWireSources;
5410
+ declare function isMetaAdsScrapeCount(value: unknown): value is number;
5411
+ /** Smallest tier that fits the requested total; clamps to the top tier. */
5412
+ declare function metaAdsScrapeTier(requestedTotal: number): MetaAdsScrapeTier;
5413
+ interface MetaAdsScrapeCreditInput {
5414
+ count: number;
5415
+ /** Number of input URLs in pages mode; 1 for a keyword search. */
5416
+ sources: number;
5417
+ /** The analysing model's tier when per-ad analysis is on; absent / null = scrape only. */
5418
+ analysis?: MetaAdsAnalysisTier | null;
5419
+ }
5420
+ declare function buildMetaAdsScrapeCreditId(input: MetaAdsScrapeCreditInput): string;
5421
+ /** The analysis tier a request / node asks for, or null when analysis is off. */
5422
+ declare function metaAdsAnalysisTierFrom(data: {
5423
+ readonly analyze?: unknown;
5424
+ readonly analysisModel?: unknown;
5425
+ }): MetaAdsAnalysisTier | null;
5426
+ /**
5427
+ * Resolve the credit identifier from an UNVALIDATED request body (the
5428
+ * creditGuard preHandler runs before Zod). It must land on the SAME tier the
5429
+ * post-Zod reservation computes, so an OMITTED count is the route's default
5430
+ * (Zod fills it in the same way); only a present-but-invalid body reserves
5431
+ * the fixed mid tier, and the route then rejects it with a 400 and refunds.
5432
+ */
5433
+ declare function resolveMetaAdsScrapeCreditId(body: unknown): string;
5434
+ /** The node-data fields a quote reads: what a run scrapes, how many, and whether it analyses. */
5435
+ interface MetaAdsNodeQuoteFields extends MetaAdsNodeSourceFields {
5436
+ readonly count?: unknown;
5437
+ readonly analyze?: unknown;
5438
+ readonly analysisModel?: unknown;
5439
+ }
5440
+ /**
5441
+ * The ONE credit identifier for a node's current settings — the card badge,
5442
+ * the run total, the pre-run estimator and the backend quote all read this,
5443
+ * and it is the same builder the route's guard + reservation use on the wire
5444
+ * body, so no surface can quote a different SKU than the one reserved.
5445
+ */
5446
+ declare function metaAdsScrapeCreditIdFromNode(data: MetaAdsNodeQuoteFields): string;
5447
+
5448
+ /**
5449
+ * Instagram scraper node — shared vocabulary + credit identifiers.
5450
+ *
5451
+ * Pulls PUBLIC Instagram posts (feed images, carousels, reels) by profile or
5452
+ * by hashtag and emits a normalized JSON array. Same shape of contract as the
5453
+ * Meta Ads node: everything the backend guard/reservation, the frontend credit
5454
+ * badge and the docs formula must agree on lives here.
5455
+ *
5456
+ * Pricing: 1 credit per REQUESTED post, rounded UP to a fixed tier of
5457
+ * `count × sources` (a profile / hashtag is one source, up to 5). Optional
5458
+ * per-post AI analysis folds into the same identifier, priced by the model's
5459
+ * tier — reusing the Meta analysis per-item values so the two nodes stay in
5460
+ * lockstep.
5461
+ */
5462
+
5463
+ declare const INSTAGRAM_SCRAPE_NODE_TYPE: "instagram-scrape";
5464
+ declare const INSTAGRAM_SCRAPE_MODES: readonly ["profile", "hashtag"];
5465
+ type InstagramScrapeMode = (typeof INSTAGRAM_SCRAPE_MODES)[number];
5466
+ declare function isInstagramScrapeMode(value: unknown): value is InstagramScrapeMode;
5467
+ declare function instagramScrapeMode(value: unknown): InstagramScrapeMode;
5468
+ /** Same window vocabulary as Meta Ads; the Instagram actor honours it server-side (`onlyPostsNewerThan`). */
5469
+ declare const INSTAGRAM_SCRAPE_PERIODS: readonly ["24h", "7d", "30d", "all"];
5470
+ type InstagramScrapePeriod = (typeof INSTAGRAM_SCRAPE_PERIODS)[number];
5471
+ declare const INSTAGRAM_SCRAPE_DEFAULT_COUNT = 20;
5472
+ declare const INSTAGRAM_SCRAPE_MAX_COUNT = 100;
5473
+ declare const INSTAGRAM_SCRAPE_MAX_SOURCES = 5;
5474
+ /** Instagram usernames / hashtags are short; cap a single target well under a URL. */
5475
+ declare const INSTAGRAM_SCRAPE_MAX_TARGET_LENGTH = 200;
5476
+ /** Requested-total buckets — identical shape to Meta (the pricing model is the same). */
5477
+ declare const INSTAGRAM_SCRAPE_TIERS: readonly [10, 20, 50, 100, 200, 500];
5478
+ type InstagramScrapeTier = (typeof INSTAGRAM_SCRAPE_TIERS)[number];
5479
+ declare function instagramScrapeTier(requestedTotal: number): InstagramScrapeTier;
5480
+ /** The analysis tier a request / node asks for, or null when analysis is off. */
5481
+ declare function instagramAnalysisTierFrom(data: {
5482
+ readonly analyze?: unknown;
5483
+ readonly analysisModel?: unknown;
5484
+ }): MetaAdsAnalysisTier | null;
5485
+ /** Per-post settlement SKU for a tier (the bare id is the standard tier). */
5486
+ declare const INSTAGRAM_ANALYSIS_CREDIT_ID: "instagram-analysis";
5487
+ declare function instagramAnalysisCreditId(tier: MetaAdsAnalysisTier): string;
5488
+ interface InstagramScrapeCreditInput {
5489
+ count: number;
5490
+ sources: number;
5491
+ analysis?: MetaAdsAnalysisTier | null;
5492
+ }
5493
+ declare function buildInstagramScrapeCreditId(input: InstagramScrapeCreditInput): string;
5494
+ /**
5495
+ * Cost per SKU — mirror of the backend `STATIC_CREDIT_COSTS` rows / migration,
5496
+ * for the frontend badge / estimator. 1 credit per requested post at every
5497
+ * tier, plus the analysis multiples.
5498
+ */
5499
+ declare const INSTAGRAM_SCRAPE_CREDIT_COSTS: Record<string, number>;
5500
+ declare const INSTAGRAM_SCRAPE_FALLBACK_CREDIT_ID = "instagram-scrape:20";
5501
+ declare function isInstagramScrapeCount(value: unknown): value is number;
5502
+ /**
5503
+ * Targets (profile usernames/URLs or hashtags) are typed one per line; the
5504
+ * route wants an array. Unlike page urls a target can be a bare username /
5505
+ * `#tag`, so split on lines / commas only (never whitespace), strip a leading
5506
+ * `@` or `#`, dedupe, cap at MAX_SOURCES.
5507
+ */
5508
+ declare function splitInstagramTargets(value: unknown): string[];
5509
+ /** The featured post index, clamped. */
5510
+ declare function clampInstagramFeaturedIndex(stored: unknown, count: number): number;
5511
+ interface FeaturedInstagramOutputs {
5512
+ readonly text?: string;
5513
+ readonly imageUrl?: string;
5514
+ readonly videoUrl?: string;
5515
+ }
5516
+ /** The featured post's caption (`text`), first image / cover (`image`), and first video (`video`). */
5517
+ declare function featuredInstagramOutputs(json: unknown, featuredIndex: unknown): FeaturedInstagramOutputs;
5518
+ /** The node-data fields a quote reads. */
5519
+ interface InstagramNodeQuoteFields {
5520
+ readonly [key: string]: unknown;
5521
+ readonly mode?: unknown;
5522
+ readonly targets?: unknown;
5523
+ readonly count?: unknown;
5524
+ readonly analyze?: unknown;
5525
+ readonly analysisModel?: unknown;
5526
+ }
5527
+ /** Billable source count: number of targets (min 1). */
5528
+ declare function instagramScrapeSources(data: InstagramNodeQuoteFields): number;
5529
+ /** The ONE credit identifier for a node's current settings. */
5530
+ declare function instagramScrapeCreditIdFromNode(data: InstagramNodeQuoteFields): string;
5531
+ /**
5532
+ * Resolve the credit identifier from an UNVALIDATED request body (the guard
5533
+ * runs before Zod). Lands on the SAME tier the reservation computes.
5534
+ */
5535
+ declare function resolveInstagramScrapeCreditId(body: unknown): string;
5536
+
5537
+ type InstagramFormat = MetaAdsFormat;
5538
+
4760
5539
  /**
4761
5540
  * Build a label→output map for `{Node Label}` refs inside condition values
4762
5541
  * on filter-list and router nodes.
@@ -5485,6 +6264,21 @@ interface SafetyRetryPolicy {
5485
6264
  */
5486
6265
  declare function safetyRetryPolicy(modelId: string): SafetyRetryPolicy;
5487
6266
 
6267
+ /**
6268
+ * Canonical list of font display names supported by the Remotion renderer.
6269
+ *
6270
+ * Single source of truth shared by:
6271
+ * - the backend Zod schemas (`z.enum(SUPPORTED_FONT_NAMES)`), which CANNOT
6272
+ * import `@nodaro/remotion` (its font-registry pulls the render runtime +
6273
+ * `@remotion/google-fonts` side-effects into a validation path), and
6274
+ * - `packages/remotion/src/lib/font-registry.ts`, which loads each face and
6275
+ * is kept in lock-step with this tuple by a compile-time `satisfies` guard.
6276
+ *
6277
+ * Order/spelling MUST match the keys of the `fonts` object in font-registry.ts.
6278
+ */
6279
+ declare const SUPPORTED_FONT_NAMES: readonly ["Inter", "Roboto", "Open Sans", "Montserrat", "Poppins", "Raleway", "Nunito", "Lato", "Playfair Display", "Merriweather", "Lora", "EB Garamond", "Bebas Neue", "Oswald", "Anton", "Dancing Script", "Pacifico", "Caveat", "Roboto Mono", "Fira Code", "Rubik", "Heebo", "Cairo", "Tajawal"];
6280
+ type SupportedFontName = (typeof SUPPORTED_FONT_NAMES)[number];
6281
+
5488
6282
  /**
5489
6283
  * Caption styles for the add-captions node. Static path uses FFmpeg drawtext;
5490
6284
  * kinetic styles render via Remotion (BurnCaptions composition).
@@ -5504,6 +6298,194 @@ type StaticCaptionStyle = (typeof STATIC_CAPTION_STYLES)[number];
5504
6298
  type KineticCaptionStyle = (typeof KINETIC_CAPTION_STYLES)[number];
5505
6299
  type CaptionStyle = (typeof ALL_CAPTION_STYLES)[number];
5506
6300
  declare function isKineticCaptionStyle(style: string | undefined | null): style is KineticCaptionStyle;
6301
+ declare const CAPTION_LOOK_IDS: readonly ["outline", "clean"];
6302
+ type CaptionLookId = (typeof CAPTION_LOOK_IDS)[number];
6303
+ /** What an unset `look` means on a KINETIC style. ONE-LINE FLIP: set to "clean"
6304
+ * to make an unset caption render as the pre-look-system lever set (face pinned)
6305
+ * instead. */
6306
+ declare const DEFAULT_CAPTION_LOOK: CaptionLookId;
6307
+ /** What an unset `look` means on the static `subtitle` style: the plain read —
6308
+ * a pinned neutral sans, no outline, no casing. A subtitle must never be left
6309
+ * with NO face: the Remotion render would fall back to headless Chrome's default
6310
+ * SERIF, so adding e.g. a stroke to a subtitle would silently flip its font away
6311
+ * from the sans the plain FFmpeg subtitle draws. */
6312
+ declare const DEFAULT_SUBTITLE_LOOK: CaptionLookId;
6313
+ /**
6314
+ * The lever field names that are MEANINGLESS on a `subtitle` render and so are
6315
+ * rejected on it: `highlightColor` (subtitle has no per-word spoken cursor to
6316
+ * colour) and `animate` (subtitle has no motion to switch off). The STYLING
6317
+ * levers (look/fontFamily/fontWeight/strokeColor/strokeWidth/uppercase/positionY)
6318
+ * are NOT here any more — a `subtitle` carrying any of them now routes to the
6319
+ * Remotion renderer (see `captionRoutesToRemotion`), which applies them exactly
6320
+ * as it does for the kinetic styles. Single source of truth for the route's
6321
+ * reject-on-subtitle guard and the frontend's "don't send a stale lever" strip.
6322
+ * `color`/`backgroundColor` are deliberately absent — FFmpeg subtitle honours
6323
+ * those too.
6324
+ */
6325
+ declare const KINETIC_ONLY_CAPTION_LEVER_KEYS: readonly ["highlightColor", "animate"];
6326
+ type KineticOnlyCaptionLeverKey = (typeof KINETIC_ONLY_CAPTION_LEVER_KEYS)[number];
6327
+ /**
6328
+ * Does an add-captions request need the Remotion renderer, vs the cheap static
6329
+ * FFmpeg drawtext path? A caption routes to Remotion when it needs anything the
6330
+ * one-fixed-string drawtext pass cannot do:
6331
+ * - per-segment treatments (`segments`),
6332
+ * - a kinetic style,
6333
+ * - any STYLING lever (look/font/weight/stroke/uppercase/position_y/
6334
+ * max_words_per_line) — FFmpeg drawtext can't apply a webfont face, weight,
6335
+ * outline, casing, a free vertical position, or line grouping,
6336
+ * - TIMED captions (a wired `transcript` or an explicit `captions[]` array),
6337
+ * - auto-transcription, i.e. no `text` to burn as one static block.
6338
+ * Plain-`text` `subtitle` with no lever stays on FFmpeg (unchanged, cheap).
6339
+ *
6340
+ * SINGLE SOURCE for BOTH the worker dispatch (handleAddCaptions) AND the credit
6341
+ * id (buildAddCaptionsCreditId) so the renderer and the price never drift: a
6342
+ * Remotion render bills as `add-captions:kinetic`, a plain drawtext burn as
6343
+ * `add-captions`.
6344
+ */
6345
+ declare function captionRoutesToRemotion(input: {
6346
+ style?: string | null;
6347
+ text?: string | null;
6348
+ segments?: readonly unknown[] | null;
6349
+ transcript?: unknown;
6350
+ captions?: readonly unknown[] | null;
6351
+ look?: unknown;
6352
+ fontFamily?: unknown;
6353
+ fontWeight?: unknown;
6354
+ strokeColor?: unknown;
6355
+ strokeWidth?: unknown;
6356
+ uppercase?: unknown;
6357
+ positionY?: unknown;
6358
+ maxWordsPerLine?: unknown;
6359
+ }): boolean;
6360
+ /**
6361
+ * `maxWordsPerLine` — caps how many words a caption LINE (or tiktok-words page)
6362
+ * may hold, on top of the frame-width budget, sentence ends and pauses that
6363
+ * already close a line. 1–2 gives the punchy CapCut read; unset = fit the width.
6364
+ * Applies to every line/page-grouped render (word-highlight, karaoke, bouncy,
6365
+ * tiktok-words, and a Remotion-rendered subtitle); inert on word-pop (always one
6366
+ * word). Bounds single-sourced here for the route Zod, the plan schema, the MCP
6367
+ * schema, the CLI and the canvas panel.
6368
+ */
6369
+ declare const CAPTION_MAX_WORDS_PER_LINE_MIN = 1;
6370
+ declare const CAPTION_MAX_WORDS_PER_LINE_MAX = 20;
6371
+ /**
6372
+ * Numeric caption levers and their wire bounds — the SAME limits the route Zod
6373
+ * and the render-plan schema enforce. Single-sourced so the coercion below and
6374
+ * those schemas cannot disagree (a guard test pins the route to these).
6375
+ */
6376
+ declare const CAPTION_LEVER_BOUNDS: {
6377
+ readonly fontSize: {
6378
+ readonly min: 12;
6379
+ readonly max: 200;
6380
+ };
6381
+ readonly strokeWidth: {
6382
+ readonly min: 0;
6383
+ readonly max: 40;
6384
+ };
6385
+ readonly positionY: {
6386
+ readonly min: 0;
6387
+ readonly max: 100;
6388
+ };
6389
+ readonly fontWeight: {
6390
+ readonly min: 100;
6391
+ readonly max: 900;
6392
+ };
6393
+ readonly maxWordsPerLine: {
6394
+ readonly min: 1;
6395
+ readonly max: 20;
6396
+ };
6397
+ };
6398
+ /**
6399
+ * COERCE, never reject: bring the numeric caption levers of node data that
6400
+ * never passed a Zod (a workflow written by an agent, an import, a template, a
6401
+ * FieldMapping) into the range the render plan accepts. Without this an
6402
+ * out-of-range value only surfaces when the plan schema throws — mid-run, after
6403
+ * credits are reserved. A `null` / non-finite / non-numeric value is DROPPED (the
6404
+ * render default applies); an out-of-range one is clamped; `fontWeight` snaps to the
6405
+ * nearest 100 and `maxWordsPerLine` to a whole number. Pure; returns a copy and
6406
+ * leaves every other field untouched. Applied by payload-builder to the node's
6407
+ * top level and to each `segments[]` entry.
6408
+ */
6409
+ declare function normalizeCaptionNumericLevers<T extends Record<string, unknown>>(input: T): T;
6410
+ /** The concrete levers a look (and any explicit override) resolves to. */
6411
+ interface CaptionLookLevers {
6412
+ fontFamily?: SupportedFontName;
6413
+ fontWeight?: number;
6414
+ color?: string;
6415
+ backgroundColor?: string;
6416
+ strokeColor?: string;
6417
+ strokeWidth?: number;
6418
+ highlightColor?: string;
6419
+ uppercase?: boolean;
6420
+ }
6421
+ /** Outline width = 10% of font size (min 2px). `paint-order: stroke fill` puts
6422
+ * half the stroke OUTSIDE the glyph, so the visible rim is ~5% of font size. */
6423
+ declare function autoStrokeWidth(fontSize: number): number;
6424
+ /** Each look is a function of font size (so the outline tracks the text size). */
6425
+ declare const CAPTION_LOOKS: Record<CaptionLookId, (fontSize: number) => CaptionLookLevers>;
6426
+ /**
6427
+ * Resolve a look + explicit overrides into concrete levers. An explicit lever
6428
+ * always wins over the look; `strokeWidth: 0` explicitly means "no outline".
6429
+ * The plan then carries concrete levers only — nothing to resolve at render.
6430
+ */
6431
+ declare function resolveCaptionLook(look: CaptionLookId | undefined, explicit: CaptionLookLevers, fontSize: number): CaptionLookLevers;
6432
+ /**
6433
+ * Resolve the concrete render levers for a caption, applying the DEFAULT look the
6434
+ * way each STYLE expects: an unset `look` means `outline` on a kinetic style (the
6435
+ * TikTok/CapCut read) and `clean` on the static `subtitle` (the plain read — a
6436
+ * pinned neutral sans, no outline, no casing). So a subtitle that routes to
6437
+ * Remotion never inherits the outline house-style unless asked, AND is never left
6438
+ * with no face at all (which renders as headless Chrome's default serif). A named
6439
+ * look always wins; explicit levers override either. SINGLE SOURCE for the worker
6440
+ * top-level levers, the per-segment resolver, and the frontend config/preview
6441
+ * mirror, so the per-style default can't drift between them.
6442
+ */
6443
+ declare function resolveCaptionLevers(style: string | undefined | null, look: CaptionLookId | undefined, explicit: CaptionLookLevers, fontSize: number): CaptionLookLevers;
6444
+
6445
+ /**
6446
+ * Pre-run checks for the transcribe → captions chain.
6447
+ *
6448
+ * A transcription lane that cannot return per-word timings (`whisper`) still
6449
+ * RUNS and BILLS — it just hands back phrase segments with `words: []`. Anything
6450
+ * downstream that needs words then fails AFTER the transcription was paid for.
6451
+ * These helpers let every run surface (the editor's DAG, the backend
6452
+ * orchestrator, single-node Run) refuse BEFORE any spend, with one message.
6453
+ * Pure: no I/O, no framework types — callers pass plain nodes/edges.
6454
+ */
6455
+ /** The refusal for a lane that can't return word timings; `null` when it can.
6456
+ * An absent provider resolves to the transcribe NODE default. */
6457
+ declare function transcribeWordTimestampsRefusal(provider: string | null | undefined): string | null;
6458
+ interface PreflightGraphNode {
6459
+ readonly id: string;
6460
+ readonly type?: string | null;
6461
+ readonly data?: Record<string, unknown> | null;
6462
+ }
6463
+ interface PreflightGraphEdge {
6464
+ readonly source: string;
6465
+ readonly target: string;
6466
+ readonly sourceHandle?: string | null;
6467
+ readonly targetHandle?: string | null;
6468
+ }
6469
+ interface WordlessTranscriptFeed {
6470
+ readonly transcribeNodeId: string;
6471
+ /** The add-captions node that would receive a transcript with no words. */
6472
+ readonly consumerNodeId: string;
6473
+ readonly provider: string;
6474
+ readonly message: string;
6475
+ }
6476
+ /**
6477
+ * Every transcribe node on a word-INCAPABLE lane whose `json` output reaches an
6478
+ * add-captions `transcript` input — directly, or through apply-edl, which remaps
6479
+ * the transcript and re-emits it on its own `json` handle. add-captions rejects a
6480
+ * transcript with no words, so such a run can only fail, after paying for the
6481
+ * transcription. Skipped nodes are ignored on both ends.
6482
+ *
6483
+ * The engine is read from node data and nothing else can change it: `provider`
6484
+ * is not a mappable field on transcribe, so what this check sees IS what runs.
6485
+ * add-captions' own "transcript has no words" guard stays as defence in depth
6486
+ * for a transcript that arrives from anywhere other than a transcribe node.
6487
+ */
6488
+ declare function findWordlessTranscriptFeeds(nodes: readonly PreflightGraphNode[], edges: readonly PreflightGraphEdge[]): WordlessTranscriptFeed[];
5507
6489
 
5508
6490
  /**
5509
6491
  * i18n resolver + lazy loader for parameter-node picker labels/descriptions.
@@ -5722,6 +6704,8 @@ interface WorkflowExport {
5722
6704
  /** Present only when the bundle references media another instance cannot fetch. */
5723
6705
  portability?: WorkflowPortability;
5724
6706
  }
6707
+ /** Clear owner-bound references (credential / connection ids). Returns new node objects; inputs are not mutated. */
6708
+ declare function stripUnownedRefs(nodes: GenericNode[]): GenericNode[];
5725
6709
  /** Strip generated/transient content from nodes for template export. Returns new node objects; inputs are not mutated. */
5726
6710
  declare function stripExportContent(nodes: GenericNode[]): GenericNode[];
5727
6711
 
@@ -9589,6 +10573,102 @@ declare const FAN_OUT_EACH_TYPES: ReadonlySet<string>;
9589
10573
  */
9590
10574
  declare const SUNO_TRACK_SOURCE_TYPES: ReadonlySet<string>;
9591
10575
 
10576
+ /**
10577
+ * The Video URL node (`youtube-video`) and the social-video import path —
10578
+ * structural vocabulary shared by the canvas, the orchestrator and the
10579
+ * download routes. Host names and a node-output rule only; no prompt content.
10580
+ *
10581
+ * ONE list, three readers:
10582
+ * - the backend's yt-dlp routes (`lib/url-validator.ts` re-exports these),
10583
+ * where the list IS the SSRF gate — yt-dlp does its own DNS + HTTP, so
10584
+ * nothing but this exact-suffix match stands between a pasted link and an
10585
+ * internal address;
10586
+ * - the editor, which decides from the same list whether a pasted link is
10587
+ * one it should download (it must never offer a host the server refuses,
10588
+ * nor sit on one the server accepts);
10589
+ * - both workflow engines, which read a node's output through
10590
+ * `resolveVideoLinkOutput`.
10591
+ *
10592
+ * ⚠️ Adding a host here ADMITS it to a server-side fetch. It is a security
10593
+ * decision, not a UI one — only fixed, reputable domains whose DNS an attacker
10594
+ * cannot control.
10595
+ */
10596
+ declare const SOCIAL_VIDEO_HOSTS: readonly ["youtube.com", "youtu.be", "tiktok.com", "instagram.com", "twitter.com", "x.com", "facebook.com", "fb.watch", "fb.com"];
10597
+ /** YouTube-only subset (the metadata probe and the client ladder are YouTube-only). */
10598
+ declare const YOUTUBE_HOSTS: readonly ["youtube.com", "youtu.be"];
10599
+ /** Instagram-only subset (the download path's proxy failover is Instagram-scoped). */
10600
+ declare const INSTAGRAM_HOSTS: readonly ["instagram.com"];
10601
+ /**
10602
+ * Exact registrable-domain match against an allowlist: the domain itself or a
10603
+ * true subdomain (`www.youtube.com`, `m.youtu.be`). A host that merely
10604
+ * CONTAINS an allowlisted name (`evilyoutube.com`, `youtube.com.attacker.example`,
10605
+ * or `netflix.com` for `x.com`) does not match.
10606
+ */
10607
+ declare function hostnameMatchesAllowlist(hostname: string, domains: readonly string[]): boolean;
10608
+ /**
10609
+ * True when the RAW link carries a character that URL parsers read differently:
10610
+ * a backslash or an ASCII control character.
10611
+ *
10612
+ * Every check in this file parses the WHATWG way (Node, the browser), where a
10613
+ * backslash in an http(s) URL is a slash — `https://tiktok.com\@10.0.0.1/x` has
10614
+ * host `tiktok.com`. A parser that ends the authority at `/` alone reads the
10615
+ * same string as a user name at host `10.0.0.1`. The download tools are handed
10616
+ * the raw string and do their own parsing, DNS and HTTP, so a link the two
10617
+ * readings can disagree on is refused outright rather than reasoned about. Tabs
10618
+ * and newlines are dropped silently by one parser and kept by another — same
10619
+ * answer. No real video link contains any of these.
10620
+ */
10621
+ declare function hasUrlParserHazard(url: string): boolean;
10622
+ /** True for an http(s) URL whose host is on the allowlist. Never throws. */
10623
+ declare function isSocialVideoUrl(url: string, domains?: readonly string[]): boolean;
10624
+ type VideoLinkPlatform = "youtube" | "facebook" | "tiktok" | "instagram" | "twitter" | "unknown";
10625
+ /** Which supported platform a link belongs to — by exact host, never by substring. */
10626
+ declare function detectVideoLinkPlatform(url: string): VideoLinkPlatform;
10627
+ /**
10628
+ * Node types that can use a Video URL node WITHOUT its downloaded file, because
10629
+ * they never read the video: `suno-cover` and `transcribe` take the node's
10630
+ * separately-fetched audio track (`downloadedAudioUrl`), and `dubbing` hands the
10631
+ * page link to a provider that fetches it itself. A run whose only consumers of
10632
+ * a link are these must not be made to download — or to choose a part of — a
10633
+ * video nobody will look at. Structural vocabulary: it mirrors those three
10634
+ * server-side readers; add a type here only together with its reader.
10635
+ */
10636
+ declare const VIDEO_LINK_TOLERANT_CONSUMER_TYPES: ReadonlySet<string>;
10637
+ /**
10638
+ * The fields of a Video URL node's data that decide what it emits. Open-ended
10639
+ * on purpose: both engines hand over the node's whole `data` bag, and a closed
10640
+ * shape with only optional members would refuse it as having nothing in common.
10641
+ */
10642
+ interface VideoLinkNodeFields {
10643
+ readonly youtubeUrl?: unknown;
10644
+ readonly downloadedVideoUrl?: unknown;
10645
+ readonly downloadedFromUrl?: unknown;
10646
+ readonly [key: string]: unknown;
10647
+ }
10648
+ /**
10649
+ * The stored file that belongs to the node's CURRENT link, or undefined.
10650
+ *
10651
+ * `downloadedFromUrl` binds a file to the link it came from. The editor clears
10652
+ * the file whenever the link is edited, but a link can also change where no
10653
+ * editor is looking — an agent or an import rewriting the workflow JSON — and
10654
+ * without the binding the node would go on emitting the PREVIOUS video, which
10655
+ * is worse than emitting none. A node saved before the field existed has no
10656
+ * binding and is trusted as it always was.
10657
+ */
10658
+ declare function videoLinkDownloadedFile(data: VideoLinkNodeFields): string | undefined;
10659
+ /**
10660
+ * What a Video URL node emits on its `video` handle: the downloaded file when
10661
+ * one matches the link, else the link itself. The fallback is load-bearing — a
10662
+ * DIRECT file link (`https://cdn…/clip.mp4`) is a legitimate value of the URL
10663
+ * field and is never downloaded, so it must pass through.
10664
+ */
10665
+ declare function resolveVideoLinkOutput(data: VideoLinkNodeFields): string | undefined;
10666
+ /**
10667
+ * True when the node holds a social link with no file for it yet — the state
10668
+ * in which its output is a web PAGE, which no video consumer can read.
10669
+ */
10670
+ declare function videoLinkNeedsDownload(data: VideoLinkNodeFields): boolean;
10671
+
9592
10672
  /**
9593
10673
  * ElevenLabs speech-to-speech (voice changer) models — single source of truth
9594
10674
  * for the Voice Changer node's model picker (frontend config panel) AND the
@@ -10304,21 +11384,6 @@ declare const AUDIO_FX_PRESET_LABELS: Record<AudioFxPreset, string>;
10304
11384
  /** Presets that apply convolution reverb (afir + inline-synth IR). */
10305
11385
  declare const AUDIO_FX_REVERB_PRESETS: ReadonlySet<AudioFxPreset>;
10306
11386
 
10307
- /**
10308
- * Canonical list of font display names supported by the Remotion renderer.
10309
- *
10310
- * Single source of truth shared by:
10311
- * - the backend Zod schemas (`z.enum(SUPPORTED_FONT_NAMES)`), which CANNOT
10312
- * import `@nodaro/remotion` (its font-registry pulls the render runtime +
10313
- * `@remotion/google-fonts` side-effects into a validation path), and
10314
- * - `packages/remotion/src/lib/font-registry.ts`, which loads each face and
10315
- * is kept in lock-step with this tuple by a compile-time `satisfies` guard.
10316
- *
10317
- * Order/spelling MUST match the keys of the `fonts` object in font-registry.ts.
10318
- */
10319
- declare const SUPPORTED_FONT_NAMES: readonly ["Inter", "Roboto", "Open Sans", "Montserrat", "Poppins", "Raleway", "Nunito", "Lato", "Playfair Display", "Merriweather", "Lora", "EB Garamond", "Bebas Neue", "Oswald", "Anton", "Dancing Script", "Pacifico", "Caveat", "Roboto Mono", "Fira Code", "Rubik", "Heebo", "Cairo", "Tajawal"];
10320
- type SupportedFontName = (typeof SUPPORTED_FONT_NAMES)[number];
10321
-
10322
11387
  /**
10323
11388
  * Image Overlay — the layer KINDS a node can carry beyond a wired image, and
10324
11389
  * the wire contract for each. Shared by the route's Zod, the MCP tool, the
@@ -10671,7 +11736,10 @@ declare const AGGREGATE_LANE_SOURCE_TYPES: ReadonlySet<string>;
10671
11736
  * type for every `(type, handle)` pair EXCEPT:
10672
11737
  * - an entity `image` handle → `"upload-image"` (a plain image producer);
10673
11738
  * - an aggregate (group / collect) lane handle → the plain producer of that
10674
- * lane's media type (see AGGREGATE_LANE_EFFECTIVE_TYPE).
11739
+ * lane's media type (see AGGREGATE_LANE_EFFECTIVE_TYPE);
11740
+ * - a Meta Ads `text` / `image` / `video` handle → the plain producer of
11741
+ * that type (see META_ADS_HANDLE_EFFECTIVE_TYPE); its `json` handle keeps
11742
+ * the raw type.
10675
11743
  * Pure — safe for both frontend and backend.
10676
11744
  */
10677
11745
  declare function resolveEffectiveSourceType(rawSourceType: string | undefined | null, sourceHandleId: string | undefined | null): string;
@@ -10971,8 +12039,13 @@ declare const entitySlotSchema: z.ZodObject<{
10971
12039
  description: z.ZodString;
10972
12040
  refImageUrl: z.ZodOptional<z.ZodString>;
10973
12041
  }, z.core.$strip>>>;
12042
+ owner: z.ZodOptional<z.ZodObject<{
12043
+ slotId: z.ZodString;
12044
+ relation: z.ZodString;
12045
+ }, z.core.$strip>>;
10974
12046
  }, z.core.$strip>;
10975
12047
  type EntitySlot = z.infer<typeof entitySlotSchema>;
12048
+ type EntitySlotOwner = NonNullable<EntitySlot["owner"]>;
10976
12049
  /**
10977
12050
  * The sound LAYER vocabulary — what kind of thing this layer is.
10978
12051
  *
@@ -11019,12 +12092,12 @@ declare const windowSceneSchema: z.ZodObject<{
11019
12092
  "eye-level": "eye-level";
11020
12093
  high: "high";
11021
12094
  low: "low";
12095
+ profile: "profile";
11022
12096
  pov: "pov";
11023
12097
  dutch: "dutch";
11024
12098
  overhead: "overhead";
11025
12099
  "worms-eye": "worms-eye";
11026
12100
  "over-the-shoulder": "over-the-shoulder";
11027
- profile: "profile";
11028
12101
  "from-behind": "from-behind";
11029
12102
  }>>;
11030
12103
  speed: z.ZodOptional<z.ZodEnum<{
@@ -11134,6 +12207,10 @@ declare const windowAnalysisSchema: z.ZodObject<{
11134
12207
  description: z.ZodString;
11135
12208
  refImageUrl: z.ZodOptional<z.ZodString>;
11136
12209
  }, z.core.$strip>>>;
12210
+ owner: z.ZodOptional<z.ZodObject<{
12211
+ slotId: z.ZodString;
12212
+ relation: z.ZodString;
12213
+ }, z.core.$strip>>;
11137
12214
  }, z.core.$strip>>;
11138
12215
  scenes: z.ZodArray<z.ZodObject<{
11139
12216
  startSec: z.ZodNumber;
@@ -11145,12 +12222,12 @@ declare const windowAnalysisSchema: z.ZodObject<{
11145
12222
  "eye-level": "eye-level";
11146
12223
  high: "high";
11147
12224
  low: "low";
12225
+ profile: "profile";
11148
12226
  pov: "pov";
11149
12227
  dutch: "dutch";
11150
12228
  overhead: "overhead";
11151
12229
  "worms-eye": "worms-eye";
11152
12230
  "over-the-shoulder": "over-the-shoulder";
11153
- profile: "profile";
11154
12231
  "from-behind": "from-behind";
11155
12232
  }>>;
11156
12233
  speed: z.ZodOptional<z.ZodEnum<{
@@ -11236,12 +12313,12 @@ declare const analyzedSceneSchema: z.ZodObject<{
11236
12313
  "eye-level": "eye-level";
11237
12314
  high: "high";
11238
12315
  low: "low";
12316
+ profile: "profile";
11239
12317
  pov: "pov";
11240
12318
  dutch: "dutch";
11241
12319
  overhead: "overhead";
11242
12320
  "worms-eye": "worms-eye";
11243
12321
  "over-the-shoulder": "over-the-shoulder";
11244
- profile: "profile";
11245
12322
  "from-behind": "from-behind";
11246
12323
  }>>;
11247
12324
  speed: z.ZodOptional<z.ZodEnum<{
@@ -11361,6 +12438,10 @@ declare const videoAnalysisResultSchema: z.ZodObject<{
11361
12438
  description: z.ZodString;
11362
12439
  refImageUrl: z.ZodOptional<z.ZodString>;
11363
12440
  }, z.core.$strip>>>;
12441
+ owner: z.ZodOptional<z.ZodObject<{
12442
+ slotId: z.ZodString;
12443
+ relation: z.ZodString;
12444
+ }, z.core.$strip>>;
11364
12445
  }, z.core.$strip>>;
11365
12446
  scenes: z.ZodArray<z.ZodObject<{
11366
12447
  startSec: z.ZodNumber;
@@ -11372,12 +12453,12 @@ declare const videoAnalysisResultSchema: z.ZodObject<{
11372
12453
  "eye-level": "eye-level";
11373
12454
  high: "high";
11374
12455
  low: "low";
12456
+ profile: "profile";
11375
12457
  pov: "pov";
11376
12458
  dutch: "dutch";
11377
12459
  overhead: "overhead";
11378
12460
  "worms-eye": "worms-eye";
11379
12461
  "over-the-shoulder": "over-the-shoulder";
11380
- profile: "profile";
11381
12462
  "from-behind": "from-behind";
11382
12463
  }>>;
11383
12464
  speed: z.ZodOptional<z.ZodEnum<{
@@ -11810,6 +12891,26 @@ interface HintGraphContext {
11810
12891
  readonly edges: ReadonlyArray<HintEdgeLike>;
11811
12892
  }
11812
12893
 
12894
+ /** Structural public catalog API metadata. Authored values remain in @nodaro/prompts. */
12895
+ interface CharacterMotionMetadata {
12896
+ /** Search terms, including previous display names. IDs remain stable. */
12897
+ readonly aliases?: readonly string[];
12898
+ /** Hidden from new choices; saved workflows still resolve this entry. */
12899
+ readonly deprecated?: true;
12900
+ readonly replacementId?: string;
12901
+ /** Authored prerequisites; omission is unknown, never a compatibility claim. */
12902
+ readonly requires?: readonly string[];
12903
+ readonly startPose?: "standing" | "seated" | "floor" | "any";
12904
+ readonly endPose?: "standing" | "seated" | "floor" | "any";
12905
+ readonly endVisibility?: "in-frame" | "out-of-frame";
12906
+ readonly handsAfter?: "free" | "occupied" | "holding-partner";
12907
+ readonly needsFreeHands?: true;
12908
+ readonly kind?: "single" | "compound";
12909
+ readonly fixedPace?: true;
12910
+ /** Non-human/dependent recipient substituted through the Partner handle. */
12911
+ readonly counterpart?: string;
12912
+ }
12913
+
11813
12914
  /**
11814
12915
  * Tag-free, policy-free wire shape for the `GET /v1/catalogs` projection — the
11815
12916
  * server-driven, pack-composed catalog view thin clients render their own
@@ -11833,6 +12934,8 @@ interface ProjectedCatalogOption {
11833
12934
  */
11834
12935
  term?: string;
11835
12936
  icon?: string;
12937
+ /** Authored Character Motion prerequisites and sequence state. Missing means unknown. */
12938
+ motion?: CharacterMotionMetadata;
11836
12939
  }
11837
12940
  interface ProjectedCatalogDimension {
11838
12941
  field: string;
@@ -16751,4 +17854,648 @@ declare function resolveScene3DAuthoringEngine(input: Scene3DEngineChoiceInput):
16751
17854
  /** v1's version constant, re-exported for callers narrowing a plan by hand. */
16752
17855
  declare const SCENE3D_BASIC_SCHEMA_VERSION = 1;
16753
17856
 
16754
- export { ACCESS_LEVELS, ACTIVE_SCENE_HELPERS, ADVANCED_MODE_UNAVAILABLE_REASON, AGGREGATEABLE_TYPES, AGGREGATE_LANE_SOURCE_TYPES, AI_AVATAR_DURATION_BUCKETS, AI_AVATAR_MAX_AUDIO_SEC, AI_AVATAR_MAX_DURATION_SEC, AI_AVATAR_RESERVE_IDS, AI_WRITER_PROVIDERS, ALA_CARTE_BOARDS, ALL_CAPTION_STYLES, ANIMALS, ANIMAL_SUBCATEGORY_LABELS, ANIMAL_SUBCATEGORY_ORDER, ASPECT_RATIO_DIMENSIONS, AUDIO_ADDON_PROVIDERS, AUDIO_CROSSFADE_CURVES, AUDIO_CROSSFADE_CURVE_IDS, AUDIO_FX_PRESETS, AUDIO_FX_PRESET_LABELS, AUDIO_FX_PRESET_SET, AUDIO_FX_REVERB_PRESETS, AUDIO_PRODUCER_TYPES, type AccessLevel, type AddBRollResult, AddBRollResultSchema, type AggregateableType, type AggregationBuckets, type AiAvatarDurationBucket, type AiAvatarEngine, type AiAvatarResolution, type AiWriterProvider, type AlaCarteBoard, type AnalyzedScene, type AnchorSceneStyleResult, AnchorSceneStyleResultSchema, type Animal, type AnimalSubcategory, type AssetRef, AssetRefSchema, type AudioCrossfadeCurve, type AudioFxPreset, type AudioLayer, type AuditImagesResult, AuditImagesResultSchema, type AuditImagesShotEntry, AuditImagesShotEntrySchema, AuditPromptIssueSchema, type AuditPromptResult, AuditPromptResultSchema, AvatarPayloadError, BOARD_TO_ASSET_TYPE, BOARD_TO_COLUMN, BOARD_VARIANTS, type BoardEntityKind, type BoardPromptContext, type BoardTemplate, BridgeToNextSceneInputSchema, type BridgeToNextSceneResult, BridgeToNextSceneResultSchema, type BrowseCommunityParams, type BrowseCommunityResult, CATEGORY_DURATION_DEFAULTS, CHARACTER_ASPECT_DEFAULTS, CHARACTER_ASPECT_OPTIONS, CHARACTER_ASSET_TYPES, CHARACTER_ASSET_VARIANTS, CHARACTER_ATTACH_COLUMNS, CHARACTER_FACETS, CHARACTER_FACET_IDS, CHARACTER_LORA_TRAINING_JOB_TYPE, CHARACTER_MOTION_PROVIDERS, CHARACTER_PICKER_DISPLAY_ORDER, CHARACTER_REFERENCE_PHOTO_KINDS, CHARACTER_STYLES, CHARACTER_VARIANT_ASSET_BUCKETS, CHAT_ENABLED_STAGES, CHAT_STAGES, CHAT_TURN_CAPS, CHAT_WIRED_STAGES, CINEMATIC_DEFAULT_DURATION_SEC, CINEMATIC_DEFAULT_RESOLUTION, CINEMATIC_MAX_DURATION_SEC, CINEMATIC_MAX_LOOKS, CINEMATIC_MAX_REFERENCE_IMAGES, CINEMATIC_MAX_REFERENCE_VIDEOS, CINEMATIC_MIN_DURATION_SEC, CINEMATIC_MIN_LOOKS, CINEMATIC_PROMPT_MAX, CINEMATIC_RESERVE_IDS, COLLABORATOR_ROLES, COLLECT_IN_HANDLE, COMBINE_TRANSITIONS, COMBINE_TRANSITION_GROUP_LABELS, COMBINE_TRANSITION_GROUP_ORDER, COMBINE_TRANSITION_IDS, COMPOSER_PLAN_FIELDS, COMPOSER_PLAN_MAP, CONTENT_TYPES_BY_PLATFORM, CREATURE_ATTACH_COLUMNS, CREDIT_BASE_USD, CREDIT_ROUNDING_RESOLUTION, type CaptionStyle, type CastCoverageCriticVerdict, CastCoverageCriticVerdictSchema, type CharacterAspectRatio, type CharacterAssetType, type CharacterAssetTypeForAspect, type CharacterAttachColumn, type CharacterDef, type CharacterFacet, type CharacterImageCriticVerdict, CharacterImageCriticVerdictSchema, type CharacterLoraFields, type CharacterMentionTokenInfo, CharacterMetadataSchema, type CharacterMotionProvider, type CharacterReferencePhoto, type CharacterReferencePhotoKind, type CharacterVariantAssetBucket, type CharacterVariantAssetItem, type CharacterVoiceSpec, type ChatEnabledStage, type ChatTurnResponse, ChatTurnResponseSchema, type CinematicResolution, type ClipLook, type CloneListingResult, type CollaboratorRole, type CombineTransition, type CombineTransitionGroup, type CombineVideosEstimatorInput, type CommunityCard, type CommunityEntityType, type CommunityFullDetail, type CommunityReportReason, type CommunitySort, type ComponentHandle, type ComponentMetadata, type ConnectedReference, type CreatureAttachColumn, CriticIssueSchema, type CustomEntry, DEFAULT_AUDIO_CROSSFADE_CURVE_ID, DEFAULT_CARRIED_FRACTION, DEFAULT_CHARACTER_ANGLE_COUNT, DEFAULT_CHARACTER_EXPRESSION_COUNT, DEFAULT_CHARACTER_FACET, DEFAULT_LABEL_BY_SOURCE, DEFAULT_LOCATION_USAGE_MODE, DEFAULT_OVERLAY_QR, DEFAULT_OVERLAY_SHAPE, DEFAULT_OVERLAY_TEXT, DEFAULT_PANEL_COUNT, DEFAULT_REF_IMAGE_MAX, DEFAULT_SECTIONS, DEFAULT_SUNO_MODEL, DEFAULT_TEMPLATE_CATEGORY, DEFAULT_USAGE_MODE, DEFAULT_VIDEO_ANALYSIS_MODEL, DEFAULT_VIDEO_ANALYSIS_TIER, DEFAULT_VIDEO_CLIP_COST, DEFAULT_VIDEO_DURATION_SEC, DEFAULT_VIDEO_PROVIDER, DEFAULT_VOICE_CHANGER_MODEL, DEFAULT_VOICE_DESIGN_MODEL, DETAIL_VARIANTS, DURATION_PRICED_PROVIDERS, DYNAMIC_PRODUCER_TYPES, type DescribedReference, type DetectionResult, DetectionResultSchema, type DialogueLine, EFFORT_TIER_BUMP, EMOTIONAL_BEAT, ENTITY_ASPECT_DEFAULTS, ENTITY_BUCKET_FIELDS, ENTITY_DB_ID_FIELD, ENTITY_IMAGE_HANDLE_TYPES, ENTITY_KIND_SCALAR_FIELDS, ENTITY_NAME_FIELD, ENTITY_NODE_KINDS, ENTITY_SCALAR_FIELDS, ENTITY_SECTIONS, ENTITY_STATUSES, ENTITY_TABLE, ENTITY_TOOL_RETRY_CAP, ENTITY_TYPES, EXECUTION_DATA_KEYS, EXECUTION_GRAPH_COMPOSED_PARAMETER_TYPES, EXTEND_VIDEO_PROVIDERS, type EntityKind, type EntityMentionTokenInfo, type EntityMetadata, EntityMetadataSchema, type EntityNodeKind, type EntityReferenceInput, type EntityRejectInput, EntityRejectInputSchema, type EntitySlot, type EntityStaleEvent, EntityStaleEventSchema, type EntityStateChangeEvent, EntityStateChangeEventSchema, type EntityStatus, type EntityStudioKind, type EntityStyle, type EntityType, type EvaluateConditionOptions, type ExportedPreset, type ExposableField, type ExposableOutput, type ExposedSetting, type ExtendVideoProvider, type ExtraRefCharacterContext, type ExtraRefInput, FACE_SWAP_PROVIDERS, FAL_LIP_SYNC_PROVIDERS, FAN_OUT_EACH_TYPES, FEATURED_ENTITIES, FILM_BASE_CREDITS, FLEXIBLE_INPUT_LIP_SYNC_PROVIDERS, FLUX2_RES_MP, FLUX_LORA_CHARACTER_MODEL_ID, FRAME_MODE_ADAPTIVE_ONLY_ASPECT, FRAME_TARGET_HANDLES, FREECUT_EXPORT_COMPLETE, FREECUT_EXPORT_PROGRESS, FREECUT_READY, FREECUT_REQUEST_IMPORT, FURNITURE, FURNITURE_SUBCATEGORY_LABELS, FURNITURE_SUBCATEGORY_ORDER, type FaceSwapProvider, type FavoriteListingResult, type FeaturedEntity, type FilmCreditEstimate, type FilterListCondition, type FilterListOperator, type FilterOperator, type FixContinuityInput, FixContinuityInputSchema, type FixContinuityResult, FixContinuityResultSchema, type Flux2Model, type FreecutExportCompletePayload, type FreecutExportProgressPayload, type FreecutImportFile, type FreecutRequestImportPayload, type FullSelectorMode, type Furniture, type FurnitureSubcategory, GEMINI_OMNI_PROVIDERS, GENERATE_TEXT_DELIMITER, GLOBAL_MAX_DURATION_SECONDS, GRANTED_ACCESS, GROUP_HANDLE_PREFIX, GUIDANCE_SCALE_SUPPORT, GVP_ANCHOR_CHOICES, GVP_DEFAULT_PROVIDER, GVP_END_FRAME_PROVIDERS, GVP_EXTEND_PROVIDERS, GVP_SUPPORTED_PROVIDERS, GenerateMotionInputSchema, type GenerateMotionResult, GenerateMotionResultSchema, type GenericEdge, type GenericNode, type GrantedAccess, type GvpAnchorChoice, type GvpAnchorWireMode, HANDLE_PORT_SEPARATOR, HELPERS_SHIPPED_IN_1B3, HIGH_QUALITY_PROVIDERS, HINT_EXEMPT_PARAMETER_TYPES, type HintEdgeLike, type HintGraphContext, type HintNodeLike, type I18nCatalogId, I2I_MASK_SUPPORT, I2I_STRENGTH_SUPPORT, IDEOGRAM_PROVIDERS, IMAGE_ASPECT_RATIO_VALUES, IMAGE_CRITIC_LEAF_MODES, IMAGE_CRITIC_MAX_RETRIES, IMAGE_CRITIC_METADATA_KEYS, IMAGE_CRITIC_MIN_ADHERENCE_SCORE, IMAGE_CRITIC_MODES, IMAGE_CRITIC_UNRESOLVABLE, IMAGE_EDIT_PROVIDERS, IMAGE_GEN_PROVIDERS, IMAGE_I2I_PROVIDERS, IMAGE_MASK_MODE, IMAGE_OVERLAY_BASE_CREDITS, IMAGE_OVERLAY_VARIANT_CREDITS, IMAGE_PROMPT_MAX, IMAGE_REF_TYPES, IMAGE_TO_VIDEO_PROVIDERS, INPUT_FIELD_MAP, INPUT_NODE_TYPES, INSTAGRAM_CAROUSEL_MAX_ITEMS, INSTAGRAM_CAROUSEL_MIN_ITEMS, ITER_CLONE_PATTERN, type IdentityFidelity, type IdentityMeta, type ImageAspectRatio, type ImageCriticIssue, ImageCriticIssueSchema, type ImageCriticLeafMode, type ImageCriticMetadataKey, type ImageCriticMode, type ImageCriticNodeIssue, type ImageCriticResult, ImageCriticResultSchema, type ImageCriticVerdict, ImageCriticVerdictSchema, type ImageEditProvider, type ImageGenProvider, type ImageI2IProvider, type ImageMaskMode, type ImageMentionTokenInfo, type ImageToVideoProvider, type ImprovePromptInput, ImprovePromptInputSchema, type ImprovePromptResult, ImprovePromptResultSchema, type InputFieldSchema, type InvitationDelivery, type InvitationPreview, type InvitationState, type InvitationView, type JoinCodeView, type JsonEvalResult, type JsonFilter, type JsonPatch, KEYFRAME_CREDITS_PER_SHOT, KINETIC_CAPTION_STYLES, type KieApiFormat, type KineticCaptionStyle, LANGUAGES, LEGACY_LOTTIE_HOST_REMAP, LEGACY_TEMPLATE_CATEGORIES, LIP_SYNC_DURATION_BUCKETS, LIP_SYNC_MAX_AUDIO_SECONDS, LIP_SYNC_PROVIDERS, LLM_FEATURE_DEFAULTS, LLM_MODALITY_CAPS, LLM_MODELS, LLM_MODEL_IDS, LLM_REASONING_EFFORTS, LLM_ROUTE_DEFAULTS, LLM_TEXT_INPUT_MAX, LLM_VENDOR_LABELS, LLM_VENDOR_ORDER, LOCATION_ASSET_TYPES, LOCATION_ASSET_VARIANTS, LOCATION_ATMOSPHERE_PROVIDERS, LOCATION_ATTACH_COLUMNS, LOCATION_BUCKET_TO_CATALOG_ID, LOCATION_PRESET_TO_CATALOG, LOCATION_REFERENCE_PHOTO_KINDS, LOCATION_REFERENCE_PHOTO_KIND_LABELS, LOCATION_USAGE_MODES, LOTTIE_OVERLAY_CATALOG, LOTTIE_SLOT_FIELD_PREFIX, type LabeledOption, type LipSyncDurationBucket, type LipSyncProvider, type LlmFeature, type LlmModelDef, type LlmModelGroup, type LlmReasoningEffort, type LlmRouteDefaults, type LlmTier, type LlmVendor, type LocaleCatalogMap, type LocaleDirection, type LocaleId, type LocationAssetType, type LocationAtmosphereProvider, type LocationAttachColumn, type LocationCatalogRef, type LocationImageCriticVerdict, LocationImageCriticVerdictSchema, type LocationMentionTokenInfo, LocationMetadataSchema, type LocationReferencePhotoKind, type LocationUsageMode, LocationsCoverageCriticIssueSchema, type LocationsCoverageCriticVerdict, LocationsCoverageCriticVerdictSchema, type LoopTrimEstimatorInput, type LoopVideoEstimatorInput, type LoraEligibleRef, type LoraRouting, type LottieOverlayCatalogEntry, type LottieSlotField, MAX_CUSTOM_ENTRIES_PER_BOARD, MAX_IMAGE_PROMPT_CHARS_BY_PROVIDER, MAX_LOCATION_VARIANTS, MAX_NEGATIVE_PROMPT_CHARS_BY_PROVIDER, MAX_PANELS_PER_SHEET, MAX_TTS_CHARS_BY_PROVIDER, MAX_VIDEO_PROMPT_CHARS_BY_PROVIDER, MEMBER_STATUSES, MINIMAX_H3_DEFAULT_RESOLUTION, MINIMAX_H3_PROVIDERS, MODELS_WITH_REFERENCE_IMAGE_SUPPORT, MODEL_CATALOG, MODEL_KINDS, MODEL_PARAM_NODE_TYPES, MODEL_RECOMMENDATIONS, MODIFY_IMAGE_PROVIDERS, MOTION_COLUMN, MOTION_TRANSFER_PROVIDERS, MUSIC_PROVIDERS, type MaskRegionDescriptor, type MatchCutVerdict, MatchCutVerdictSchema, type MeOrganizations, type Member, type MemberStatus, type MinimalEdge, type MinimalNode, type ModelCatalogEntry, type ModelInputAdjustment, type ModelKind, type ModelMenuOption, type ModelMode, type ModelNodeTarget, type ModelPromptingStyle, type ModelRecommendation, type ModelTreeLine, type ModelTreeVariant, type ModelValidationIssue, type ModifyImageProvider, type MotionTransferProviderType, type MusicProvider, NATIVE_ADAPTIVE_ASPECT, NATIVE_NEGATIVE_PROMPT_MODELS, NATIVE_NEGATIVE_VIDEO_PROVIDERS, NEGATIVE_PROMPT_MAX, NODARO_IMPORT_FILES, NODARO_LOAD_TIMELINE, NODARO_LOAD_VIDEO, NODARO_RESET_PROJECT, NODE_DEFAULT_TYPES, NODE_MAPPABLE_FIELDS, NODE_PRESET_EXPORT_KIND, NODE_REF_PATTERN, NON_EN_LOCALE_IDS, NO_SPLIT_DELIMITER, type NodaroLoadTimelinePayload, type NodaroLoadVideoPayload, type NodeDefaultType, type NodeExecutionStateWire, type NodeExecutionStatus, type NodeParamAdjustment, type NodePresetExport, type NormalizedImageGen, type NormalizedModelInput, type NormalizedNodes, type NormalizedVideoRequest, OBJECT_ASPECT_DEFAULTS, OBJECT_ASPECT_OPTIONS, OBJECT_ASSET_TYPES, OBJECT_ASSET_VARIANTS, OBJECT_ATTACH_COLUMNS, OBJECT_MOTION_PROVIDERS, OBJECT_PICKER_NODE_TYPES, ORG_ERROR_CODES, ORG_KINDS, ORG_ROLES, ORG_STATUSES, OUTPUT_BEARING_NODE_STATUSES, OUTPUT_FIELD_MAP, OUTPUT_FORMATS, OVERLAY_ANCHORS, OVERLAY_FONTS, OVERLAY_FONT_IDS, OVERLAY_IMAGE_MASKS, OVERLAY_LAYER_KINDS, OVERLAY_MAX_VARIANTS, OVERLAY_PLATFORMS, OVERLAY_PLATFORM_IDS, OVERLAY_SHAPES, OVERLAY_TEXT_ALIGNS, OVERLAY_VARIANT_HANDLE_PREFIX, type ObjectAspectRatio, type ObjectAssetType, type ObjectAssetTypeForAspect, type ObjectAttachColumn, ObjectMetadataSchema, type ObjectMotionProvider, type ObjectsValidationIssue, type ObjectsValidationResult, OptimizeForModelInputSchema, type OptimizeForModelResult, OptimizeForModelResultSchema, type OrgAuditEntry, type OrgErrorCode, type OrgKind, type OrgMemberView, type OrgPage, type OrgRole, type OrgSettings, OrgSettingsSchema, type OrgStatus, type OrganizationSummary, type OrganizationView, type OutputFormat, type OutputMode, type OutputType, type OverlayAnchor, type OverlayFontId, type OverlayImageEffects, type OverlayImageMask, type OverlayLayerKind, type OverlayPlatformId, type OverlayPlatformPreset, type OverlayPlatformZone, type OverlayQrStyle, type OverlayShape, type OverlayShapeElement, type OverlayShapeStyle, type OverlayTextAlign, type OverlayTextStyle, PARAMETER_NODE_TYPES, PASSTHROUGH_TYPES, PAYG_RETENTION_DAYS, PER_FORMAT_DURATION_BOUNDS, PICKER_TO_COMBINE_TRANSITION, PIPELINE_ACTIVATION_MODES, PIPELINE_FORMATS, PIPELINE_HARD_TIMEOUT_MS, PIPELINE_MODEL_STAGES, PIPELINE_MODES, PIPELINE_OUTPUT_RESOLUTIONS, PIPELINE_PINNABLE_IMAGE_MODELS, PIPELINE_PINNABLE_SCRIPT_LLMS, PIPELINE_PINNABLE_VIDEO_MODELS, PIPELINE_STAGE_NAMES, PIPELINE_STAGE_TIMEOUT_MS, PIPELINE_TYPES, PLACEHOLDER_CHARACTER_NAME, PLATFORM_LABELS, PLATFORM_SPECS, PRESET_APPLY_CLEAR_KEYS, PRESET_EXCLUDED_KEYS, PRESET_LABELS, PRESET_SETTING_KEYS, PRICING_DEFAULT_DURATION_SEC, PRICING_DEFAULT_RESOLUTION, PRO3D_RENDER_ASPECT_RATIOS, PRO3D_RENDER_CREDIT_ID, PRO3D_RENDER_DEFAULT_ENGINE, PRO3D_RENDER_DEFAULT_QUALITY, PRO3D_RENDER_DEFAULT_REPAIR_PASSES, PRO3D_RENDER_DEFAULT_STYLE, PRO3D_RENDER_ENGINES, PRO3D_RENDER_LABEL, PRO3D_RENDER_LIMITS, PRO3D_RENDER_MAX_REPAIR_PASSES, PRO3D_RENDER_MIN_REPAIR_PASSES, PRO3D_RENDER_NODE_TYPE, PRO3D_RENDER_PROMPT_MAX, PRO3D_RENDER_QUALITY_PROFILES, PRO3D_RENDER_SOURCE_KINDS, PRO3D_RENDER_STYLES, PROMPT_HARD_CEILING, PROMPT_PREFIX_KEY, PROMPT_SUFFIX_KEY, PROVIDER_DIRECTIVE_DEFAULTS, PROVIDER_PLACEHOLDER_PREFIX, type PanelGenRequest, type PanelRequest, type PanelSource, type PipelineActivationMode, type PipelineCompletedEvent, PipelineCompletedEventSchema, type PipelineConfig, PipelineConfigSchema, type PipelineDriftSummary, PipelineDriftSummarySchema, type PipelineEditorDecisionsReadyEvent, PipelineEditorDecisionsReadyEventSchema, type PipelineEvent, type PipelineForkedEvent, PipelineForkedEventSchema, type PipelineFormat, type PipelineInput, PipelineInputSchema, type PipelineLifecycleEvent, type PipelineMode, type PipelineModelStage, type PipelineMusicReadyEvent, PipelineMusicReadyEventSchema, type PipelineOutputResolution, type PipelinePinnableImageModel, type PipelinePinnableScriptLlm, type PipelinePinnableVideoModel, type PipelineStageName, PipelineStageNameSchema, type PipelineStageStatus, PipelineStageStatusSchema, type PipelineState, PipelineStateSchema, type PipelineStatus, PipelineStatusSchema, type PipelineType, type PixelBox, type PresentationItem, type PresetEntry, type PresetSettingKey, type PresetSettings, PresetSettingsSchema, type PriceVariant, type PricedVideoSelection, type Pro3DRenderAspectRatio, type Pro3DRenderCapabilities, type Pro3DRenderEngine, type Pro3DRenderJobOutput, type Pro3DRenderLocalExportSource, type Pro3DRenderPromptSource, type Pro3DRenderQuality, type Pro3DRenderQuote, type Pro3DRenderQuoteLine, type Pro3DRenderResultMetadata, type Pro3DRenderSceneSource, type Pro3DRenderShotStill, type Pro3DRenderSource, type Pro3DRenderSourceInput, type Pro3DRenderSourceKind, type Pro3DRenderSourceResult, type Pro3DRenderStyle, type Pro3DRenderValidationWarning, type ProgressSegment, type ProjectedCatalog, type ProjectedCatalogDimension, type ProjectedCatalogOption, type PromptAffixFields, type PromptAffixes, type ProposedChange, type PublishListingParams, type PublishListingResult, QA_CHECK_PROVIDERS, type QaCheckProvider, type QualityLevel, REDUCE_STRATEGIES, REDUCE_STRATEGY_IDS, REFERENCE_BOARD_PROVIDERS, REFERENCE_BOARD_TEMPLATES, REFERENCE_HANDLE_MAP, REFERENCE_ROLE_PRESETS, REF_HANDLE_CATEGORY, REF_IMAGE_MAX_LIMITS, REF_TOKEN_NAMESPACE_PREFIXES, RENDERING_SPEED_SUPPORT, RENDER_VIDEO_CREDIT_ID, REPEATABLE_NODE_TYPES, REPEAT_PLACEHOLDER, REPLICATE_LIP_SYNC_PROVIDERS, RESERVED_TEMPLATE_VARS, type ReduceMeta, type ReduceStrategy, type ReduceStrategyId, type RefCandidate, type RefModalityEdge, type RefTokenKind, type RefVideoDurationLimit, type ReferenceBoardProvider, type ReferenceModality, type ReferenceSheet, type ReferenceSource, type ReportListingResult, type ResolveCharacterAspectOptions, type ResolveObjectAspectOptions, type ResolveSeparatorOptions, type ResolvedDialogueVoiceLine, type RouterConditionGroup, SCENE3D_ASSERTION_RESTORED_CODE, SCENE3D_ASSET_KINDS, SCENE3D_ASSET_ROLES, SCENE3D_ASSET_ROLE_KINDS, SCENE3D_AUTHORING_ASSUMPTION_CODE, SCENE3D_AUTHORING_ENGINES, SCENE3D_BASIC_ENGINE, SCENE3D_BASIC_SCHEMA_VERSION, SCENE3D_CAMERA_TRACK_FORMAT, SCENE3D_CAMERA_TRACK_LIMITS, SCENE3D_CAMERA_TRACK_VERSION, SCENE3D_CLAY_LIGHTING_PRESETS, SCENE3D_DEFAULT_ADVANCED_ENGINE, SCENE3D_DEFAULT_DURATION_SECONDS, SCENE3D_DEFAULT_ENTITY_CAPABILITIES, SCENE3D_DEFAULT_FPS, SCENE3D_EDIT_NODE_TYPE, SCENE3D_ENTITY_CAPABILITIES, SCENE3D_ENTITY_ROLES, SCENE3D_GENERATE_NODE_TYPE, SCENE3D_GLB_EXTRAS_ALLOWLIST, SCENE3D_GLB_EXTRAS_ENTITY_ID, SCENE3D_GLB_EXTRAS_MATERIAL_ROLE, SCENE3D_GLB_EXTRAS_SUBPART_ID, SCENE3D_LIMITS, SCENE3D_PLAN_FIELD, SCENE3D_PLAN_TYPE, SCENE3D_PRIMITIVES, SCENE3D_PRIMITIVE_MATERIAL_ROLE, SCENE3D_REMEDY_AUTO_APPLIED_CODE, SCENE3D_RENDERER_ASSET_KINDS, SCENE3D_RENDER_BASE_MAX_PX, SCENE3D_RENDER_TIERS, SCENE3D_RENDER_TIER_MULTIPLIERS, SCENE3D_RENDER_XLARGE_MIN_AREA_PX, SCENE3D_REVIEW_REFUSED_CODE, SCENE3D_REVIEW_UNAVAILABLE_CODE, SCENE3D_REVIEW_UNAVAILABLE_REASONS, SCENE3D_SCHEMA_VERSION, SCENE3D_SCHEMA_VERSION_V2, SCENE3D_SUPPORTED_SCHEMA_VERSIONS, SCENE3D_V2_CONTENT_HASH_EXCLUDED, SCENE3D_V2_ENGINES, SCENE3D_V2_LIMITS, SCENE3D_V2_OVERRIDE_OPERATION_VERSION, SCENE3D_V2_PRIMITIVES, SCENE_HELPER_NAMES, SCRAPER_ACTOR_LABELS, SCRAPER_CREDIT_COSTS, SCRAPER_OUTPUT_FIELDS, SCRIPT_PROVIDERS, SEASONS, SECTION_BOARD, SECTION_KINDS, SEEDANCE_2_5_REF_LIMITS, SEEDANCE_2_CONTINUATION_REF_SEC, SEEDANCE_2_EXTEND_STITCH, SEEDANCE_2_PROVIDERS, SEEDANCE_2_R2V_MAX_AUDIO_SEC_BY_PROVIDER, SEEDANCE_2_R2V_MIN_REF_VIDEO_SEC, SEEDANCE_2_REF_LIMITS, SEEDANCE_LIP_SYNC_PROVIDERS, SEED_SUPPORT, SEPARATOR_DISPLAY, SEPARATOR_PRESETS, SHEET_ASPECTS, SHEET_BACKGROUNDS, SHEET_PRESETS, SHEET_SKINS, SHEET_TYPES, SHORT_FILM_ANGLE_COUNT, SHORT_FILM_EXPRESSION_COUNT, SHORT_FILM_VARIANT_THRESHOLD_SEC, SLOT_TOKEN_RE, SMART_CUT_WINDOW_DEFAULT, SMART_CUT_WINDOW_MAX, SMART_CUT_WINDOW_MIN, SOCIAL_POST_NODE_TYPES, STAGE_PATCH_SCHEMA, STATIC_CAPTION_STYLES, STRUCTURAL_SECTIONS, STRUCTURED_VISION_MODELS, STUDIO_DEPENDENT_FRAMES_CAPABILITY, STUDIO_SHOT_TRANSIENT_KEYS, STUDIO_TRANSIENT_KEYS, SUBMISSION_STATUSES, SUNO_ACTIVE_MODELS, SUNO_ADD_TRACK_MODELS, SUNO_DURATION_MODELS, SUNO_FIELD_HANDLE_FIELDS, SUNO_HARD_CEILING, SUNO_LEGACY_MODELS, SUNO_MODELS, SUNO_SELECT_OPERATIONS, SUNO_TEXT_MAX, SUNO_TITLE_MAX, SUNO_TRACK_SOURCE_TYPES, SUNO_VERSION_CREDIT_KEYS, SUNO_VERSION_PRICED_OPERATIONS, SUPPORTED_FONT_NAMES, SURROUND_DIRECTIONS, SWITCHX_BLOCK_FRAMES, SWITCHX_FRAME_TIERS, type SafetyRetryPolicy, type Scene3DAnchor, type Scene3DAssetAnimation, type Scene3DAssetKind, type Scene3DAssetRef, type Scene3DAssetRole, type Scene3DAuthoringDelivery, type Scene3DAuthoringDeliveryMetadata, type Scene3DAuthoringEngine, type Scene3DAuthoringValidation, type Scene3DCamera, type Scene3DCameraChanges, type Scene3DCameraKeyframe, type Scene3DCameraSample, type Scene3DCameraTrackV1, type Scene3DClayLighting, type Scene3DClayLightingPreset, type Scene3DDeliveryWarning, type Scene3DEasing, type Scene3DEditErrorCode, type Scene3DEditOperation, type Scene3DEditOptions, type Scene3DEditResult, type Scene3DEngineChoice, type Scene3DEngineChoiceInput, type Scene3DEngineChoiceRefusalCode, type Scene3DEngineRequestFields, type Scene3DEntityCapability, type Scene3DEntityRole, type Scene3DEntityV2, type Scene3DEntityVisual, type Scene3DInputAsset, type Scene3DJobOutput, type Scene3DJobOutputAny, type Scene3DJobOutputV2, type Scene3DKnownEngine, type Scene3DLighting, type Scene3DLightingChanges, type Scene3DMaterialBinding, type Scene3DNormalizedAssetStats, type Scene3DObject, type Scene3DObjectChanges, type Scene3DObjectKeyframe, type Scene3DOverride, type Scene3DOverrideSpace, type Scene3DParseResult, type Scene3DPlan, type Scene3DPlanV1, type Scene3DPlanV2, type Scene3DPrimitive, type Scene3DProvenance, type Scene3DReference, type Scene3DReferenceKind, type Scene3DReferenceRole, type Scene3DRenderTier, type Scene3DRestoredAssertion, type Scene3DReviewFindings, type Scene3DReviewObjection, type Scene3DReviewRefused, type Scene3DReviewUnavailable, type Scene3DReviewUnavailableReason, type Scene3DReviewVerdict, type Scene3DSemanticIssue, type Scene3DShot, type Scene3DSupportedSchemaVersion, type Scene3DV2EditOperation, type Scene3DV2EditOptions, type Scene3DV2EditResult, type Scene3DV2OverrideInput, type Scene3DV2Primitive, type Scene3DV2ResourceUsage, type SceneData, type SceneHelperName, SceneHelperNameSchema, type SceneInputMode, SceneInputModeSchema, type SceneMetadata, SceneMetadataSchema, type SceneNodeData, SceneNodeDataSchema, SceneSpecSchema, type ScraperActorId, type ScriptCriticVerdict, ScriptCriticVerdictSchema, type ScriptProvider, type Season, type SectionKind, type SelectorConfig, type SelectorFields, type SelectorMode, type SelectorPredicateOp, type SelectorResult, type SemanticAspectRatio, type SeparatorPreset, SequenceExecutionRequiredError, type SharedListing, type SharedVoice, type SheetAspect, type SheetBackground, type SheetCostEstimate, type SheetEntry, type SheetFlavour, type SheetGenerationPlan, type SheetPreset, type SheetPresetId, type SheetSection, type SheetSkin, type SheetTextData, type SheetType, type ShotElement, type ShotImageElement, type ShotShapeElement, type ShotSpec, ShotSpecSchema, type ShotTextElement, type ShowrunnerPlan, ShowrunnerPlanSchema, type SidecarLoader, type SlotControlDescriptor, type SlotControlKind, type SlotVariation, type SocialMediaContentType, type SocialMediaPlatform, type SocialMediaSpec, type SortDirection, type SortListOptions, type SortType, type StageAwaitingSubGateEvent, StageAwaitingSubGateEventSchema, type StaticCaptionStyle, type StoryboardCohesionCriticVerdict, StoryboardCohesionCriticVerdictSchema, type StyleDirectives, StyleDirectivesSchema, type SubGateName, SubGateNameSchema, type SubmissionStatus, type SunoAddTrackModel, type SunoModel, type SupportedFontName, type SurroundDirection, type Swatch, T2I_TO_I2I_VARIANT, TASK_CHAINED_EDIT_PROVIDERS, TEMPLATE_CATEGORIES, TEXT_TO_AUDIO_PROVIDERS, TEXT_TO_VIDEO_PROVIDERS, TIER_MAX_PIPELINE_COST_CREDITS, TIER_PIPELINE_PARALLELISM, TILT_CARRIED_FRACTION, TOPAZ_DEFAULT_UPSCALE_FACTOR, TOPAZ_UPSCALE_FACTORS, TRANSCRIBE_PROVIDERS, TRANSIENT_RUNTIME_KEYS, TTS_PROVIDERS, TTS_TEXT_MAX, TWO_K_RESOLUTION_PROVIDERS, type TemplateCategory, type TextToAudioProvider, type TextToVideoProvider, type TopazUpscaleAdjustment, type TopazUpscaleFactor, type TopazUpscaleResolution, type TranscribeProvider, type TransitionType, TransitionTypeSchema, type TrimVideoEstimatorInput, type TtsProvider, UPSCALE_IMAGE_PROVIDERS, USAGE_GROUP_BYS, USAGE_MODES, type UpscaleImageProvider, type UsageGroupBy, type UsageLogEntry, type UsageMode, type UsageQuery, type UsageReport, type UsageReportRow, type UsageReportTotals, type UsageVarianceRow, VARIABLES_HANDLE_ID, VARIABLE_PRICING_MODELS, VEHICLES, VEHICLE_SUBCATEGORY_LABELS, VEHICLE_SUBCATEGORY_ORDER, VEO_PROVIDERS, VIDEO_ANALYSIS_AUDIO_MODES, VIDEO_ANALYSIS_BUCKET_CREDITS, VIDEO_ANALYSIS_CLIP_TRANSITIONS_IN, VIDEO_ANALYSIS_DEFAULT_VARIATION, VIDEO_ANALYSIS_DURATION_BUCKETS, VIDEO_ANALYSIS_DURATION_TOLERANCE_SEC, VIDEO_ANALYSIS_ENTITY_SOURCES, VIDEO_ANALYSIS_FACELESS_ANGLES, VIDEO_ANALYSIS_LEGACY_MODELS, VIDEO_ANALYSIS_LLM_MODELS, VIDEO_ANALYSIS_MAX_DURATION_SEC, VIDEO_ANALYSIS_MAX_SCENE_SEC, VIDEO_ANALYSIS_MAX_VARIATIONS, VIDEO_ANALYSIS_MIXED_TIERS, VIDEO_ANALYSIS_SHOT_ANGLES, VIDEO_ANALYSIS_SPEED_EFFECTS, VIDEO_ANALYSIS_STORY_JUMPS, VIDEO_ANALYSIS_TEXT_KINDS, VIDEO_ANALYSIS_TIERS, VIDEO_ANALYSIS_TIER_LABELS, VIDEO_ANALYSIS_TIER_ORDER, VIDEO_ANALYSIS_TIMES_OF_DAY, VIDEO_ANALYSIS_TRANSITIONS, VIDEO_ANALYSIS_VARIATION_SLUGS, VIDEO_ANALYSIS_VISUAL_EFFECTS, VIDEO_ANALYSIS_WINDOW, VIDEO_AUDIO_CAPABILITY, VIDEO_AUDIT_BUCKET_CREDITS, VIDEO_CLIP_CREDITS, VIDEO_CRITIC_CREDITS_PER_SHOT, VIDEO_CRITIC_FRAME_MODES, VIDEO_CRITIC_MAX_RETRIES, VIDEO_CRITIC_METADATA_KEYS, VIDEO_CRITIC_MIN_ADHERENCE_SCORE, VIDEO_DURATION_TIERS, VIDEO_GEN_COLLAPSED_T2V_IDS, VIDEO_GEN_PROVIDERS, VIDEO_INPUT_LIP_SYNC_PROVIDERS, VIDEO_MODEL_CAPS, VIDEO_MODE_ALIASES, VIDEO_ONLY_PARAMETER_NODE_TYPES, VIDEO_PRODUCER_TYPES, VIDEO_PROMPT_MAX, VIDEO_PROVIDERS_REQUIRING_IMAGE, VIDEO_PROVIDERS_WITHOUT_DISPATCH, VIDEO_REF_LIMITS_BY_PROVIDER, VIDEO_REF_VIDEO_DURATION_LIMITS, VIDEO_TO_VIDEO_PROVIDERS, VIDEO_UPSCALE_PROVIDERS, VIDEO_UTIL_PRICING, VIDEO_VARIABLE_PRICING, VOICE_CHANGER_MODELS, VOICE_CHANGER_MODEL_IDS, VOICE_DESIGN_MODELS, type ValidateMatchCutInput, ValidateMatchCutInputSchema, type ValidateMatchCutResult, ValidateMatchCutResultSchema, type ValidationField, type Vec3, type Vehicle, type VehicleSubcategory, type VideoAnalysisAudioMode, type VideoAnalysisClipTransitionIn, type VideoAnalysisEntitySource, type VideoAnalysisMixedTier, type VideoAnalysisModelTier, type VideoAnalysisResult, type VideoAnalysisShotAngle, type VideoAnalysisSpeedEffect, type VideoAnalysisTextKind, type VideoAnalysisTier, type VideoAnalysisTransition, type VideoAnalysisVisualEffect, type VideoAudioCapability, type VideoAudioMode, type VideoClipCost, type VideoCriticFrameMode, type VideoCriticMetadataKey, type VideoCriticShotFields, type VideoCriticVerdict, VideoCriticVerdictSchema, type VideoGenProvider, type VideoModeAlias, type VideoModelCapabilities, type VideoToVideoProvider, type VideoUpscaleProvider, type Voice, type VoiceChangerModel, type VoiceClone, type VoiceDesignModel, type VoiceLibraryParams, type VoiceLibraryResponse, type VoiceMatch, VoiceMatchSchema, type VoiceType, WAN_3_DEFAULT_RESOLUTION, WAN_3_PROVIDERS, WARDROBE_VARIANTS, WEAPONS, WEAPON_SUBCATEGORY_LABELS, WEAPON_SUBCATEGORY_ORDER, WORKFLOW_VISIBILITIES, WORKSPACE_HEADER, WORKSPACE_HEADER_LOWER, WORKSPACE_ROLES, type Weapon, type WeaponSubcategory, type WindowAnalysis, type WindowScene, type WorkflowAssetKind, type WorkflowExport, type WorkflowExportCharacter, type WorkflowExportCreature, type WorkflowExportLocation, type WorkflowExportObject, type WorkflowImportReport, type WorkflowImportSkippedAsset, type WorkflowMediaRef, type WorkflowPortability, type WorkflowVisibility, type WorkspaceMemberView, type WorkspaceRole, type WorkspaceSettings, WorkspaceSettingsSchema, type WorkspaceSummary, type WorkspaceView, aggregateByType, aiAvatarReserveCreditId, analyzedSceneSchema, applyDefaultVideoSelection, applyHandleInputOverride, applyRange, applyRangeIndices, applyScene3DEditOperations, applyScene3DV2EditOperations, applySlots, applyVideoAudioToggle, applyVideoNegativePrompt, aspectRatioFromDims, aspectRatioOptionsByKind, aspectRatioToNumber, assembleNarratedVideoCredits, assertCanvasExecutionAllowed, availableReasoningEfforts, bucketSecondsFromAuditCreditId, bucketSecondsFromCreditId, buildBoardPrompt, buildChildrenByParent, buildConditionVariables, buildCreditModelIdentifier, buildExpressionFromVisual, buildLipSyncCreditId, buildLlmCreditIdentifier, buildModelMenu, buildModelTree, buildMotionCreditModelIdentifier, buildNodePresetExport, buildPanelPrompt, buildPro3DRenderSource, buildProgressSegments, buildRangeLabel, buildScraperCreditId, buildVideoAnalysisCreditId, buildVideoAuditCreditId, buildVideoCreditModelIdentifier, calculateCombinedProgress, calculateMonetizationMarkup, calculateMonetizedCost, calculateProgress, canonicalScene3DPlanV2Json, canonicalVarName, characterBoardItems, characterBucketDisplayRank, characterMentionSlug, characterMentionableAssetArrays, characterSheetRefItems, characterVariantAssetArrays, checkRefVideoDurations, cinematicCreditId, clampCinematicDuration, clampSmartCutWindow, classifyRefToken, cleanOrphanedItems, clearImageCriticMetadata, clearVideoCriticMetadata, clipLookSchema, collectAncestorRefs, combineSameLabelRefs, computeAggregateLanes, computeScene3DPlanV2ContentHash, countRefModalityEdges, creditRangesAll, creditsToUsd, decodeProviderItem, defaultCarriedFraction, defaultResolutionFor, defaultRoleForSource, defaultVideoAspectRatio, deriveLinkedFields, deriveLottieSlotFields, deriveSlotRefs, describeEdgeBehavior, describeMaskRegion, describeNodeAdjustments, describeSlotControl, dropUnknownBindings, dropUnknownSpeakers, durationsByMode, effectiveReasoningEffort, encodeProviderItem, ensureLocaleCatalogLoaded, entityHydrationColumns, entityMentionSlug, entityMentionSlugForRef, entityScalarFields, entitySlotSchema, entryMatchesQuery, estimateCombineVideosCredits, estimateFilmCredits, estimateLoopTrimAddonCredits, estimateLoopVideoCredits, estimateScriptDurationSec, estimateSheetCost, estimateTrimVideoCredits, evaluateCondition, evaluateConditionGroup, evaluateJsonExpression, evaluateJsonPath, expandExtraRefsToConnectedReferences, expandItemsWithRepeat, extractAllGeneratedResults, extractCharacterLoraFields, extractGeneratedJsonAsList, extractPresetData, extractReferencedLabels, extractVideoDurationFromNode, fieldKeyFromHandle, filterCloneNodes, findCharacterMentionTokens, findEntityMentionTokens, findImageMentionTokens, findLocationMentionTokens, findSeedance2AudioOverLimit, firstSightExtraRole, flattenItems, getAnimal, getAnimalLabel, getAnimalPromptHint, getAnimalTerm, getAspectRatioOptions, getAudioCrossfadeCurve, getCharacterFacet, getCombineTransition, getCreditRange, getDurationsForModel, getEffectiveRepeatCount, getFeaturedEntities, getFurniture, getFurnitureLabel, getInputFieldSchema, getInputNodes, getItemSortId, getLipSyncMaxAudioSeconds, getLlmModalityCaps, getLlmModel, getLlmTier, getLocaleDirection, getMaxImagePromptChars, getMaxNegativePromptChars, getMaxSunoPromptChars, getMaxSunoStyleChars, getMaxTtsChars, getMaxVideoPromptChars, getModel, getNodeLabel, getNodeResult, getOutputNodes, getOutputType, getParameterValue, getQualityOptions, getResolutionOptions, getRouteReachableNodeIds, getStrategy, getTargetField, getValidValues, getVehicle, getVehicleLabel, getVideoAudioCapability, getWeapon, getWeaponLabel, groupByFamily, groupByKindAndFamily, groupHandleId, groupLlmModelsByVendor, hasContiguousSegmentDurations, hasFeature, hexToRgbaArray, humanizeSlotSid, imageMentionSlug, imageMentionSlugForRef, imageOverlayBillableVariants, imageOverlayCredits, imageReferenceLimit, inferMusicVideo, isAggregateableType, isCharacterAspectRatio, isCollectInEdge, isDefaultSelectorConfig, isExpandedClone, isFlux2Model, isGeminiOmniProvider, isGvpSupportedProvider, isHandleInputWired, isKineticCaptionStyle, isKnownScene3DEngine, isLegacySunoModel, isLocationUsageMode, isMinimaxH3Provider, isObjectAspectRatio, isOversizedScene, isPaygRetentionActive, isPerSecondLipSyncProvider, isPro3DRenderJobOutput, isPro3DRenderQuote, isPro3DRenderRenderOnly, isRtlText, isScene3DAuthoringEngine, isScene3DCameraTrack, isScene3DHttpUrl, isScene3DPlan, isScene3DPlanV1, isScene3DPlanV2, isScene3DReviewUnavailableReason, isScene3DSchemaVersionSupported, isScraperActor, isSeedance2Provider, isTemplateCategory, isTiltDirection, isUsageMode, isVeoProvider, isVideoAnalysisMixedTier, isVideoAnalysisTier, isWan3Provider, jsonResultToList, knownEntitySlugsFromRefs, knownImageSlugsFromRefs, listBoardTemplates, listModels, listSlotSids, llmRouteDefaults, locationMentionSlug, locationReferencePhotoKindLabel, locationUsageModeLabel, mapAspectRatio, mapQuality, mapShotIntentToProviderDirectives, matchVariant, maxSegmentSecFor, maxSegmentsFor, mergeClipLook, mergeExposedSettings, migrateEdgeOutputMode, migrateToItems, minSegmentSecFor, modelIdsByKindMode, modelToNodeTarget, modelsForInputMode, modelsWithFeature, motionGraphicsFeature, newScene3DRevisionId, nodeStateMayCarryOutput, normalizeLottieLayers, normalizeMinimaxH3Resolution, normalizeModelInput, normalizeNodeModelParams, normalizePinterestUrl, normalizeRoleSlug, normalizeTemplateCategory, normalizeVideoRequestParams, normalizeWan3Resolution, orderedLlmModels, overlayFontById, overlayImageEffectsSchema, overlayPlatformById, overlayQrStyleSchema, overlayShapeElement, overlayShapeStyleSchema, overlayStrokeSchema, overlayTextStyleSchema, overlayVariantHandle, overlayVariantIdFromHandle, parseAttributedDialogue, parseCharacterMentionToken, parseEntityMentionToken, parseGroupHandle, parseHandleId, parseImageMentionToken, parseListExpression, parseLocationMentionToken, parseNodePresetExport, parseNodeRef, parseScene3DCameraTrackJson, parseScene3DPlanV2Json, pickAiAvatarBucket, pickIds, pickLipSyncBucket, pickSwitchXFrameTier, pickVideoAnalysisBucket, planSheetGeneration, planSheetPanels, preferredInputModeForModel, presentTypes, presetApplyClearKeys, presetDataMatches, presetEntries, pricedOutputDurationSec, pricedVideoSelection, pro3DRenderCoreOutputSchema, pro3DRenderFrameUnit, pro3DRenderJobOutputSchema, pro3DRenderProducedSchemaVersion, pro3DRenderQuoteSchema, pro3DRenderReviewVerdictSchema, pro3DRenderShotStillSchema, pro3DRenderShotStills, pro3DRenderTimingOverrides, qualityOptionsByKind, readPromptAffixes, refHandleCategory, referenceModalityForHandle, referenceSheetCreditId, registerCatalogSidecars, registerSidecarLoaders, renderAnalyzedScene, renderVideoCreditId, requiresSequenceExecution, resetCatalogSidecars, resolutionOptionsByKind, resolveAiAvatarCreditId, resolveAudioCrossfadeCurve, resolveCharacterAspectRatio, resolveCinematicCreditId, resolveConditionValue, resolveDefaultRole, resolveDescription, resolveDialogueVoices, resolveEffectiveSourceType, resolveEffectiveTier, resolveEntityAspect, resolveFieldMappings, resolveGvpAnchorWire, resolveImageGenCreditIdentifier, resolveIndex, resolveLabel, resolveListExpression, resolveLlmCreditId, resolveLocationFields, resolveLocationPresetCatalog, resolveLottieOverlaySrc, resolveNodeRefs, resolveNormalizedImageGen, resolveObjectAspectRatio, resolvePipelineModel, resolveRelativeWindowToken, resolveScene3DAuthoringEngine, resolveScraperCreditId, resolveSelectorRefs, resolveSeparator, resolveSheetSections, resolveSlideshowTransition, resolveSourceThroughConnectedList, resolveStoredTier, resolveSwitchXCreditId, resolveTemplateCategory, resolveTopazUpscale, resolveVideoAnalysisModel, resolveVideoModeForInputs, resolveVideoProviderForMode, resolveXfadeName, rewriteSceneBindings, rewriteSlotTokens, rewriteSpeakerSlots, rgbaArrayToHex, roleToPhrase, rotationVec3Schema, runSelector, safetyRetryPolicy, sanitizeRole, scaleVec3Schema, scene3DAcceptedSchemaVersionsSchema, scene3DAnchorNameSchema, scene3DAnchorSchema, scene3DAnyPlanSchema, scene3DAssetAnimationSchema, scene3DAssetIdSchema, scene3DAssetRefSchema, scene3DCameraChangesSchema, scene3DCameraKeyframeSchema, scene3DCameraSampleSchema, scene3DCameraSchema, scene3DCameraTrackIssues, scene3DCameraTrackObjectSchema, scene3DCameraTrackPlanIssues, scene3DCameraTrackSchema, scene3DClayLightingSchema, scene3DColorSchema, scene3DDeepEqual, scene3DEasingSchema, scene3DEditOperationSchema, scene3DEditOperationsSchema, scene3DEngineIdSchema, scene3DEntityAcceptsOverlay, scene3DEntityCapabilitySchema, scene3DEntityV2Schema, scene3DEntityVisualSchema, scene3DIdSchema, scene3DInputAssetSchema, scene3DInputAssetsForEngine, scene3DInputAssetsSchema, scene3DJsonByteLength, scene3DLightingChangesSchema, scene3DLightingSchema, scene3DMaterialBindingSchema, scene3DMaterialNameSchema, scene3DMaterialRoleSchema, scene3DNodeIdSchema, scene3DNodeNameSchema, scene3DObjectChangesSchema, scene3DObjectKeyframeSchema, scene3DObjectSchema, scene3DOverrideSchema, scene3DPlanIssues, scene3DPlanSchema, scene3DPlanSchemaVersion, scene3DPlanV1Issues, scene3DPlanV1ObjectSchema, scene3DPlanV1Schema, scene3DPlanV2Issues, scene3DPlanV2ObjectSchema, scene3DPlanV2Schema, scene3DPrimitiveSchema, scene3DProjectionIssues, scene3DProvenanceSchema, scene3DReferenceSchema, scene3DRenderTier, scene3DRenderTierCredits, scene3DReviewNote, scene3DReviewVerdictOf, scene3DSampleForFrame, scene3DSha256Schema, scene3DShotForFrame, scene3DShotIndexForFrame, scene3DShotSchema, scene3DUrlSchema, scene3DV2AdmissionIssues, scene3DV2EditOperationSchema, scene3DV2EditOperationsSchema, scene3DV2HierarchyDepth, scene3DV2NormalizationIssues, scene3DV2OverrideInputSchema, scene3DV2ResourceUsage, scene3DVersionTokenSchema, scene3DZodIssues, searchModelVariants, seedance2AudioLimitSec, segmentDurationsFor, selectByModulo, selectByNamedKey, selectByPredicate, selectListItems, selectLoraRoutingForMentions, selectRandom, setRegisteredPersonPackFields, settledWithLimit, sizeVec3Schema, slotVariationSchema, sortCharacterEntriesForDisplay, sortListItems, sourceRefKey, spliceDelimitedRows, splitByLoopDelimiter, splitGeneratedItems, spreadJsonArrayIfSingleton, stringifyPathResults, stripDerivedAnalysisFields, stripExportContent, stripStudioTransientSettings, stripTransientRuntimeData, summarizeScene3DOperations, sunoCreditType, sunoModelHonoursDuration, supportedDefaultDimensions, supportsAdvancedMode, supportsEndAnchor, supportsExtendRender, templateCategoryStoredValues, toConnectedReference, toConnectedReferences, togglePick, tryParseJson, uiAspectRatioFill, uiDurationFill, uiResolutionFill, unresolvedRefTokens, unwrapUnresolvedTokens, usageModeDirective, usageModeIncludesName, usageModeLabel, usdToCredits, validateAiAvatarPayload, validateCinematicAvatarPayload, validateDurationForFormat, validateModeActivation, validateModelInput, validateNoNestedGroups, validateObjects, validateProviderForNodeType, validateSubWorkflowRoutes, variantJobId, vec3Schema, verifyScene3DPlanV2ContentHash, videoAnalysisCreditSegment, videoAnalysisNumWindows, videoAnalysisResultSchema, videoAuditCreditsForBucket, videoModelCanSpeakDialogue, videoModelSupportsAudio, videoNegativeSuffix, videoProviderFoldsLoneEndFrame, videoProviderRequiresImage, windowAnalysisSchema, zipMergeLists };
17857
+ /**
17858
+ * Real output canvases per (video model, resolution, aspect ratio).
17859
+ *
17860
+ * Every entry is a pixel size read off a finished render with ffprobe — the
17861
+ * geometry a model hands back, never a rate or a price. None of it is
17862
+ * arithmetic either, because the providers do not follow arithmetic:
17863
+ *
17864
+ * - minimax-h3 at 768P returns 768x1344 (0.5714) for a 9:16 request,
17865
+ * - seedance-2 at 480p 16:9 returns 864x496 (1.742) while seedance-2-5
17866
+ * returns 854x480 (1.778) for the same request,
17867
+ * - grok returns 736x400 (1.84), seedance 1.0 at 1080p 1:1 returns 1440x1440.
17868
+ *
17869
+ * A formula would get all four wrong, which is why `resolveOutputCanvas`
17870
+ * answers `undefined` for anything not measured: callers must then leave the
17871
+ * frame alone rather than invent geometry (see `computeFrameFitPlan`).
17872
+ *
17873
+ * HOW TO EXTEND: run `node tools/harvest-output-canvas.mjs` (it pages the admin
17874
+ * jobs API, groups completed video jobs by provider/resolution/aspect and probes
17875
+ * real outputs) and paste new rows here. Take rows from REFERENCE or
17876
+ * TEXT-TO-VIDEO jobs only: in frame mode the adaptive models (the seedance and
17877
+ * wan families) size the output from the INPUT image, so those rows describe the
17878
+ * input that was sent, not the canvas the model would choose on its own.
17879
+ *
17880
+ * Seeded 2026-09-16 from 3000 completed production jobs.
17881
+ */
17882
+ /** `[width, height]` in pixels. */
17883
+ type VideoOutputCanvas = readonly [number, number];
17884
+ /** provider → resolution (lower-cased) → aspect token → canvas. */
17885
+ declare const VIDEO_OUTPUT_CANVAS: Readonly<Record<string, Readonly<Record<string, Readonly<Record<string, VideoOutputCanvas>>>>>>;
17886
+ /**
17887
+ * The canvas a model renders for this request, or `undefined` when we have never
17888
+ * measured that combination. `undefined` means "leave the frame alone".
17889
+ *
17890
+ * Resolution matching is case-insensitive (`768P`, `2K`, `720p` all appear in
17891
+ * the wild). An aspect of `adaptive` / `Auto` has no canvas of its own — the
17892
+ * caller resolves it to a concrete ratio first (`resolveFrameFitAspect`).
17893
+ */
17894
+ declare function resolveOutputCanvas(provider: string | undefined, resolution: string | undefined, aspect: string | undefined): VideoOutputCanvas | undefined;
17895
+ /** Every measured combination, for tests and for the harvest script's diff. */
17896
+ declare function measuredCanvasCombinations(): Array<{
17897
+ provider: string;
17898
+ resolution: string;
17899
+ aspect: string;
17900
+ canvas: VideoOutputCanvas;
17901
+ }>;
17902
+
17903
+ /** How much of the frame we are allowed to reshape. */
17904
+ declare const FRAME_FITS: readonly ["original", "ratio", "resolution"];
17905
+ type FrameFit = (typeof FRAME_FITS)[number];
17906
+ /** `resolution` — the measured canvas — is the default everywhere. */
17907
+ declare const DEFAULT_FRAME_FIT: FrameFit;
17908
+ /** How the frame is handed to the model. */
17909
+ declare const FRAME_DELIVERIES: readonly ["auto", "frame", "reference"];
17910
+ type FrameDelivery = (typeof FRAME_DELIVERIES)[number];
17911
+ declare const DEFAULT_FRAME_DELIVERY: FrameDelivery;
17912
+ /**
17913
+ * Stretching an image to a ratio it is nowhere near would squash the subject,
17914
+ * so past this gap the frame is centre-cropped to the target ratio FIRST and
17915
+ * only then resized. 5% covers every "1K image into a 720p canvas" case we
17916
+ * measured (940x1672 into 9:16 is a 0.05% gap) while refusing to squash a
17917
+ * square photo into 9:16 (a 78% gap).
17918
+ */
17919
+ declare const FRAME_FIT_STRETCH_TOLERANCE = 0.05;
17920
+ /**
17921
+ * Models whose frame mode is measurably worse than reference delivery.
17922
+ *
17923
+ * The Seedance 2.0 family crop-zooms the frame 2% and drifts 11-26% darker
17924
+ * within six frames in frame mode; delivered as a reference with the opening-
17925
+ * frame sentence, the same models hold a flat look from frame 0 and keep the
17926
+ * image's true geometry. Every OTHER model measured (Seedance 2.5, Gemini Omni
17927
+ * video + flash, Veo 3.1, Wan 3.0, Minimax H3) reproduces the opening frame
17928
+ * better in frame mode, so the default stays `frame` for anything absent here.
17929
+ */
17930
+ declare const FRAME_DELIVERY_BY_PROVIDER: Readonly<Record<string, Exclude<FrameDelivery, "auto">>>;
17931
+ /** `"16:9"` → 1.777…; anything unparseable → `undefined`. */
17932
+ declare function parseAspectToken(token: string | undefined): number | undefined;
17933
+ /**
17934
+ * The aspect the fit should target.
17935
+ *
17936
+ * An explicit ratio is used as-is. `adaptive` / `Auto` (and an absent value,
17937
+ * which the seedance family sends as adaptive whenever a frame is present) has
17938
+ * no shape of its own: the provider will follow the IMAGE, so we snap the
17939
+ * image's own ratio to the nearest one the model lists and target that. A model
17940
+ * with no declared ratio list and an open token gives `undefined` — no fit.
17941
+ */
17942
+ declare function resolveFrameFitAspect(args: {
17943
+ provider: string | undefined;
17944
+ requestedAspect: string | undefined;
17945
+ sourceWidth: number;
17946
+ sourceHeight: number;
17947
+ }): string | undefined;
17948
+ /** What `prepareVideoFrames` should do to one frame. `null` = nothing. */
17949
+ interface FrameFitPlan {
17950
+ /** Final pixel size to produce. */
17951
+ readonly width: number;
17952
+ readonly height: number;
17953
+ /** Centre-crop applied BEFORE the resize (only past the stretch tolerance). */
17954
+ readonly crop?: {
17955
+ readonly left: number;
17956
+ readonly top: number;
17957
+ readonly width: number;
17958
+ readonly height: number;
17959
+ };
17960
+ /** Why the plan exists — carried into logs and job output for traceability. */
17961
+ readonly reason: "resolution" | "ratio";
17962
+ }
17963
+ /**
17964
+ * The smallest change that makes `width x height` exactly `aspect`: keep the
17965
+ * longer side, move the shorter one. Rounding to even can leave a sub-pixel
17966
+ * residue, which is why the caller compares ratios with a tolerance rather than
17967
+ * for equality.
17968
+ */
17969
+ declare function minimalRatioDimensions(width: number, height: number, aspect: number): {
17970
+ width: number;
17971
+ height: number;
17972
+ };
17973
+ /**
17974
+ * The centre-crop that turns `width x height` into exactly `aspect`, dropping
17975
+ * the overhang on the long axis.
17976
+ */
17977
+ declare function centreCropToAspect(width: number, height: number, aspect: number): {
17978
+ left: number;
17979
+ top: number;
17980
+ width: number;
17981
+ height: number;
17982
+ };
17983
+ /**
17984
+ * Turn a request into a concrete plan for ONE frame, or `null` when the frame
17985
+ * should be sent untouched.
17986
+ *
17987
+ * Degradation ladder — a missing measurement must never invent geometry:
17988
+ * `resolution` with no measured canvas → behaves as `ratio`
17989
+ * `ratio` with no resolvable aspect → no fit
17990
+ * any fit whose target equals the source (within a pixel) → no fit
17991
+ */
17992
+ declare function computeFrameFitPlan(args: {
17993
+ fit: FrameFit;
17994
+ provider: string | undefined;
17995
+ resolution: string | undefined;
17996
+ /** The aspect as the request carries it: a ratio, `adaptive`/`Auto`, or absent. */
17997
+ aspect: string | undefined;
17998
+ sourceWidth: number;
17999
+ sourceHeight: number;
18000
+ /** Overrides the measured table (tests, and a caller that already looked up). */
18001
+ canvas?: VideoOutputCanvas;
18002
+ tolerance?: number;
18003
+ }): FrameFitPlan | null;
18004
+ /**
18005
+ * Frame or reference? `auto` reads the per-provider default measured above.
18006
+ * Reference delivery is only possible on models that accept reference images —
18007
+ * on the others `reference` collapses back to `frame` rather than dropping the
18008
+ * frame on the floor.
18009
+ */
18010
+ declare function resolveFrameDelivery(args: {
18011
+ provider: string | undefined;
18012
+ requested: FrameDelivery | undefined;
18013
+ supportsReferenceImages: boolean;
18014
+ }): Exclude<FrameDelivery, "auto">;
18015
+
18016
+ /**
18017
+ * Speaker-view presentation registries — the STRUCTURAL vocabulary behind an
18018
+ * EDL segment's `layout` (see `EdlLayout` in `edl.ts`).
18019
+ *
18020
+ * What lives here is structure only: which layout ids exist, how many slots
18021
+ * each takes, which output aspects a renderer exists for, which speaker-switch
18022
+ * ids exist and whether they consume output time, and the atomic emphasis
18023
+ * styles. Taste — default emphasis, which transitions are allowed or preferred
18024
+ * for a show, timing defaults — is deliberately NOT here.
18025
+ *
18026
+ * Every list is widened ADDITIVELY. That is why a finding judged against one of
18027
+ * these registries is a validation WARNING, never an issue: an older validator
18028
+ * must never reject an EDL written by a newer producer that knows more ids.
18029
+ * An executor that cannot honour an id refuses it itself.
18030
+ */
18031
+
18032
+ declare const EDL_TARGET_ASPECTS: readonly ["16:9", "9:16", "1:1", "4:5"];
18033
+ type EdlTargetAspect = (typeof EDL_TARGET_ASPECTS)[number];
18034
+ /** Narrow an open `Edl.meta.targetAspect` (or any value) to a known aspect. */
18035
+ declare function isEdlTargetAspect(v: unknown): v is EdlTargetAspect;
18036
+ interface SpeakerLayoutSheet {
18037
+ readonly id: string;
18038
+ /** Inclusive slot-count range when a segment lists `layout.slots`. */
18039
+ readonly minSlots: number;
18040
+ readonly maxSlots: number;
18041
+ /** The output aspects this layout is DRAWN for (a renderer exists) — not "looks good". Widened additively. */
18042
+ readonly aspects: readonly EdlTargetAspect[];
18043
+ }
18044
+ declare const SPEAKER_LAYOUTS: readonly SpeakerLayoutSheet[];
18045
+ declare const SPEAKER_LAYOUT_IDS: readonly string[];
18046
+ declare function getSpeakerLayout(id: string): SpeakerLayoutSheet | undefined;
18047
+ /** Omitted query fields are unconstrained. */
18048
+ declare function speakerLayoutAllows(sheet: SpeakerLayoutSheet, q: {
18049
+ readonly aspect?: EdlTargetAspect;
18050
+ readonly slotCount?: number;
18051
+ }): boolean;
18052
+ /** D17: a switch consumes output time iff it is in the `xfade:*` family. THE one overlap rule (edl.ts uses it). */
18053
+ declare function speakerSwitchOverlaps(type: string): boolean;
18054
+ interface SpeakerSwitchSheet {
18055
+ /** "cut" | "pan" | "zoom" | `xfade:${combine id}` */
18056
+ readonly id: string;
18057
+ /** = `speakerSwitchOverlaps(id)`, derived, never hand-set. */
18058
+ readonly overlaps: boolean;
18059
+ /** true only for `pan`: an eased sweep between two regions of ONE picture source. */
18060
+ readonly requiresSameSource: boolean;
18061
+ }
18062
+ /** `cut` / `pan` / `zoom` consume no time (pan: a geometry tween inside ONE
18063
+ * source; zoom: a tween inside each segment). The `xfade:*` family is DERIVED
18064
+ * from every combine-videos transition that is a real ffmpeg xfade (so never
18065
+ * `cut`, which has no xfade) — it is never hand-listed here. */
18066
+ declare const SPEAKER_SWITCHES: readonly SpeakerSwitchSheet[];
18067
+ declare const SPEAKER_SWITCH_IDS: readonly string[];
18068
+ /** A plain lookup: `undefined` for an unknown id (never throws). */
18069
+ declare function getSpeakerSwitch(id: string): SpeakerSwitchSheet | undefined;
18070
+ /** Atomic emphasis styles; `layout.emphasis.style` is a "+"-joined set of
18071
+ * them. `none` stands alone (it means "no emphasis"), and an atom appears at
18072
+ * most once. */
18073
+ declare const SPEAKER_EMPHASIS_STYLES: readonly ["none", "scale", "border", "dim"];
18074
+ type SpeakerEmphasisStyle = (typeof SPEAKER_EMPHASIS_STYLES)[number];
18075
+ /** Split a `+`-joined style into its atoms: trimmed, empties dropped. */
18076
+ declare function parseSpeakerEmphasisStyle(style: string): readonly string[];
18077
+ /** At least one atom, every atom a known `SPEAKER_EMPHASIS_STYLES` id, no
18078
+ * atom repeated, and `none` only on its own ("none+scale" contradicts itself). */
18079
+ declare function isKnownSpeakerEmphasisStyle(style: string): boolean;
18080
+ /** Registry-derived findings — ALL warning-class. Pure; never throws (guard non-array sources/segments the
18081
+ * way validateEdl does). `validateEdl` already includes these in its `warnings`; call this directly only
18082
+ * when you want the presentation findings alone. */
18083
+ declare function speakerPresentationWarnings(edl: Edl): readonly string[];
18084
+
18085
+ /**
18086
+ * EDL — the edit decision list contract.
18087
+ *
18088
+ * WHY THIS EXISTS
18089
+ * The podcast-editing primitives (transcript-driven cut, clip finding,
18090
+ * multicam, speaker view) compose because they share ONE data shape: every
18091
+ * analysis node produces an EDL, every render node consumes one. This module
18092
+ * is that shape plus the pure functions that read it. It is structural
18093
+ * vocabulary — no prompts, no heuristics, no editorial judgment — which is why
18094
+ * it lives in the Apache-licensed `@nodaro/shared` (the wire shape of
18095
+ * `/v1/edl/*`, an SDK type, an MCP output). Every published version is an
18096
+ * irrevocable grant, so the three resolved decisions (see below) all land in
18097
+ * version 1: renaming a field, or adding a REQUIRED one, later would be a
18098
+ * breaking major bump — so every later field is optional and additive.
18099
+ *
18100
+ * This module is PURE — no I/O, no ffmpeg, no network. The executors
18101
+ * (`apply-edl`, `speaker-view`) turn an EDL into pixels; they live in the app
18102
+ * and the plugins.
18103
+ *
18104
+ * DESIGN DECISIONS baked into v1 (so multicam and speaker view extend the
18105
+ * contract additively rather than with a breaking bump):
18106
+ * - D17 OVERLAP: a crossfade consumes time from the outgoing segment (ffmpeg
18107
+ * `xfade`, as combine-videos already does), so the rendered timeline is
18108
+ * SHORTER than the sum of segment durations. `edlDurationMs` subtracts the
18109
+ * overlap transitions; cut/pan/zoom consume no time (pan: a geometry tween
18110
+ * inside ONE source; zoom: a tween inside each segment); only the `xfade:*`
18111
+ * family and a segment `crossfade` overlap.
18112
+ * - D19 CLOCK/SOURCE/SIGN: `Edl.clock` says whether `segments` are on the
18113
+ * source master clock or an output clock; `Transcript.sourceId` says which
18114
+ * source a transcript came from; the offset sign is `masterMs = sourceMs +
18115
+ * offsetMs(source)`, applied by the remap functions.
18116
+ * - D20 PRECEDENCE/RENAME: region precedence
18117
+ * `slot.region ▷ segment.region (single-slot only) ▷ a caller's per-slot
18118
+ * resolver (v3 tracks) ▷ regions[(source, speaker)] ▷ source.region ▷ full
18119
+ * frame`, implemented ONCE by `resolveEdlSegmentSlots` (edl-multicam.ts);
18120
+ * `segment.region` is invalid when the segment's layout has more than one
18121
+ * slot; `slots[].weight` (0..1, active = 1) replaces the design's
18122
+ * `slots[].emphasis` so it no longer collides with `layout.emphasis`
18123
+ * ({ style, durationMs }).
18124
+ *
18125
+ * Time is INTEGER MILLISECONDS everywhere. There is no seconds→ms guessing
18126
+ * (`normalizeEdl` never reinterprets a unit — an implausible value is a
18127
+ * validation error, not a silent 1000× edit).
18128
+ */
18129
+ declare const EDL_VERSION: 1;
18130
+ /** A crop region, as fractions 0..1 of the source frame. */
18131
+ interface EdlRegion {
18132
+ readonly x: number;
18133
+ readonly y: number;
18134
+ readonly w: number;
18135
+ readonly h: number;
18136
+ }
18137
+ declare const EDL_SOURCE_ROLES: readonly ["master-audio", "camera", "wide", "screen"];
18138
+ type EdlSourceRole = (typeof EDL_SOURCE_ROLES)[number];
18139
+ /** A media input to the edit. Ids are minted once (by `edit-plan`) and never
18140
+ * re-derived, so downstream nodes resolve media from `url` in the data, not
18141
+ * from canvas handle order. Keep the `url` key: the cloud relay re-hosts
18142
+ * private media by walking `url`-suffixed fields. */
18143
+ interface EdlSource {
18144
+ readonly id: string;
18145
+ readonly url: string;
18146
+ readonly kind: "video" | "audio";
18147
+ /** This source's origin on the master clock. `masterMs = sourceMs + offsetMs`. Default 0. */
18148
+ readonly offsetMs?: number;
18149
+ /** Known roles: EDL_SOURCE_ROLES. Open (`string & {}`) so an EDL written by a newer producer still type-checks
18150
+ * and still validates — an unknown role is a WARNING (validateEdl); an executor that cannot honour it refuses it. */
18151
+ readonly role?: EdlSourceRole | (string & {});
18152
+ /** Speaker labels this source frames (multicam). Empty = unknown. */
18153
+ readonly speakers?: readonly string[];
18154
+ /** A static crop for this source (speaker-view v1 framing). */
18155
+ readonly region?: EdlRegion;
18156
+ }
18157
+ /** How a segment is presented on screen (speaker-view, phase 2). `mode` and
18158
+ * `transition.type` are ids from the `SPEAKER_LAYOUTS` / `SPEAKER_SWITCHES`
18159
+ * registries (speaker-layouts.ts); `emphasis.style` is a `+`-joined set of
18160
+ * atomic `SPEAKER_EMPHASIS_STYLES` (e.g. "scale+border"). Unknown ids are
18161
+ * validation WARNINGS, and `mode` stays an open string on purpose. v1 leaves
18162
+ * layout undefined (single camera). */
18163
+ interface EdlLayout {
18164
+ /** "single" | "side-by-side" | "stacked" | "grid" | "pip" | … */
18165
+ readonly mode: string;
18166
+ readonly slots?: ReadonlyArray<{
18167
+ readonly source: string;
18168
+ readonly region?: EdlRegion;
18169
+ readonly speaker?: string;
18170
+ /** D20: 0..1, the active slot = 1. (Was `emphasis`; renamed to avoid
18171
+ * colliding with `layout.emphasis`.) */
18172
+ readonly weight?: number;
18173
+ }>;
18174
+ /** A "+"-joined set of "none" | "scale" | "border" | "dim" | …, eased over durationMs. */
18175
+ readonly emphasis?: {
18176
+ readonly style: string;
18177
+ readonly durationMs: number;
18178
+ };
18179
+ /** Into THIS segment. "cut" | "pan" | "zoom" consume no time; "xfade:<id>" overlaps (D17).
18180
+ * `durationMs` never consumes timeline time for the non-overlap types: it
18181
+ * is the tween length for `pan` / `zoom` and is ignored for `cut`. */
18182
+ readonly transition?: {
18183
+ readonly type: string;
18184
+ readonly durationMs?: number;
18185
+ };
18186
+ }
18187
+ interface EdlSegment {
18188
+ readonly id: string;
18189
+ /** On the MASTER clock. */
18190
+ readonly inMs: number;
18191
+ /** Exclusive, > inMs. */
18192
+ readonly outMs: number;
18193
+ /** `EdlSource.id` supplying picture. Omit = audio-only EDL. */
18194
+ readonly video?: string;
18195
+ /** `EdlSource.id` supplying sound. Default: the unique `role:"master-audio"` source, else `video`. */
18196
+ readonly audio?: string;
18197
+ /** Dominant speaker label (informational). */
18198
+ readonly speaker?: string;
18199
+ /** Into THIS segment. Only "crossfade" consumes time (D17); never on segments[0].
18200
+ * `durationMs` is optional and inert for "cut". */
18201
+ readonly transition?: {
18202
+ readonly type: "cut" | "crossfade";
18203
+ readonly durationMs?: number;
18204
+ };
18205
+ /** Per-segment crop override — SINGLE-slot only (D20). */
18206
+ readonly region?: EdlRegion;
18207
+ readonly layout?: EdlLayout;
18208
+ /** Free tags: "hook", "chapter:2", … (removed spans live in `Edl.dropped`). */
18209
+ readonly labels?: readonly string[];
18210
+ }
18211
+ interface EdlDropped {
18212
+ readonly inMs: number;
18213
+ readonly outMs: number;
18214
+ readonly reason: "silence" | "filler" | "false-start" | "tangent" | "manual" | string;
18215
+ }
18216
+ interface Edl {
18217
+ readonly version: 1;
18218
+ /** D19: are `segments` on the source master clock, or an already-rendered output clock? */
18219
+ readonly clock: "master" | "output";
18220
+ readonly sources: readonly EdlSource[];
18221
+ /** The ordered output timeline. Output time = cumulative segment durations, less overlap transitions. */
18222
+ readonly segments: readonly EdlSegment[];
18223
+ readonly dropped?: readonly EdlDropped[];
18224
+ /** Set when this EDL was re-cut from a rendered output (speaker-view after apply-edl). */
18225
+ readonly derivedFrom?: {
18226
+ readonly edlId: string;
18227
+ readonly clock: "output";
18228
+ };
18229
+ readonly meta?: {
18230
+ readonly title?: string;
18231
+ readonly hook?: string;
18232
+ /** Known aspects: `EDL_TARGET_ASPECTS`. Open (`string & {}`) so an EDL
18233
+ * written by a newer producer still type-checks — an unknown aspect is a
18234
+ * validation WARNING (validateEdl), never an issue. */
18235
+ readonly targetAspect?: EdlTargetAspect | (string & {});
18236
+ readonly platform?: string;
18237
+ readonly notes?: string;
18238
+ };
18239
+ }
18240
+ /** The `clips` mode's response/SDK shape. On the canvas the node emits a bare
18241
+ * `Edl[]` (T5: the `list` fan-out reads a top-level JSON array), and the
18242
+ * cloud relay writes `output_data` as this object — the unwrap to the bare
18243
+ * array happens in the output extractors, never in `output_data`. */
18244
+ interface EdlClipSet {
18245
+ readonly version: 1;
18246
+ readonly clips: readonly Edl[];
18247
+ }
18248
+ /** The `chapters` mode's `output_data` shape — a plain `data` list. */
18249
+ interface ChapterSet {
18250
+ readonly version: 1;
18251
+ readonly chapters: ReadonlyArray<{
18252
+ readonly startMs: number;
18253
+ readonly title: string;
18254
+ }>;
18255
+ }
18256
+ /** The normalized JSON form of a transcribe result. */
18257
+ interface Transcript {
18258
+ readonly version: 1;
18259
+ /** D19: which `EdlSource` this transcript was made from (drives the offset in remap). */
18260
+ readonly sourceId?: string;
18261
+ readonly language?: string;
18262
+ readonly words: ReadonlyArray<{
18263
+ readonly text: string;
18264
+ readonly startMs: number;
18265
+ readonly endMs: number;
18266
+ readonly speaker?: string;
18267
+ readonly confidence?: number;
18268
+ }>;
18269
+ readonly segments?: ReadonlyArray<{
18270
+ readonly startMs: number;
18271
+ readonly endMs: number;
18272
+ readonly text: string;
18273
+ readonly speaker?: string;
18274
+ }>;
18275
+ }
18276
+ /** Duration (seconds) implied by a transcript — the LATEST word/segment `endMs`
18277
+ * across the whole transcript, in seconds. The edit-plan reserve's duration
18278
+ * fallback BENEATH the master-source ffprobe (`computeEditPlanReserveId`): the
18279
+ * authoritative reserve basis is a probe of the master media, exactly like the
18280
+ * plugin route; this transcript clock is used only in `buildPayload` (which
18281
+ * cannot ffprobe) and when that probe can't run, for a MASTER source node that
18282
+ * exposes no length of its own (a `reference-audio`/youtube or direct-URL
18283
+ * master carries its length in neither `data.duration` nor
18284
+ * `metadata.durationSeconds` — see `editPlanSourceDurationSec` — and its live
18285
+ * orchestrator output is a bare URL). The transcript is a REQUIRED edit-plan
18286
+ * input and is the timing map of that same master, so its last word's `endMs`
18287
+ * is a lower bound on the source's own clock.
18288
+ *
18289
+ * Accepts `unknown` because the cloud plugin's Zod is the transcript's schema
18290
+ * authority; this reads defensively and returns `undefined` for any shape it
18291
+ * can't measure (so the caller falls back to the ceiling bucket — the safe
18292
+ * over-reserve direction). Takes the MAX endMs rather than the last element so
18293
+ * an out-of-order words array can't under-report. NOTE the direction: a
18294
+ * transcript's last spoken word ends at or before the true media end (trailing
18295
+ * music/silence is not transcribed), so this can UNDER-estimate; bucket
18296
+ * round-up is the headroom, and the cloud re-probe money-gate refuses (never
18297
+ * overcharges) if the probed master still exceeds the reserved bucket. */
18298
+ declare function transcriptDurationSec(transcript: unknown): number | undefined;
18299
+ /** Rendered duration of the edit, in ms. Σ segment durations minus the
18300
+ * overlap transitions (D17: an `xfade`/`crossfade` compresses the timeline
18301
+ * by its duration per boundary; `cut`/`pan`/`zoom` do not). Total over BOTH
18302
+ * the segment- and layout-transition fields.
18303
+ *
18304
+ * Derived FROM `segmentOutputStarts` so the invariant
18305
+ * `outputStart(last) + dur(last) === edlDurationMs` holds by construction on
18306
+ * every input — including a normalized-but-not-yet-validated EDL (the reserve
18307
+ * runs this before validate). The two must never be two independent overlap
18308
+ * implementations that can drift. */
18309
+ declare function edlDurationMs(edl: Edl): number;
18310
+ /** Library-produced (never construct one yourself — fields may be added). `ok` is `issues.length === 0`;
18311
+ * warnings never flip it. Issues = facts intrinsic to the EDL. Warnings = judgements against a REGISTRY
18312
+ * (source roles, speaker layouts/switches/emphasis, target aspects) that a newer version may widen — so an
18313
+ * older validator never rejects a newer EDL. */
18314
+ interface EdlValidation {
18315
+ readonly ok: boolean;
18316
+ readonly issues: readonly string[];
18317
+ readonly warnings: readonly string[];
18318
+ }
18319
+ /** Structural validation. Coercion (defaults, clamping) is `normalizeEdl`'s
18320
+ * job; this reports what is still wrong after normalization. Segment ORDER is
18321
+ * the output timeline order and is NOT required to be monotonic on the master
18322
+ * clock — a legitimate multicam/clips EDL revisits earlier source time — so
18323
+ * the only per-segment ordering rule is `outMs > inMs`.
18324
+ *
18325
+ * The transition duration bound is the per-boundary ffmpeg-`xfade` limit: the
18326
+ * blend must be shorter than the adjacent material, so we validate at
18327
+ * `0.9 · min(the two adjacent segments)`. (combine-videos uses a more
18328
+ * conservative GLOBAL `0.9 · min(all clips)`; the per-boundary bound here is
18329
+ * the correct one, and the `apply-edl` executor must clamp per-boundary too —
18330
+ * copying combine's global-min would let validate pass a transition the
18331
+ * renderer then silently shortens, the R5 silent-edit this bound prevents.)
18332
+ * It applies only to overlap transitions; `cut`/`pan`/`zoom` are unbounded. */
18333
+ declare function validateEdl(edl: Edl): EdlValidation;
18334
+ /** Validate a clip set (the `clips` mode output). */
18335
+ declare function validateEdlClipSet(set: EdlClipSet): EdlValidation;
18336
+ /**
18337
+ * Map an instant on `sourceId`'s clock to the rendered output clock, or `null`
18338
+ * if that instant was dropped (falls in no kept segment). Applies the D19
18339
+ * offset (`masterMs = sourceMs + offsetMs`) and the D17 overlap compression.
18340
+ * `sourceId` omitted ⇒ the instant is already on the master clock.
18341
+ */
18342
+ declare function remapMsThroughEdl(edl: Edl, sourceMs: number, sourceId?: string): number | null;
18343
+ /**
18344
+ * Remap a transcript onto the rendered output: drop words that fall entirely
18345
+ * in removed material, clip a word that straddles a cut to its kept part, and
18346
+ * apply the source offset (via `transcript.sourceId`). Captions, chapters and
18347
+ * clip offsets all depend on this one function.
18348
+ */
18349
+ declare function remapTranscriptThroughEdl(edl: Edl, transcript: Transcript): Transcript;
18350
+ /** Speaker turns: consecutive same-speaker words merged across gaps shorter
18351
+ * than `mergeGapMs`, then turns shorter than `minTurnMs` dropped. */
18352
+ declare function speakerTurns(transcript: Transcript, opts: {
18353
+ minTurnMs: number;
18354
+ mergeGapMs: number;
18355
+ }): Array<{
18356
+ speaker: string;
18357
+ startMs: number;
18358
+ endMs: number;
18359
+ }>;
18360
+ /**
18361
+ * Coerce an unknown value into a well-formed `Edl`: fill defaults, drop unknown
18362
+ * fields, clamp regions to 0..1. All times are integer ms — there is NO
18363
+ * seconds→ms guessing (an integer-seconds EDL would silently become a
18364
+ * 1000×-longer edit; the contract is ms-only and a value that cannot be a
18365
+ * plausible ms EDL is a validation error, not a reinterpretation).
18366
+ *
18367
+ * Segment ORDER is preserved verbatim: it is the output timeline order, and a
18368
+ * multicam/clips EDL legitimately revisits earlier source time, so re-sorting
18369
+ * would corrupt it. (`dropped` has no ordering semantics and is left as-is.)
18370
+ */
18371
+ declare function normalizeEdl(input: unknown): Edl;
18372
+ /** Coerce an unknown value into a `Transcript`. ms-only, same rule as `normalizeEdl`. */
18373
+ declare function normalizeTranscript(input: unknown): Transcript;
18374
+
18375
+ /**
18376
+ * Multicam helpers over the EDL contract (`edl.ts`): folding measured source
18377
+ * offsets into an EDL (D19) and resolving what each on-screen slot of a
18378
+ * segment shows (D20). Pure — no I/O. Type-only imports from `edl.ts` keep the
18379
+ * module graph free of runtime cycles.
18380
+ */
18381
+
18382
+ /** audio-sync → EDL source offsets (D19: masterMs = sourceMs + offsetMs).
18383
+ * `offsets` are measured against ONE common reference (audio-sync's `reference`, which need not be the master).
18384
+ * ANCHORED SET: anchor = opts.anchor ?? the unique role:"master-audio" source ?? none.
18385
+ * - The anchor's own offsetMs is NEVER changed (the segments are on its clock).
18386
+ * - Every other provided source s: offsetMs = round((anchor.offsetMs ?? 0) + offsets[s] − (offsets[anchor] ?? 0)).
18387
+ * - No anchor: offsetMs = round(offsets[s]) verbatim (offsets already relative to the master clock).
18388
+ * SET, never ADD (re-running is idempotent). Returns a new Edl; never mutates; never throws.
18389
+ * `ignored[].reason` is a documented open string: "unknown-source" | "not-finite" | "anchor-unknown" | "anchor-not-finite".
18390
+ * opts.anchor not in edl.sources → NOTHING applied, ignored = [{ sourceId: anchor, reason: "anchor-unknown" }].
18391
+ * offsets[anchor] present but non-finite → NOTHING applied, ignored = [{ sourceId: anchor, reason: "anchor-not-finite" }]. */
18392
+ declare function mergeEdlSourceOffsets(edl: Edl, offsets: Readonly<Record<string, number>>, opts?: {
18393
+ readonly anchor?: string;
18394
+ }): {
18395
+ readonly edl: Edl;
18396
+ /** The source the offsets were anchored to — present whenever one resolved (it exists in `edl.sources`). */
18397
+ readonly anchor?: string;
18398
+ /** Source ids whose `offsetMs` was set, in `offsets` key order. */
18399
+ readonly applied: readonly string[];
18400
+ readonly ignored: ReadonlyArray<{
18401
+ readonly sourceId: string;
18402
+ readonly reason: string;
18403
+ }>;
18404
+ };
18405
+ declare const EDL_FULL_FRAME: EdlRegion;
18406
+ interface EdlResolvedSlot {
18407
+ readonly source: string;
18408
+ readonly region: EdlRegion;
18409
+ /** "resolver" = the caller's `regionFor` (v3 per-segment tracks). */
18410
+ readonly regionFrom: "slot" | "segment" | "resolver" | "speaker" | "source" | "full";
18411
+ readonly speaker?: string;
18412
+ readonly weight?: number;
18413
+ }
18414
+ interface ResolveEdlSlotsOptions {
18415
+ /** speaker-view's per-speaker framing table (a node SETTING, not an EDL field), keyed by (source, speaker) so a
18416
+ * wide-shot region never lands on a close-up camera framing the same person. */
18417
+ readonly speakerRegions?: ReadonlyArray<{
18418
+ readonly source: string;
18419
+ readonly speaker: string;
18420
+ readonly region: EdlRegion;
18421
+ }>;
18422
+ /** v3 hook: a per-(segment, slot) region, e.g. from a face track. Undefined = no opinion. */
18423
+ readonly regionFor?: (q: {
18424
+ readonly segment: EdlSegment;
18425
+ readonly source: string;
18426
+ readonly speaker?: string;
18427
+ }) => EdlRegion | undefined;
18428
+ }
18429
+ /** D20 — the ONE region-precedence implementation:
18430
+ * slot.region ▷ segment.region (single-slot only) ▷ regionFor ▷ speakerRegions[(source, speaker)] ▷ source.region ▷ full frame.
18431
+ * Slots = layout.slots when non-empty, else ONE implicit slot from segment.video (no video → []).
18432
+ * A slot's speaker = slot.speaker ?? (single slot ? segment.speaker : undefined); no speaker → the speaker rung is skipped.
18433
+ * A rung whose region is not a valid in-frame box (finite, 0..1, w/h > 0, x+w ≤ 1, y+h ≤ 1) falls through to the next.
18434
+ * Unknown source id → the source rung is skipped. Pure; never throws on its own. */
18435
+ declare function resolveEdlSegmentSlots(edl: Edl, segment: EdlSegment, opts?: ResolveEdlSlotsOptions): readonly EdlResolvedSlot[];
18436
+
18437
+ type EditPlanMode = "tighten" | "clips" | "chapters";
18438
+ type EditPlanTier = "economy" | "standard" | "premium";
18439
+ declare const EDIT_PLAN_MODES: readonly EditPlanMode[];
18440
+ declare const EDIT_PLAN_TIERS: readonly EditPlanTier[];
18441
+ /** The coarse duration ladder (MINUTES) a probed source duration rounds UP to;
18442
+ * the composite credit id carries the bucket. 3 modes × 3 tiers × 6 buckets =
18443
+ * 54 composites (+ the bare `edit-plan`). */
18444
+ declare const EDIT_PLAN_BUCKET_MINUTES: readonly number[];
18445
+ /** Hard duration cap (design §7.4). */
18446
+ declare const EDIT_PLAN_MAX_MINUTES = 180;
18447
+ /** `clips` mode: how many clips a plan returns when the caller names no count,
18448
+ * and the most it may be asked for. One source for the credit estimate, the
18449
+ * orchestrated payload clamp and the request schema. */
18450
+ declare const EDIT_PLAN_DEFAULT_CLIP_COUNT = 8;
18451
+ declare const EDIT_PLAN_MAX_CLIP_COUNT = 50;
18452
+ /** Clamp a requested clip count into `[1, EDIT_PLAN_MAX_CLIP_COUNT]`; `undefined`
18453
+ * for anything that is not a positive number (the planner then uses its default). */
18454
+ declare function clampEditPlanClipCount(count: unknown): number | undefined;
18455
+ /** The bare estimator / DB-down fallback id. */
18456
+ declare const EDIT_PLAN_BASE_CREDIT_ID = "edit-plan";
18457
+ /** Round a source duration (seconds) UP to the smallest covering ladder bucket
18458
+ * (capped at the max), in minutes. `undefined` / non-finite → the ceiling
18459
+ * bucket (the safe over-reserve direction). */
18460
+ declare function editPlanBucketMinutes(durationSec: number | undefined): number;
18461
+ /** `edit-plan:<mode>:<tier>:<bucket>m`. `durationSec` undefined → the ceiling
18462
+ * bucket. Single source of truth for the composite id shape. */
18463
+ declare function buildEditPlanCreditId(mode: EditPlanMode, tier: EditPlanTier, durationSec?: number): string;
18464
+ /** Narrow an arbitrary value to a known edit-plan mode, defaulting to "tighten". */
18465
+ declare function asEditPlanMode(v: unknown): EditPlanMode;
18466
+ /** Narrow an arbitrary value to a known edit-plan tier, defaulting to "standard". */
18467
+ declare function asEditPlanTier(v: unknown): EditPlanTier;
18468
+ /**
18469
+ * Unwrap an `edit-plan` job's `output_data` into the value stored on the node's
18470
+ * `data.generatedJson`, which every output extractor then reads. This is the ONE
18471
+ * place the three modes are normalized (the same rule on both engines and every
18472
+ * result-application site, so audit-dag parity can't drift):
18473
+ * - `clips` → the BARE `Edl[]` (T5: the `list` fan-out reads `Array.isArray`
18474
+ * on `generatedJson`; each element becomes one JSON-stringified
18475
+ * item a downstream `edl` input `normalizeEdl`-parses).
18476
+ * - `chapters` → the `{ version, chapters }` object.
18477
+ * - `tighten` → the `Edl` object at top level.
18478
+ *
18479
+ * The cloud relay object-spreads `output_data` and adds `viaNodaroCloud: true`;
18480
+ * that key (and any other bookkeeping) is stripped here. The unwrap lives HERE —
18481
+ * NEVER in `output_data` — because a bare array written into `output_data` would
18482
+ * be corrupted into numeric keys by the relay's object-spread (see `EdlClipSet`).
18483
+ */
18484
+ declare function unwrapEditPlanOutput(outputData: unknown): unknown;
18485
+
18486
+ /**
18487
+ * "Auto" video duration — the model decides the clip length. The wire value is
18488
+ * KIE's own (`duration: -1`): on a video EDIT the output takes the source
18489
+ * clip's length, on any other run the model picks within its valid range.
18490
+ * Stored in the ordinary numeric `duration` field (node data, routes, presets,
18491
+ * MCP) so every surface that can carry a duration can carry Auto. Which models
18492
+ * accept it is a catalog capability (`MODEL_CATALOG[id].autoDuration`), read
18493
+ * through `supportsAutoVideoDuration`.
18494
+ *
18495
+ * Import-free on purpose: the catalog and the constants module both need it,
18496
+ * and they already depend on each other.
18497
+ */
18498
+ declare const VIDEO_DURATION_AUTO = -1;
18499
+ declare function isAutoVideoDuration(duration: unknown): boolean;
18500
+
18501
+ export { ACCESS_LEVELS, ACTIVE_SCENE_HELPERS, ADVANCED_MODE_UNAVAILABLE_REASON, AGGREGATEABLE_TYPES, AGGREGATE_LANE_SOURCE_TYPES, AI_AVATAR_DURATION_BUCKETS, AI_AVATAR_MAX_AUDIO_SEC, AI_AVATAR_MAX_DURATION_SEC, AI_AVATAR_RESERVE_IDS, AI_WRITER_PROVIDERS, ALA_CARTE_BOARDS, ALL_CAPTION_STYLES, ANIMALS, ANIMAL_SUBCATEGORY_LABELS, ANIMAL_SUBCATEGORY_ORDER, ASPECT_RATIO_DIMENSIONS, AUDIO_ADDON_PROVIDERS, AUDIO_CROSSFADE_CURVES, AUDIO_CROSSFADE_CURVE_IDS, AUDIO_FX_PRESETS, AUDIO_FX_PRESET_LABELS, AUDIO_FX_PRESET_SET, AUDIO_FX_REVERB_PRESETS, AUDIO_PRODUCER_TYPES, type AccessLevel, type AdCreativeAnalysis, type AddBRollResult, AddBRollResultSchema, type AggregateableType, type AggregationBuckets, type AiAvatarDurationBucket, type AiAvatarEngine, type AiAvatarResolution, type AiWriterProvider, type AlaCarteBoard, type AnalyzedScene, type AnchorSceneStyleResult, AnchorSceneStyleResultSchema, type Animal, type AnimalSubcategory, type AssetRef, AssetRefSchema, type AudioCrossfadeCurve, type AudioFxPreset, type AudioLayer, type AuditImagesResult, AuditImagesResultSchema, type AuditImagesShotEntry, AuditImagesShotEntrySchema, AuditPromptIssueSchema, type AuditPromptResult, AuditPromptResultSchema, AvatarPayloadError, BOARD_TO_ASSET_TYPE, BOARD_TO_COLUMN, BOARD_VARIANTS, type BoardEntityKind, type BoardPromptContext, type BoardTemplate, BridgeToNextSceneInputSchema, type BridgeToNextSceneResult, BridgeToNextSceneResultSchema, type BrowseCommunityParams, type BrowseCommunityResult, CAPTION_LEVER_BOUNDS, CAPTION_LOOKS, CAPTION_LOOK_IDS, CAPTION_MAX_WORDS_PER_LINE_MAX, CAPTION_MAX_WORDS_PER_LINE_MIN, CATEGORY_DURATION_DEFAULTS, CHARACTER_ASPECT_DEFAULTS, CHARACTER_ASPECT_OPTIONS, CHARACTER_ASSET_TYPES, CHARACTER_ASSET_VARIANTS, CHARACTER_ATTACH_COLUMNS, CHARACTER_FACETS, CHARACTER_FACET_IDS, CHARACTER_LORA_TRAINING_JOB_TYPE, CHARACTER_MOTION_PROVIDERS, CHARACTER_PICKER_DISPLAY_ORDER, CHARACTER_REFERENCE_PHOTO_KINDS, CHARACTER_STYLES, CHARACTER_VARIANT_ASSET_BUCKETS, CHAT_ENABLED_STAGES, CHAT_STAGES, CHAT_TURN_CAPS, CHAT_WIRED_STAGES, CINEMATIC_DEFAULT_DURATION_SEC, CINEMATIC_DEFAULT_RESOLUTION, CINEMATIC_MAX_DURATION_SEC, CINEMATIC_MAX_LOOKS, CINEMATIC_MAX_REFERENCE_IMAGES, CINEMATIC_MAX_REFERENCE_VIDEOS, CINEMATIC_MIN_DURATION_SEC, CINEMATIC_MIN_LOOKS, CINEMATIC_PROMPT_MAX, CINEMATIC_RESERVE_IDS, COLLABORATOR_ROLES, COLLECT_IN_HANDLE, COMBINE_TRANSITIONS, COMBINE_TRANSITION_GROUP_LABELS, COMBINE_TRANSITION_GROUP_ORDER, COMBINE_TRANSITION_IDS, COMPOSER_PLAN_FIELDS, COMPOSER_PLAN_MAP, CONTENT_TYPES_BY_PLATFORM, CREATURE_ATTACH_COLUMNS, CREDIT_BASE_USD, CREDIT_ROUNDING_RESOLUTION, type CaptionLookId, type CaptionLookLevers, type CaptionStyle, type CastCoverageCriticVerdict, CastCoverageCriticVerdictSchema, type ChapterSet, type CharacterAspectRatio, type CharacterAssetType, type CharacterAssetTypeForAspect, type CharacterAttachColumn, type CharacterDef, type CharacterFacet, type CharacterImageCriticVerdict, CharacterImageCriticVerdictSchema, type CharacterLoraFields, type CharacterMentionTokenInfo, CharacterMetadataSchema, type CharacterMotionMetadata, type CharacterMotionProvider, type CharacterReferencePhoto, type CharacterReferencePhotoKind, type CharacterVariantAssetBucket, type CharacterVariantAssetItem, type CharacterVoiceSpec, type ChatEnabledStage, type ChatTurnResponse, ChatTurnResponseSchema, type CinematicResolution, type ClipLook, type CloneListingResult, type CollaboratorRole, type CombineTransition, type CombineTransitionGroup, type CombineVideosEstimatorInput, type CommunityCard, type CommunityEntityType, type CommunityFullDetail, type CommunityReportReason, type CommunitySort, type ComponentHandle, type ComponentMetadata, type ConnectedReference, type CreatureAttachColumn, CriticIssueSchema, type CustomEntry, DEFAULT_AUDIO_CROSSFADE_CURVE_ID, DEFAULT_CAPTION_LOOK, DEFAULT_CARRIED_FRACTION, DEFAULT_CHARACTER_ANGLE_COUNT, DEFAULT_CHARACTER_EXPRESSION_COUNT, DEFAULT_CHARACTER_FACET, DEFAULT_FRAME_DELIVERY, DEFAULT_FRAME_FIT, DEFAULT_LABEL_BY_SOURCE, DEFAULT_LOCATION_USAGE_MODE, DEFAULT_OVERLAY_QR, DEFAULT_OVERLAY_SHAPE, DEFAULT_OVERLAY_TEXT, DEFAULT_PANEL_COUNT, DEFAULT_REF_IMAGE_MAX, DEFAULT_SECTIONS, DEFAULT_SUBTITLE_LOOK, DEFAULT_SUNO_MODEL, DEFAULT_TEMPLATE_CATEGORY, DEFAULT_TRANSCRIBE_NODE_PROVIDER, DEFAULT_TRANSCRIBE_PROVIDER, DEFAULT_USAGE_MODE, DEFAULT_VIDEO_ANALYSIS_MODEL, DEFAULT_VIDEO_ANALYSIS_TIER, DEFAULT_VIDEO_CLIP_COST, DEFAULT_VIDEO_DURATION_SEC, DEFAULT_VIDEO_PROVIDER, DEFAULT_VOICE_CHANGER_MODEL, DEFAULT_VOICE_DESIGN_MODEL, DETAIL_VARIANTS, DURATION_PRICED_PROVIDERS, DYNAMIC_PRODUCER_TYPES, type DescribedReference, type DetectionResult, DetectionResultSchema, type DialogueLine, EDIT_PLAN_BASE_CREDIT_ID, EDIT_PLAN_BUCKET_MINUTES, EDIT_PLAN_DEFAULT_CLIP_COUNT, EDIT_PLAN_MAX_CLIP_COUNT, EDIT_PLAN_MAX_MINUTES, EDIT_PLAN_MODES, EDIT_PLAN_TIERS, EDL_FULL_FRAME, EDL_SOURCE_ROLES, EDL_TARGET_ASPECTS, EDL_VERSION, EFFORT_TIER_BUMP, EMOTIONAL_BEAT, ENTITY_ASPECT_DEFAULTS, ENTITY_BUCKET_FIELDS, ENTITY_DB_ID_FIELD, ENTITY_IMAGE_HANDLE_TYPES, ENTITY_KIND_SCALAR_FIELDS, ENTITY_NAME_FIELD, ENTITY_NODE_KINDS, ENTITY_SCALAR_FIELDS, ENTITY_SECTIONS, ENTITY_STATUSES, ENTITY_TABLE, ENTITY_TOOL_RETRY_CAP, ENTITY_TYPES, EXECUTION_DATA_KEYS, EXECUTION_GRAPH_COMPOSED_PARAMETER_TYPES, EXTEND_VIDEO_PROVIDERS, type EditPlanMode, type EditPlanTier, type Edl, type EdlClipSet, type EdlDropped, type EdlLayout, type EdlRegion, type EdlResolvedSlot, type EdlSegment, type EdlSource, type EdlSourceRole, type EdlTargetAspect, type EdlValidation, type EntityKind, type EntityMentionTokenInfo, type EntityMetadata, EntityMetadataSchema, type EntityNodeKind, type EntityReferenceInput, type EntityRejectInput, EntityRejectInputSchema, type EntitySlot, type EntitySlotOwner, type EntityStaleEvent, EntityStaleEventSchema, type EntityStateChangeEvent, EntityStateChangeEventSchema, type EntityStatus, type EntityStudioKind, type EntityStyle, type EntityType, type EvaluateConditionOptions, type ExportedPreset, type ExposableField, type ExposableOutput, type ExposedSetting, type ExtendVideoProvider, type ExtraRefCharacterContext, type ExtraRefInput, FACE_SWAP_PROVIDERS, FAL_LIP_SYNC_PROVIDERS, FAN_OUT_EACH_TYPES, FEATURED_ENTITIES, FILM_BASE_CREDITS, FLEXIBLE_INPUT_LIP_SYNC_PROVIDERS, FLUX2_RES_MP, FLUX_LORA_CHARACTER_MODEL_ID, FRAME_DELIVERIES, FRAME_DELIVERY_BY_PROVIDER, FRAME_FITS, FRAME_FIT_STRETCH_TOLERANCE, FRAME_MODE_ADAPTIVE_ONLY_ASPECT, FRAME_TARGET_HANDLES, FREECUT_EXPORT_COMPLETE, FREECUT_EXPORT_PROGRESS, FREECUT_READY, FREECUT_REQUEST_IMPORT, FURNITURE, FURNITURE_SUBCATEGORY_LABELS, FURNITURE_SUBCATEGORY_ORDER, type FaceSwapProvider, type FanOutCandidate, type FanOutPlan, type FavoriteListingResult, type FeaturedEntity, type FeaturedInstagramOutputs, type FeaturedMetaAdOutputs, type FeedEdge, type FeedMaps, type FeedNode, type FilmCreditEstimate, type FilterListCondition, type FilterListOperator, type FilterOperator, type FixContinuityInput, FixContinuityInputSchema, type FixContinuityResult, FixContinuityResultSchema, type Flux2Model, type FrameDelivery, type FrameFit, type FrameFitPlan, type FreecutExportCompletePayload, type FreecutExportProgressPayload, type FreecutImportFile, type FreecutRequestImportPayload, type FullSelectorMode, type Furniture, type FurnitureSubcategory, GEMINI_OMNI_PROVIDERS, GENERATE_TEXT_DELIMITER, GLOBAL_MAX_DURATION_SECONDS, GRANTED_ACCESS, GROUP_HANDLE_PREFIX, GUIDANCE_SCALE_SUPPORT, GVP_ANCHOR_CHOICES, GVP_DEFAULT_PROVIDER, GVP_END_FRAME_PROVIDERS, GVP_EXTEND_PROVIDERS, GVP_SUPPORTED_PROVIDERS, GenerateMotionInputSchema, type GenerateMotionResult, GenerateMotionResultSchema, type GenericEdge, type GenericNode, type GrantedAccess, type GvpAnchorChoice, type GvpAnchorWireMode, HANDLE_PORT_SEPARATOR, HELPERS_SHIPPED_IN_1B3, HIGH_QUALITY_PROVIDERS, HINT_EXEMPT_PARAMETER_TYPES, type HintEdgeLike, type HintGraphContext, type HintNodeLike, type I18nCatalogId, I2I_MASK_SUPPORT, I2I_STRENGTH_SUPPORT, IDEOGRAM_PROVIDERS, IMAGE_ASPECT_RATIO_VALUES, IMAGE_CRITIC_LEAF_MODES, IMAGE_CRITIC_MAX_RETRIES, IMAGE_CRITIC_METADATA_KEYS, IMAGE_CRITIC_MIN_ADHERENCE_SCORE, IMAGE_CRITIC_MODES, IMAGE_CRITIC_UNRESOLVABLE, IMAGE_EDIT_PROVIDERS, IMAGE_GEN_PROVIDERS, IMAGE_I2I_PROVIDERS, IMAGE_MASK_MODE, IMAGE_OVERLAY_BASE_CREDITS, IMAGE_OVERLAY_VARIANT_CREDITS, IMAGE_PROMPT_MAX, IMAGE_REF_TYPES, IMAGE_TO_VIDEO_PROVIDERS, INPUT_FIELD_MAP, INPUT_NODE_TYPES, INSTAGRAM_ANALYSIS_CREDIT_ID, INSTAGRAM_CAROUSEL_MAX_ITEMS, INSTAGRAM_CAROUSEL_MIN_ITEMS, INSTAGRAM_HOSTS, INSTAGRAM_SCRAPE_CREDIT_COSTS, INSTAGRAM_SCRAPE_DEFAULT_COUNT, INSTAGRAM_SCRAPE_FALLBACK_CREDIT_ID, INSTAGRAM_SCRAPE_MAX_COUNT, INSTAGRAM_SCRAPE_MAX_SOURCES, INSTAGRAM_SCRAPE_MAX_TARGET_LENGTH, INSTAGRAM_SCRAPE_MODES, INSTAGRAM_SCRAPE_NODE_TYPE, INSTAGRAM_SCRAPE_PERIODS, INSTAGRAM_SCRAPE_TIERS, ITER_CLONE_PATTERN, type IdentityFidelity, type IdentityMeta, type ImageAspectRatio, type ImageCriticIssue, ImageCriticIssueSchema, type ImageCriticLeafMode, type ImageCriticMetadataKey, type ImageCriticMode, type ImageCriticNodeIssue, type ImageCriticResult, ImageCriticResultSchema, type ImageCriticVerdict, ImageCriticVerdictSchema, type ImageEditProvider, type ImageGenProvider, type ImageI2IProvider, type ImageMaskMode, type ImageMentionTokenInfo, type ImageToVideoProvider, type ImprovePromptInput, ImprovePromptInputSchema, type ImprovePromptResult, ImprovePromptResultSchema, type InputFieldSchema, type InstagramFormat, type InstagramNodeQuoteFields, type InstagramScrapeMode, type InstagramScrapePeriod, type InstagramScrapeTier, type InvitationDelivery, type InvitationPreview, type InvitationState, type InvitationView, type JoinCodeView, type JsonEvalResult, type JsonFilter, type JsonPatch, KEYFRAME_CREDITS_PER_SHOT, KINETIC_CAPTION_STYLES, KINETIC_ONLY_CAPTION_LEVER_KEYS, type KieApiFormat, type KineticCaptionStyle, type KineticOnlyCaptionLeverKey, LANGUAGES, LEGACY_LOTTIE_HOST_REMAP, LEGACY_TEMPLATE_CATEGORIES, LIP_SYNC_DURATION_BUCKETS, LIP_SYNC_MAX_AUDIO_SECONDS, LIP_SYNC_PROVIDERS, LLM_FEATURE_DEFAULTS, LLM_MODALITY_CAPS, LLM_MODELS, LLM_MODEL_IDS, LLM_REASONING_EFFORTS, LLM_ROUTE_DEFAULTS, LLM_TEXT_INPUT_MAX, LLM_VENDOR_LABELS, LLM_VENDOR_ORDER, LOCATION_ASSET_TYPES, LOCATION_ASSET_VARIANTS, LOCATION_ATMOSPHERE_PROVIDERS, LOCATION_ATTACH_COLUMNS, LOCATION_BUCKET_TO_CATALOG_ID, LOCATION_PRESET_TO_CATALOG, LOCATION_REFERENCE_PHOTO_KINDS, LOCATION_REFERENCE_PHOTO_KIND_LABELS, LOCATION_USAGE_MODES, LOTTIE_OVERLAY_CATALOG, LOTTIE_SLOT_FIELD_PREFIX, type LabeledOption, type LipSyncDurationBucket, type LipSyncProvider, type ListFanOut, type LlmFeature, type LlmModelDef, type LlmModelGroup, type LlmReasoningEffort, type LlmRouteDefaults, type LlmTier, type LlmVendor, type LocalTime, type LocaleCatalogMap, type LocaleDirection, type LocaleId, type LocationAssetType, type LocationAtmosphereProvider, type LocationAttachColumn, type LocationCatalogRef, type LocationImageCriticVerdict, LocationImageCriticVerdictSchema, type LocationMentionTokenInfo, LocationMetadataSchema, type LocationReferencePhotoKind, type LocationUsageMode, LocationsCoverageCriticIssueSchema, type LocationsCoverageCriticVerdict, LocationsCoverageCriticVerdictSchema, type LoopTrimEstimatorInput, type LoopVideoEstimatorInput, type LoraEligibleRef, type LoraRouting, type LottieOverlayCatalogEntry, type LottieSlotField, MAX_CUSTOM_ENTRIES_PER_BOARD, MAX_IMAGE_PROMPT_CHARS_BY_PROVIDER, MAX_LOCATION_VARIANTS, MAX_NEGATIVE_PROMPT_CHARS_BY_PROVIDER, MAX_PANELS_PER_SHEET, MAX_TTS_CHARS_BY_PROVIDER, MAX_VIDEO_PROMPT_CHARS_BY_PROVIDER, MEMBER_STATUSES, META_ADS_ADVERTISER_MAX_RESULTS, META_ADS_ANALYSIS_CREDITS_PER_AD, META_ADS_ANALYSIS_CREDIT_ID, META_ADS_ANALYSIS_FOCUS_MAX, META_ADS_ANALYSIS_TIERS, META_ADS_FORMATS, META_ADS_NODE_MODES, META_ADS_PLATFORMS, META_ADS_SCRAPE_COUNT_OPTIONS, META_ADS_SCRAPE_CREDIT_COSTS, META_ADS_SCRAPE_DEFAULT_COUNT, META_ADS_SCRAPE_DEFAULT_COUNTRY, META_ADS_SCRAPE_FALLBACK_CREDIT_ID, META_ADS_SCRAPE_MAX_COUNT, META_ADS_SCRAPE_MAX_QUERY_LENGTH, META_ADS_SCRAPE_MAX_SOURCES, META_ADS_SCRAPE_MODES, META_ADS_SCRAPE_NODE_TYPE, META_ADS_SCRAPE_PERIODS, META_ADS_SCRAPE_STATUSES, META_ADS_SCRAPE_TIERS, MINIMAX_H3_DEFAULT_RESOLUTION, MINIMAX_H3_PROVIDERS, MODELS_WITH_REFERENCE_IMAGE_SUPPORT, MODEL_CATALOG, MODEL_KINDS, MODEL_PARAM_NODE_TYPES, MODEL_RECOMMENDATIONS, MODIFY_IMAGE_PROVIDERS, MOTION_COLUMN, MOTION_TRANSFER_PROVIDERS, MUSIC_PROVIDERS, type MaskRegionDescriptor, type MatchCutVerdict, MatchCutVerdictSchema, type MeOrganizations, type Member, type MemberStatus, type MetaAdsAdvertiser, type MetaAdsAnalysisTier, type MetaAdsCreativeFormat, type MetaAdsFormat, type MetaAdsNodeMode, type MetaAdsNodeQuoteFields, type MetaAdsNodeSourceFields, type MetaAdsPlatform, type MetaAdsScrapeMode, type MetaAdsScrapePeriod, type MetaAdsScrapeStatus, type MetaAdsScrapeTier, type MetaAdsWireSources, type MinimalEdge, type MinimalNode, type ModelCatalogEntry, type ModelInputAdjustment, type ModelKind, type ModelMenuOption, type ModelMode, type ModelNodeTarget, type ModelPromptingStyle, type ModelRecommendation, type ModelTreeLine, type ModelTreeVariant, type ModelValidationIssue, type ModifyImageProvider, type MotionTransferProviderType, type MusicProvider, NATIVE_ADAPTIVE_ASPECT, NATIVE_NEGATIVE_PROMPT_MODELS, NATIVE_NEGATIVE_VIDEO_PROVIDERS, NEGATIVE_PROMPT_MAX, NODARO_IMPORT_FILES, NODARO_LOAD_TIMELINE, NODARO_LOAD_VIDEO, NODARO_RESET_PROJECT, NODE_DEFAULT_TYPES, NODE_MAPPABLE_FIELDS, NODE_PRESET_EXPORT_KIND, NODE_REF_PATTERN, NON_EN_LOCALE_IDS, NON_PROMPT_TEXT_LANES, NO_SPLIT_DELIMITER, type NodaroLoadTimelinePayload, type NodaroLoadVideoPayload, type NodeDefaultType, type NodeExecutionStateWire, type NodeExecutionStatus, type NodeParamAdjustment, type NodePresetExport, type NormalizedImageGen, type NormalizedModelInput, type NormalizedNodes, type NormalizedVideoRequest, OBJECT_ASPECT_DEFAULTS, OBJECT_ASPECT_OPTIONS, OBJECT_ASSET_TYPES, OBJECT_ASSET_VARIANTS, OBJECT_ATTACH_COLUMNS, OBJECT_MOTION_PROVIDERS, OBJECT_PICKER_NODE_TYPES, ORG_ERROR_CODES, ORG_KINDS, ORG_ROLES, ORG_STATUSES, OUTPUT_BEARING_NODE_STATUSES, OUTPUT_FIELD_MAP, OUTPUT_FORMATS, OVERLAY_ANCHORS, OVERLAY_FONTS, OVERLAY_FONT_IDS, OVERLAY_IMAGE_MASKS, OVERLAY_LAYER_KINDS, OVERLAY_MAX_VARIANTS, OVERLAY_PLATFORMS, OVERLAY_PLATFORM_IDS, OVERLAY_SHAPES, OVERLAY_TEXT_ALIGNS, OVERLAY_VARIANT_HANDLE_PREFIX, type ObjectAspectRatio, type ObjectAssetType, type ObjectAssetTypeForAspect, type ObjectAttachColumn, ObjectMetadataSchema, type ObjectMotionProvider, type ObjectsValidationIssue, type ObjectsValidationResult, OptimizeForModelInputSchema, type OptimizeForModelResult, OptimizeForModelResultSchema, type OrgAuditEntry, type OrgErrorCode, type OrgKind, type OrgMemberView, type OrgPage, type OrgRole, type OrgSettings, OrgSettingsSchema, type OrgStatus, type OrganizationSummary, type OrganizationView, type OutputFormat, type OutputMode, type OutputType, type OverlayAnchor, type OverlayFontId, type OverlayImageEffects, type OverlayImageMask, type OverlayLayerKind, type OverlayPlatformId, type OverlayPlatformPreset, type OverlayPlatformZone, type OverlayQrStyle, type OverlayShape, type OverlayShapeElement, type OverlayShapeStyle, type OverlayTextAlign, type OverlayTextStyle, PARAMETER_NODE_TYPES, PASSTHROUGH_TYPES, PAYG_RETENTION_DAYS, PER_FORMAT_DURATION_BOUNDS, PICKER_TO_COMBINE_TRANSITION, PIPELINE_ACTIVATION_MODES, PIPELINE_FORMATS, PIPELINE_HARD_TIMEOUT_MS, PIPELINE_MODEL_STAGES, PIPELINE_MODES, PIPELINE_OUTPUT_RESOLUTIONS, PIPELINE_PINNABLE_IMAGE_MODELS, PIPELINE_PINNABLE_SCRIPT_LLMS, PIPELINE_PINNABLE_VIDEO_MODELS, PIPELINE_STAGE_NAMES, PIPELINE_STAGE_TIMEOUT_MS, PIPELINE_TYPES, PLACEHOLDER_CHARACTER_NAME, PLATFORM_LABELS, PLATFORM_SPECS, PRESET_APPLY_CLEAR_KEYS, PRESET_EXCLUDED_KEYS, PRESET_LABELS, PRESET_SETTING_KEYS, PRICING_DEFAULT_DURATION_SEC, PRICING_DEFAULT_RESOLUTION, PRO3D_RENDER_ASPECT_RATIOS, PRO3D_RENDER_CREDIT_ID, PRO3D_RENDER_DEFAULT_ENGINE, PRO3D_RENDER_DEFAULT_QUALITY, PRO3D_RENDER_DEFAULT_REPAIR_PASSES, PRO3D_RENDER_DEFAULT_STYLE, PRO3D_RENDER_ENGINES, PRO3D_RENDER_LABEL, PRO3D_RENDER_LIMITS, PRO3D_RENDER_MAX_REPAIR_PASSES, PRO3D_RENDER_MIN_REPAIR_PASSES, PRO3D_RENDER_NODE_TYPE, PRO3D_RENDER_PROMPT_MAX, PRO3D_RENDER_QUALITY_PROFILES, PRO3D_RENDER_SOURCE_KINDS, PRO3D_RENDER_STYLES, PROJECTED_TRIGGER_NODE_TYPES, PROMPT_HARD_CEILING, PROMPT_PREFIX_KEY, PROMPT_SUFFIX_KEY, PROVIDER_DIRECTIVE_DEFAULTS, PROVIDER_PLACEHOLDER_PREFIX, type PanelGenRequest, type PanelRequest, type PanelSource, type PipelineActivationMode, type PipelineCompletedEvent, PipelineCompletedEventSchema, type PipelineConfig, PipelineConfigSchema, type PipelineDriftSummary, PipelineDriftSummarySchema, type PipelineEditorDecisionsReadyEvent, PipelineEditorDecisionsReadyEventSchema, type PipelineEvent, type PipelineForkedEvent, PipelineForkedEventSchema, type PipelineFormat, type PipelineInput, PipelineInputSchema, type PipelineLifecycleEvent, type PipelineMode, type PipelineModelStage, type PipelineMusicReadyEvent, PipelineMusicReadyEventSchema, type PipelineOutputResolution, type PipelinePinnableImageModel, type PipelinePinnableScriptLlm, type PipelinePinnableVideoModel, type PipelineStageName, PipelineStageNameSchema, type PipelineStageStatus, PipelineStageStatusSchema, type PipelineState, PipelineStateSchema, type PipelineStatus, PipelineStatusSchema, type PipelineType, type PixelBox, type PreflightGraphEdge, type PreflightGraphNode, type PresentationItem, type PresetEntry, type PresetSettingKey, type PresetSettings, PresetSettingsSchema, type PriceVariant, type PricedVideoSelection, type Pro3DRenderAspectRatio, type Pro3DRenderCapabilities, type Pro3DRenderEngine, type Pro3DRenderJobOutput, type Pro3DRenderLocalExportSource, type Pro3DRenderPromptSource, type Pro3DRenderQuality, type Pro3DRenderQuote, type Pro3DRenderQuoteLine, type Pro3DRenderResultMetadata, type Pro3DRenderSceneSource, type Pro3DRenderShotStill, type Pro3DRenderSource, type Pro3DRenderSourceInput, type Pro3DRenderSourceKind, type Pro3DRenderSourceResult, type Pro3DRenderStyle, type Pro3DRenderValidationWarning, type ProgressSegment, type ProjectedCatalog, type ProjectedCatalogDimension, type ProjectedCatalogOption, type PromptAffixFields, type PromptAffixes, type ProposedChange, type PublishListingParams, type PublishListingResult, QA_CHECK_PROVIDERS, type QaCheckProvider, type QualityLevel, REASONING_OUTPUT_FLOOR, REDUCE_STRATEGIES, REDUCE_STRATEGY_IDS, REFERENCE_BOARD_PROVIDERS, REFERENCE_BOARD_TEMPLATES, REFERENCE_HANDLE_MAP, REFERENCE_ROLE_PRESETS, REF_HANDLE_CATEGORY, REF_IMAGE_MAX_LIMITS, REF_TOKEN_NAMESPACE_PREFIXES, RENDERING_SPEED_SUPPORT, RENDER_VIDEO_CREDIT_ID, REPEATABLE_NODE_TYPES, REPEAT_PLACEHOLDER, REPLICATE_LIP_SYNC_PROVIDERS, RESERVED_TEMPLATE_VARS, type ReduceMeta, type ReduceStrategy, type ReduceStrategyId, type RefCandidate, type RefModalityEdge, type RefTokenKind, type RefVideoDurationLimit, type ReferenceBoardProvider, type ReferenceModality, type ReferenceSheet, type ReferenceSource, type ReportListingResult, type ResolveCharacterAspectOptions, type ResolveEdlSlotsOptions, type ResolveObjectAspectOptions, type ResolveSeparatorOptions, type ResolvedDialogueVoiceLine, type RouterConditionGroup, SCENE3D_ASSERTION_RESTORED_CODE, SCENE3D_ASSET_KINDS, SCENE3D_ASSET_ROLES, SCENE3D_ASSET_ROLE_KINDS, SCENE3D_AUTHORING_ASSUMPTION_CODE, SCENE3D_AUTHORING_ENGINES, SCENE3D_BASIC_ENGINE, SCENE3D_BASIC_SCHEMA_VERSION, SCENE3D_CAMERA_TRACK_FORMAT, SCENE3D_CAMERA_TRACK_LIMITS, SCENE3D_CAMERA_TRACK_VERSION, SCENE3D_CLAY_LIGHTING_PRESETS, SCENE3D_DEFAULT_ADVANCED_ENGINE, SCENE3D_DEFAULT_DURATION_SECONDS, SCENE3D_DEFAULT_ENTITY_CAPABILITIES, SCENE3D_DEFAULT_FPS, SCENE3D_EDIT_NODE_TYPE, SCENE3D_ENTITY_CAPABILITIES, SCENE3D_ENTITY_ROLES, SCENE3D_GENERATE_NODE_TYPE, SCENE3D_GLB_EXTRAS_ALLOWLIST, SCENE3D_GLB_EXTRAS_ENTITY_ID, SCENE3D_GLB_EXTRAS_MATERIAL_ROLE, SCENE3D_GLB_EXTRAS_SUBPART_ID, SCENE3D_LIMITS, SCENE3D_PLAN_FIELD, SCENE3D_PLAN_TYPE, SCENE3D_PRIMITIVES, SCENE3D_PRIMITIVE_MATERIAL_ROLE, SCENE3D_REMEDY_AUTO_APPLIED_CODE, SCENE3D_RENDERER_ASSET_KINDS, SCENE3D_RENDER_BASE_MAX_PX, SCENE3D_RENDER_TIERS, SCENE3D_RENDER_TIER_MULTIPLIERS, SCENE3D_RENDER_XLARGE_MIN_AREA_PX, SCENE3D_REVIEW_REFUSED_CODE, SCENE3D_REVIEW_UNAVAILABLE_CODE, SCENE3D_REVIEW_UNAVAILABLE_REASONS, SCENE3D_SCHEMA_VERSION, SCENE3D_SCHEMA_VERSION_V2, SCENE3D_SUPPORTED_SCHEMA_VERSIONS, SCENE3D_V2_CONTENT_HASH_EXCLUDED, SCENE3D_V2_ENGINES, SCENE3D_V2_LIMITS, SCENE3D_V2_OVERRIDE_OPERATION_VERSION, SCENE3D_V2_PRIMITIVES, SCENE_HELPER_NAMES, SCHEDULE_EVERY_LIMITS, SCHEDULE_RULE_KINDS, SCHEDULE_TRIGGER_NODE_TYPE, SCRAPER_ACTOR_LABELS, SCRAPER_CREDIT_COSTS, SCRAPER_OUTPUT_FIELDS, SCRIPT_PROVIDERS, SEASONS, SECTION_BOARD, SECTION_KINDS, SEEDANCE_2_5_REF_LIMITS, SEEDANCE_2_CONTINUATION_REF_SEC, SEEDANCE_2_EXTEND_STITCH, SEEDANCE_2_PROVIDERS, SEEDANCE_2_R2V_MAX_AUDIO_SEC_BY_PROVIDER, SEEDANCE_2_R2V_MIN_REF_VIDEO_SEC, SEEDANCE_2_REF_LIMITS, SEEDANCE_LIP_SYNC_PROVIDERS, SEEDANCE_VIDEO_EDIT_PROVIDERS, SEEDANCE_VIDEO_EDIT_SHAPE, SEED_SUPPORT, SEPARATOR_DISPLAY, SEPARATOR_PRESETS, SHEET_ASPECTS, SHEET_BACKGROUNDS, SHEET_PRESETS, SHEET_SKINS, SHEET_TYPES, SHORT_FILM_ANGLE_COUNT, SHORT_FILM_EXPRESSION_COUNT, SHORT_FILM_VARIANT_THRESHOLD_SEC, SLOT_TOKEN_RE, SMART_CUT_WINDOW_DEFAULT, SMART_CUT_WINDOW_MAX, SMART_CUT_WINDOW_MIN, SOCIAL_POST_NODE_TYPES, SOCIAL_VIDEO_HOSTS, SPEAKER_EMPHASIS_STYLES, SPEAKER_LAYOUTS, SPEAKER_LAYOUT_IDS, SPEAKER_SWITCHES, SPEAKER_SWITCH_IDS, STAGE_PATCH_SCHEMA, STATIC_CAPTION_STYLES, STRUCTURAL_SECTIONS, STRUCTURED_VISION_MODELS, STUDIO_DEPENDENT_FRAMES_CAPABILITY, STUDIO_SHOT_TRANSIENT_KEYS, STUDIO_TRANSIENT_KEYS, SUBMISSION_STATUSES, SUNO_ACTIVE_MODELS, SUNO_ADD_TRACK_MODELS, SUNO_DURATION_MODELS, SUNO_FIELD_HANDLE_FIELDS, SUNO_HARD_CEILING, SUNO_LEGACY_MODELS, SUNO_MODELS, SUNO_SELECT_OPERATIONS, SUNO_TEXT_MAX, SUNO_TITLE_MAX, SUNO_TRACK_SOURCE_TYPES, SUNO_VERSION_CREDIT_KEYS, SUNO_VERSION_PRICED_OPERATIONS, SUPPORTED_FONT_NAMES, SURROUND_DIRECTIONS, SWITCHX_BLOCK_FRAMES, SWITCHX_FRAME_TIERS, type SafetyRetryPolicy, type Scene3DAnchor, type Scene3DAssetAnimation, type Scene3DAssetKind, type Scene3DAssetRef, type Scene3DAssetRole, type Scene3DAuthoringDelivery, type Scene3DAuthoringDeliveryMetadata, type Scene3DAuthoringEngine, type Scene3DAuthoringValidation, type Scene3DCamera, type Scene3DCameraChanges, type Scene3DCameraKeyframe, type Scene3DCameraSample, type Scene3DCameraTrackV1, type Scene3DClayLighting, type Scene3DClayLightingPreset, type Scene3DDeliveryWarning, type Scene3DEasing, type Scene3DEditErrorCode, type Scene3DEditOperation, type Scene3DEditOptions, type Scene3DEditResult, type Scene3DEngineChoice, type Scene3DEngineChoiceInput, type Scene3DEngineChoiceRefusalCode, type Scene3DEngineRequestFields, type Scene3DEntityCapability, type Scene3DEntityRole, type Scene3DEntityV2, type Scene3DEntityVisual, type Scene3DInputAsset, type Scene3DJobOutput, type Scene3DJobOutputAny, type Scene3DJobOutputV2, type Scene3DKnownEngine, type Scene3DLighting, type Scene3DLightingChanges, type Scene3DMaterialBinding, type Scene3DNormalizedAssetStats, type Scene3DObject, type Scene3DObjectChanges, type Scene3DObjectKeyframe, type Scene3DOverride, type Scene3DOverrideSpace, type Scene3DParseResult, type Scene3DPlan, type Scene3DPlanV1, type Scene3DPlanV2, type Scene3DPrimitive, type Scene3DProvenance, type Scene3DReference, type Scene3DReferenceKind, type Scene3DReferenceRole, type Scene3DRenderTier, type Scene3DRestoredAssertion, type Scene3DReviewFindings, type Scene3DReviewObjection, type Scene3DReviewRefused, type Scene3DReviewUnavailable, type Scene3DReviewUnavailableReason, type Scene3DReviewVerdict, type Scene3DSemanticIssue, type Scene3DShot, type Scene3DSupportedSchemaVersion, type Scene3DV2EditOperation, type Scene3DV2EditOptions, type Scene3DV2EditResult, type Scene3DV2OverrideInput, type Scene3DV2Primitive, type Scene3DV2ResourceUsage, type SceneData, type SceneHelperName, SceneHelperNameSchema, type SceneInputMode, SceneInputModeSchema, type SceneMetadata, SceneMetadataSchema, type SceneNodeData, SceneNodeDataSchema, SceneSpecSchema, type ScheduleRule, type ScheduleRuleKind, type ScheduleSpec, type ScraperActorId, type ScriptCriticVerdict, ScriptCriticVerdictSchema, type ScriptProvider, type Season, type SectionKind, type SeedanceVideoEditProvider, type SelectorConfig, type SelectorFields, type SelectorMode, type SelectorPredicateOp, type SelectorResult, type SemanticAspectRatio, type SeparatorPreset, SequenceExecutionRequiredError, type SharedListing, type SharedVoice, type SheetAspect, type SheetBackground, type SheetCostEstimate, type SheetEntry, type SheetFlavour, type SheetGenerationPlan, type SheetPreset, type SheetPresetId, type SheetSection, type SheetSkin, type SheetTextData, type SheetType, type ShotElement, type ShotImageElement, type ShotShapeElement, type ShotSpec, ShotSpecSchema, type ShotTextElement, type ShowrunnerPlan, ShowrunnerPlanSchema, type SidecarLoader, type SlotControlDescriptor, type SlotControlKind, type SlotVariation, type SocialMediaContentType, type SocialMediaPlatform, type SocialMediaSpec, type SortDirection, type SortListOptions, type SortType, type SpeakerEmphasisStyle, type SpeakerLayoutSheet, type SpeakerSwitchSheet, type StageAwaitingSubGateEvent, StageAwaitingSubGateEventSchema, type StaticCaptionStyle, type StoryboardCohesionCriticVerdict, StoryboardCohesionCriticVerdictSchema, type StyleDirectives, StyleDirectivesSchema, type SubGateName, SubGateNameSchema, type SubmissionStatus, type SunoAddTrackModel, type SunoModel, type SupportedFontName, type SurroundDirection, type Swatch, T2I_TO_I2I_VARIANT, TASK_CHAINED_EDIT_PROVIDERS, TELEGRAM_TRIGGER_NODE_TYPE, TEMPLATE_CATEGORIES, TEXT_TO_AUDIO_PROVIDERS, TEXT_TO_VIDEO_PROVIDERS, TIER_MAX_PIPELINE_COST_CREDITS, TIER_PIPELINE_PARALLELISM, TILT_CARRIED_FRACTION, TOPAZ_DEFAULT_UPSCALE_FACTOR, TOPAZ_UPSCALE_FACTORS, TRANSCRIBE_LANES, TRANSCRIBE_PROVIDERS, TRANSCRIBE_PROVIDER_CAPABILITIES, TRANSIENT_RUNTIME_KEYS, TTS_PROVIDERS, TTS_TEXT_MAX, TWO_K_RESOLUTION_PROVIDERS, type TemplateCategory, type TextToAudioProvider, type TextToVideoProvider, type TopazUpscaleAdjustment, type TopazUpscaleFactor, type TopazUpscaleResolution, type TranscribeLane, type TranscribeProvider, type Transcript, type TransitionType, TransitionTypeSchema, type TrimVideoEstimatorInput, type TtsProvider, UPSCALE_IMAGE_PROVIDERS, USAGE_GROUP_BYS, USAGE_MODES, type UpscaleImageProvider, type UsageGroupBy, type UsageLogEntry, type UsageMode, type UsageQuery, type UsageReport, type UsageReportRow, type UsageReportTotals, type UsageVarianceRow, VARIABLES_HANDLE_ID, VARIABLE_PRICING_MODELS, VEHICLES, VEHICLE_SUBCATEGORY_LABELS, VEHICLE_SUBCATEGORY_ORDER, VEO_PROVIDERS, VIDEO_ANALYSIS_AUDIO_MODES, VIDEO_ANALYSIS_BUCKET_CREDITS, VIDEO_ANALYSIS_CLIP_TRANSITIONS_IN, VIDEO_ANALYSIS_DEFAULT_VARIATION, VIDEO_ANALYSIS_DURATION_BUCKETS, VIDEO_ANALYSIS_DURATION_TOLERANCE_SEC, VIDEO_ANALYSIS_ENTITY_SOURCES, VIDEO_ANALYSIS_FACELESS_ANGLES, VIDEO_ANALYSIS_LEGACY_MODELS, VIDEO_ANALYSIS_LLM_MODELS, VIDEO_ANALYSIS_MAX_DURATION_SEC, VIDEO_ANALYSIS_MAX_SCENE_SEC, VIDEO_ANALYSIS_MAX_VARIATIONS, VIDEO_ANALYSIS_MIXED_TIERS, VIDEO_ANALYSIS_SHOT_ANGLES, VIDEO_ANALYSIS_SPEED_EFFECTS, VIDEO_ANALYSIS_STORY_JUMPS, VIDEO_ANALYSIS_TEXT_KINDS, VIDEO_ANALYSIS_TIERS, VIDEO_ANALYSIS_TIER_LABELS, VIDEO_ANALYSIS_TIER_ORDER, VIDEO_ANALYSIS_TIMES_OF_DAY, VIDEO_ANALYSIS_TRANSITIONS, VIDEO_ANALYSIS_VARIATION_SLUGS, VIDEO_ANALYSIS_VISUAL_EFFECTS, VIDEO_ANALYSIS_WINDOW, VIDEO_AUDIO_CAPABILITY, VIDEO_AUDIT_BUCKET_CREDITS, VIDEO_CLIP_CREDITS, VIDEO_CRITIC_CREDITS_PER_SHOT, VIDEO_CRITIC_FRAME_MODES, VIDEO_CRITIC_MAX_RETRIES, VIDEO_CRITIC_METADATA_KEYS, VIDEO_CRITIC_MIN_ADHERENCE_SCORE, VIDEO_DURATION_AUTO, VIDEO_DURATION_TIERS, VIDEO_GEN_COLLAPSED_T2V_IDS, VIDEO_GEN_PROVIDERS, VIDEO_INPUT_LIP_SYNC_PROVIDERS, VIDEO_LINK_TOLERANT_CONSUMER_TYPES, VIDEO_MODEL_CAPS, VIDEO_MODE_ALIASES, VIDEO_ONLY_PARAMETER_NODE_TYPES, VIDEO_OUTPUT_CANVAS, VIDEO_PRODUCER_TYPES, VIDEO_PROMPT_MAX, VIDEO_PROVIDERS_REQUIRING_IMAGE, VIDEO_PROVIDERS_WITHOUT_DISPATCH, VIDEO_REF_LIMITS_BY_PROVIDER, VIDEO_REF_VIDEO_DURATION_LIMITS, VIDEO_TO_VIDEO_NODE_PROVIDERS, VIDEO_TO_VIDEO_PROVIDERS, VIDEO_UPSCALE_PROVIDERS, VIDEO_UTIL_PRICING, VIDEO_VARIABLE_PRICING, VOICE_CHANGER_MODELS, VOICE_CHANGER_MODEL_IDS, VOICE_DESIGN_MODELS, type ValidateMatchCutInput, ValidateMatchCutInputSchema, type ValidateMatchCutResult, ValidateMatchCutResultSchema, type ValidationField, type Vec3, type Vehicle, type VehicleSubcategory, type VideoAnalysisAudioMode, type VideoAnalysisClipTransitionIn, type VideoAnalysisEntitySource, type VideoAnalysisMixedTier, type VideoAnalysisModelTier, type VideoAnalysisResult, type VideoAnalysisShotAngle, type VideoAnalysisSpeedEffect, type VideoAnalysisTextKind, type VideoAnalysisTier, type VideoAnalysisTransition, type VideoAnalysisVisualEffect, type VideoAudioCapability, type VideoAudioMode, type VideoClipCost, type VideoCriticFrameMode, type VideoCriticMetadataKey, type VideoCriticShotFields, type VideoCriticVerdict, VideoCriticVerdictSchema, type VideoGenProvider, type VideoLinkNodeFields, type VideoLinkPlatform, type VideoModeAlias, type VideoModelCapabilities, type VideoOutputCanvas, type VideoToVideoNodeProvider, type VideoToVideoProvider, type VideoUpscaleProvider, type Voice, type VoiceChangerModel, type VoiceClone, type VoiceDesignModel, type VoiceLibraryParams, type VoiceLibraryResponse, type VoiceMatch, VoiceMatchSchema, type VoiceType, WAN_3_DEFAULT_RESOLUTION, WAN_3_PROVIDERS, WARDROBE_VARIANTS, WEAPONS, WEAPON_SUBCATEGORY_LABELS, WEAPON_SUBCATEGORY_ORDER, WEBHOOK_TRIGGER_NODE_TYPE, WORKFLOW_VISIBILITIES, WORKSPACE_HEADER, WORKSPACE_HEADER_LOWER, WORKSPACE_ROLES, type Weapon, type WeaponSubcategory, type WindowAnalysis, type WindowScene, type WordlessTranscriptFeed, type WorkflowAssetKind, type WorkflowExport, type WorkflowExportCharacter, type WorkflowExportCreature, type WorkflowExportLocation, type WorkflowExportObject, type WorkflowImportReport, type WorkflowImportSkippedAsset, type WorkflowMediaRef, type WorkflowPortability, type WorkflowVisibility, type WorkspaceMemberView, type WorkspaceRole, type WorkspaceSettings, WorkspaceSettingsSchema, type WorkspaceSummary, type WorkspaceView, YOUTUBE_HOSTS, adCreativeAnalysisFrom, aggregateByType, aiAvatarReserveCreditId, alignedFieldList, analyzedSceneSchema, applyDefaultVideoSelection, applyHandleInputOverride, applyRange, applyRangeIndices, applyScene3DEditOperations, applyScene3DV2EditOperations, applySlots, applyVideoAudioToggle, applyVideoNegativePrompt, asEditPlanMode, asEditPlanTier, aspectRatioFromDims, aspectRatioOptionsByKind, aspectRatioToNumber, assembleNarratedVideoCredits, assertCanvasExecutionAllowed, autoStrokeWidth, availableReasoningEfforts, bucketSecondsFromAuditCreditId, bucketSecondsFromCreditId, buildBoardPrompt, buildChildrenByParent, buildConditionVariables, buildCreditModelIdentifier, buildEditPlanCreditId, buildExpressionFromVisual, buildFeedMaps, buildInstagramScrapeCreditId, buildLipSyncCreditId, buildLlmCreditIdentifier, buildMetaAdsScrapeCreditId, buildModelMenu, buildModelTree, buildMotionCreditModelIdentifier, buildNodePresetExport, buildPanelPrompt, buildPro3DRenderSource, buildProgressSegments, buildRangeLabel, buildScraperCreditId, buildVideoAnalysisCreditId, buildVideoAuditCreditId, buildVideoCreditModelIdentifier, calculateCombinedProgress, calculateMonetizationMarkup, calculateMonetizedCost, calculateProgress, canonicalScene3DPlanV2Json, canonicalVarName, captionRoutesToRemotion, centreCropToAspect, characterBoardItems, characterBucketDisplayRank, characterMentionSlug, characterMentionableAssetArrays, characterSheetRefItems, characterVariantAssetArrays, checkRefVideoDurations, cinematicCreditId, clampCinematicDuration, clampEditPlanClipCount, clampInstagramFeaturedIndex, clampMetaAdsFeaturedIndex, clampSmartCutWindow, classifyCreativeFormat, classifyRefToken, cleanOrphanedItems, clearImageCriticMetadata, clearVideoCriticMetadata, clipLookSchema, collectAncestorRefs, combineSameLabelRefs, compactWithRows, computeAggregateLanes, computeFrameFitPlan, computeScene3DPlanV2ContentHash, countRefModalityEdges, creditRangesAll, creditsToUsd, decodeProviderItem, defaultCarriedFraction, defaultResolutionFor, defaultRoleForSource, defaultVideoAspectRatio, deriveLinkedFields, deriveLottieSlotFields, deriveSlotRefs, describeEdgeBehavior, describeMaskRegion, describeNodeAdjustments, describeSlotControl, detectVideoLinkPlatform, dropUnknownBindings, dropUnknownSpeakers, durationsByMode, editPlanBucketMinutes, editPlanSourceDurationSec, edlDurationMs, effectiveReasoningEffort, encodeProviderItem, ensureLocaleCatalogLoaded, entityHydrationColumns, entityMentionSlug, entityMentionSlugForRef, entityScalarFields, entitySlotSchema, entryMatchesQuery, estimateCombineVideosCredits, estimateFilmCredits, estimateLoopTrimAddonCredits, estimateLoopVideoCredits, estimateScriptDurationSec, estimateSheetCost, estimateTrimVideoCredits, evaluateCondition, evaluateConditionGroup, evaluateJsonExpression, evaluateJsonPath, expandExtraRefsToConnectedReferences, expandItemsWithRepeat, extractAllGeneratedResults, extractCharacterLoraFields, extractGeneratedJsonAsList, extractPresetData, extractReferencedLabels, extractVideoDurationFromNode, fanOutTextFeedsPrompt, featuredInstagramOutputs, featuredMetaAdOutputs, fieldKeyFromHandle, filterCloneNodes, findCharacterMentionTokens, findEntityMentionTokens, findImageMentionTokens, findLocationMentionTokens, findSeedance2AudioOverLimit, findWordlessTranscriptFeeds, firstSightExtraRole, flattenItems, getAnimal, getAnimalLabel, getAnimalPromptHint, getAnimalTerm, getAspectRatioOptions, getAudioCrossfadeCurve, getCharacterFacet, getCombineTransition, getCreditRange, getDurationsForModel, getEffectiveRepeatCount, getFeaturedEntities, getFurniture, getFurnitureLabel, getInputFieldSchema, getInputNodes, getItemSortId, getLipSyncMaxAudioSeconds, getLlmModalityCaps, getLlmModel, getLlmTier, getLocaleDirection, getMaxImagePromptChars, getMaxNegativePromptChars, getMaxSunoPromptChars, getMaxSunoStyleChars, getMaxTtsChars, getMaxVideoPromptChars, getModel, getNodeLabel, getNodeResult, getOutputNodes, getOutputType, getParameterValue, getQualityOptions, getResolutionOptions, getRouteReachableNodeIds, getSpeakerLayout, getSpeakerSwitch, getStrategy, getTargetField, getValidValues, getVehicle, getVehicleLabel, getVideoAudioCapability, getWeapon, getWeaponLabel, groupByFamily, groupByKindAndFamily, groupHandleId, groupLlmModelsByVendor, hasContiguousSegmentDurations, hasFeature, hasUrlParserHazard, hexToRgbaArray, hostnameMatchesAllowlist, humanizeSlotSid, imageMentionSlug, imageMentionSlugForRef, imageOverlayBillableVariants, imageOverlayCredits, imageReferenceLimit, inferMusicVideo, instagramAnalysisCreditId, instagramAnalysisTierFrom, instagramScrapeCreditIdFromNode, instagramScrapeMode, instagramScrapeSources, instagramScrapeTier, isAggregateableType, isAutoVideoDuration, isCharacterAspectRatio, isCollectInEdge, isCronExpression, isDefaultSelectorConfig, isEdlTargetAspect, isExpandedClone, isFacebookPageUrl, isFanOutUrlItem, isFlux2Model, isGeminiOmniProvider, isGvpSupportedProvider, isHandleInputWired, isInstagramScrapeCount, isInstagramScrapeMode, isKineticCaptionStyle, isKnownScene3DEngine, isKnownSpeakerEmphasisStyle, isLegacySunoModel, isLocationUsageMode, isMetaAdsFormat, isMetaAdsPlatform, isMetaAdsScrapeCount, isMetaAdsScrapeMode, isMetaCdnImageUrl, isMinimaxH3Provider, isObjectAspectRatio, isOversizedScene, isPaygRetentionActive, isPerSecondLipSyncProvider, isPro3DRenderJobOutput, isPro3DRenderQuote, isPro3DRenderRenderOnly, isProjectedTriggerNodeType, isRtlText, isScene3DAuthoringEngine, isScene3DCameraTrack, isScene3DHttpUrl, isScene3DPlan, isScene3DPlanV1, isScene3DPlanV2, isScene3DReviewUnavailableReason, isScene3DSchemaVersionSupported, isScraperActor, isSeedance2Provider, isSeedanceVideoEditProvider, isSocialVideoUrl, isTemplateCategory, isTiltDirection, isUsageMode, isValidTimezone, isVeoProvider, isVideoAnalysisMixedTier, isVideoAnalysisTier, isWan3Provider, jsonResultToList, knownEntitySlugsFromRefs, knownImageSlugsFromRefs, legacyScheduleToRules, listBoardTemplates, listModels, listSlotSids, liveRowColumn, llmRouteDefaults, localMinuteKey, localTimeIn, locationMentionSlug, locationReferencePhotoKindLabel, locationUsageModeLabel, mapAspectRatio, mapQuality, mapShotIntentToProviderDirectives, matchVariant, matchesCron, matchesCronField, maxSegmentSecFor, maxSegmentsFor, maxVideoDurationSec, measuredCanvasCombinations, mergeClipLook, mergeEdlSourceOffsets, mergeExposedSettings, mergeNodeInputOverrides, metaAdsAdvertisersFrom, metaAdsAnalysisCreditId, metaAdsAnalysisTier, metaAdsAnalysisTierFrom, metaAdsNodeMode, metaAdsScrapeCreditIdFromNode, metaAdsScrapeSources, metaAdsScrapeTier, metaAdsScrapeWireSources, migrateEdgeOutputMode, migrateToItems, minSegmentSecFor, minimalRatioDimensions, modelIdsByKindMode, modelToNodeTarget, modelsForInputMode, modelsWithFeature, motionGraphicsFeature, newScene3DRevisionId, nextScheduleRuns, nodeFeedsAnything, nodeStateMayCarryOutput, normalizeCaptionNumericLevers, normalizeEdl, normalizeLottieLayers, normalizeMinimaxH3Resolution, normalizeModelInput, normalizeNodeModelParams, normalizePinterestUrl, normalizeRoleSlug, normalizeScheduleRule, normalizeScheduleRules, normalizeTemplateCategory, normalizeTranscript, normalizeVideoRequestParams, normalizeWan3Resolution, orderedLlmModels, overlayFontById, overlayImageEffectsSchema, overlayPlatformById, overlayQrStyleSchema, overlayShapeElement, overlayShapeStyleSchema, overlayStrokeSchema, overlayTextStyleSchema, overlayVariantHandle, overlayVariantIdFromHandle, parseAspectToken, parseAttributedDialogue, parseCharacterMentionToken, parseEntityMentionToken, parseGroupHandle, parseHandleId, parseImageMentionToken, parseListExpression, parseLocationMentionToken, parseNodePresetExport, parseNodeRef, parseScene3DCameraTrackJson, parseScene3DPlanV2Json, parseSpeakerEmphasisStyle, pickAiAvatarBucket, pickIds, pickLipSyncBucket, pickSwitchXFrameTier, pickVideoAnalysisBucket, planFanOut, planSheetGeneration, planSheetPanels, preferredInputModeForModel, presentTypes, presetApplyClearKeys, presetDataMatches, presetEntries, previewHorizonMs, pricedOutputDurationSec, pricedVideoSelection, pro3DRenderCoreOutputSchema, pro3DRenderFrameUnit, pro3DRenderJobOutputSchema, pro3DRenderProducedSchemaVersion, pro3DRenderQuoteSchema, pro3DRenderReviewVerdictSchema, pro3DRenderShotStillSchema, pro3DRenderShotStills, pro3DRenderTimingOverrides, qualityOptionsByKind, readPromptAffixes, reasoningOutputFloor, refHandleCategory, referenceModalityForHandle, referenceSheetCreditId, registerCatalogSidecars, registerSidecarLoaders, remapMsThroughEdl, remapTranscriptThroughEdl, renderAnalyzedScene, renderVideoCreditId, requiresSequenceExecution, resetCatalogSidecars, resolutionOptionsByKind, resolveAiAvatarCreditId, resolveAudioCrossfadeCurve, resolveCaptionLevers, resolveCaptionLook, resolveCharacterAspectRatio, resolveCinematicCreditId, resolveConditionValue, resolveDefaultRole, resolveDescription, resolveDialogueVoices, resolveEdlSegmentSlots, resolveEffectiveSourceType, resolveEffectiveTier, resolveEntityAspect, resolveFieldMappings, resolveFrameDelivery, resolveFrameFitAspect, resolveGvpAnchorWire, resolveImageGenCreditIdentifier, resolveIndex, resolveInstagramScrapeCreditId, resolveLabel, resolveListExpression, resolveListFanOut, resolveLlmCreditId, resolveLocationFields, resolveLocationPresetCatalog, resolveLottieOverlaySrc, resolveMetaAdsScrapeCreditId, resolveNodeRefs, resolveNormalizedImageGen, resolveObjectAspectRatio, resolveOutputCanvas, resolvePipelineModel, resolveRelativeWindowToken, resolveScene3DAuthoringEngine, resolveScraperCreditId, resolveSelectorRefs, resolveSeparator, resolveSheetSections, resolveSlideshowTransition, resolveSourceThroughConnectedList, resolveStoredTier, resolveSwitchXCreditId, resolveTemplateCategory, resolveTopazUpscale, resolveVideoAnalysisModel, resolveVideoLinkOutput, resolveVideoModeForInputs, resolveVideoProviderForMode, resolveXfadeName, rewriteSceneBindings, rewriteSlotTokens, rewriteSpeakerSlots, rgbaArrayToHex, roleToPhrase, rotationVec3Schema, ruleMatches, runSelector, safetyRetryPolicy, sanitizeRole, scaleVec3Schema, scene3DAcceptedSchemaVersionsSchema, scene3DAnchorNameSchema, scene3DAnchorSchema, scene3DAnyPlanSchema, scene3DAssetAnimationSchema, scene3DAssetIdSchema, scene3DAssetRefSchema, scene3DCameraChangesSchema, scene3DCameraKeyframeSchema, scene3DCameraSampleSchema, scene3DCameraSchema, scene3DCameraTrackIssues, scene3DCameraTrackObjectSchema, scene3DCameraTrackPlanIssues, scene3DCameraTrackSchema, scene3DClayLightingSchema, scene3DColorSchema, scene3DDeepEqual, scene3DEasingSchema, scene3DEditOperationSchema, scene3DEditOperationsSchema, scene3DEngineIdSchema, scene3DEntityAcceptsOverlay, scene3DEntityCapabilitySchema, scene3DEntityV2Schema, scene3DEntityVisualSchema, scene3DIdSchema, scene3DInputAssetSchema, scene3DInputAssetsForEngine, scene3DInputAssetsSchema, scene3DJsonByteLength, scene3DLightingChangesSchema, scene3DLightingSchema, scene3DMaterialBindingSchema, scene3DMaterialNameSchema, scene3DMaterialRoleSchema, scene3DNodeIdSchema, scene3DNodeNameSchema, scene3DObjectChangesSchema, scene3DObjectKeyframeSchema, scene3DObjectSchema, scene3DOverrideSchema, scene3DPlanIssues, scene3DPlanSchema, scene3DPlanSchemaVersion, scene3DPlanV1Issues, scene3DPlanV1ObjectSchema, scene3DPlanV1Schema, scene3DPlanV2Issues, scene3DPlanV2ObjectSchema, scene3DPlanV2Schema, scene3DPrimitiveSchema, scene3DProjectionIssues, scene3DProvenanceSchema, scene3DReferenceSchema, scene3DRenderTier, scene3DRenderTierCredits, scene3DReviewNote, scene3DReviewVerdictOf, scene3DSampleForFrame, scene3DSha256Schema, scene3DShotForFrame, scene3DShotIndexForFrame, scene3DShotSchema, scene3DUrlSchema, scene3DV2AdmissionIssues, scene3DV2EditOperationSchema, scene3DV2EditOperationsSchema, scene3DV2HierarchyDepth, scene3DV2NormalizationIssues, scene3DV2OverrideInputSchema, scene3DV2ResourceUsage, scene3DVersionTokenSchema, scene3DZodIssues, scheduleMatchesAt, scheduleOccurrences, searchModelVariants, seedance2AudioLimitSec, seedanceVideoEditCreditId, segmentDurationsFor, selectByModulo, selectByNamedKey, selectByPredicate, selectListItems, selectLoraRoutingForMentions, selectRandom, setRegisteredPersonPackFields, settledWithLimit, sizeVec3Schema, slotVariationSchema, sortCharacterEntriesForDisplay, sortListItems, sourceRefKey, speakerLayoutAllows, speakerPresentationWarnings, speakerSwitchOverlaps, speakerTurns, spliceDelimitedRows, splitByLoopDelimiter, splitGeneratedItems, splitInstagramTargets, splitMetaAdsAdvertiserNames, splitMetaAdsPageUrls, spreadJsonArrayIfSingleton, stringifyPathResults, stripDerivedAnalysisFields, stripExportContent, stripStudioTransientSettings, stripTransientRuntimeData, stripUnownedRefs, summarizeScene3DOperations, sunoCreditType, sunoModelHonoursDuration, supportedDefaultDimensions, supportsAdvancedMode, supportsAutoVideoDuration, supportsEndAnchor, supportsExtendRender, templateCategoryStoredValues, timezoneOffsetMinutes, toConnectedReference, toConnectedReferences, togglePick, transcribeLaneSupportsWordTimestamps, transcribeProvidersWithWordTimestamps, transcribeWordTimestampsRefusal, transcriptDurationSec, tryParseJson, uiAspectRatioFill, uiDurationFill, uiResolutionFill, unresolvedRefTokens, unwrapEditPlanOutput, unwrapUnresolvedTokens, usageModeDirective, usageModeIncludesName, usageModeLabel, usdToCredits, validateAiAvatarPayload, validateCinematicAvatarPayload, validateDurationForFormat, validateEdl, validateEdlClipSet, validateModeActivation, validateModelInput, validateNoNestedGroups, validateObjects, validateProviderForNodeType, validateSubWorkflowRoutes, variantJobId, vec3Schema, verifyScene3DPlanV2ContentHash, videoAnalysisCreditSegment, videoAnalysisNumWindows, videoAnalysisResultSchema, videoAuditCreditsForBucket, videoLinkDownloadedFile, videoLinkNeedsDownload, videoModelCanSpeakDialogue, videoModelSupportsAudio, videoNegativeSuffix, videoProviderFoldsLoneEndFrame, videoProviderRequiresImage, windowAnalysisSchema, zipMergeLists };