@nodaro/shared 2.27.0 → 3.1.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.
package/dist/index.d.cts CHANGED
@@ -2804,7 +2804,26 @@ type OutputType = "image" | "video" | "audio" | "text" | "data";
2804
2804
  declare function getInputNodes<T extends GenericNode>(nodes: T[], curatedOnly?: boolean): T[];
2805
2805
  /** Get leaf/media-producing nodes that represent workflow outputs. */
2806
2806
  declare function getOutputNodes<T extends GenericNode>(nodes: T[], edges: GenericEdge[], curatedOnly?: boolean): T[];
2807
- /** Map node type to its output media type. */
2807
+ /**
2808
+ * Map node type to its output media type.
2809
+ *
2810
+ * The four literal sets above are read FIRST and win: they are the presentation
2811
+ * classifier's own opinion, including for dual-mode nodes whose default medium
2812
+ * is not their handle set (voice-changer and dubbing are audio here even though
2813
+ * they can emit video).
2814
+ *
2815
+ * Anything they do not name falls through to the producer vocabularies the
2816
+ * canvas validators and the orchestrator already maintain
2817
+ * (`packages/shared/src/producer-types.ts`). Those sets are what a new media
2818
+ * node MUST join for its outputs to connect at all, so deriving the tail from
2819
+ * them is what stops this map from silently drifting behind the node catalogue
2820
+ * — which it had (3D Render Pro, Generate Video, Generate Video Pro and a dozen
2821
+ * ffmpeg nodes all read as `"data"`, so a published app rendered them as a JSON
2822
+ * blob and `/v1` app schemas declared the wrong output type).
2823
+ *
2824
+ * `DYNAMIC_PRODUCER_TYPES` is deliberately NOT consulted: a node whose medium
2825
+ * is decided at run time has no static answer, and `"data"` is the honest one.
2826
+ */
2808
2827
  declare function getOutputType(nodeType: string | undefined): OutputType;
2809
2828
  /** Extract the result URL or text from a node's data. */
2810
2829
  declare function getNodeResult(nodeData: Record<string, unknown>): {
@@ -11997,7 +12016,13 @@ interface Scene3DReference {
11997
12016
  startSeconds?: number;
11998
12017
  endSeconds?: number;
11999
12018
  }
12000
- interface Scene3DPlan {
12019
+ /**
12020
+ * The v1 plan. `Scene3DPlan` is the DISCRIMINATED UNION of this and
12021
+ * `Scene3DPlanV2` (see `scene3d-v2.ts`) — a consumer holding one must narrow
12022
+ * with `isScene3DPlanV1` / `isScene3DPlanV2` before reading version-specific
12023
+ * fields. Nothing about v1's shape, bounds or messages changed when v2 landed.
12024
+ */
12025
+ interface Scene3DPlanV1 {
12001
12026
  planType: typeof SCENE3D_PLAN_TYPE;
12002
12027
  schemaVersion: typeof SCENE3D_SCHEMA_VERSION;
12003
12028
  /** UUID. Changes on EVERY accepted edit. */
@@ -12125,10 +12150,14 @@ declare const scene3DReferenceSchema: z.ZodObject<{
12125
12150
  startSeconds: z.ZodOptional<z.ZodNumber>;
12126
12151
  endSeconds: z.ZodOptional<z.ZodNumber>;
12127
12152
  }, z.core.$strict>;
12128
- interface SemanticIssue {
12153
+ /** One cross-field failure, in the shape `ctx.addIssue` wants. Shared by the
12154
+ * v1 and v2 validators so both report the same way. */
12155
+ interface Scene3DSemanticIssue {
12129
12156
  path: (string | number)[];
12130
12157
  message: string;
12131
12158
  }
12159
+ /** @internal Historic in-file name. */
12160
+ type SemanticIssue = Scene3DSemanticIssue;
12132
12161
  /**
12133
12162
  * Every rule that needs more than one field: duration, identity, hierarchy,
12134
12163
  * reference resolution and keyframe tracks.
@@ -12137,12 +12166,174 @@ interface SemanticIssue {
12137
12166
  * report the SAME sentences without re-parsing, and so a caller holding an
12138
12167
  * already-parsed plan can re-check it cheaply.
12139
12168
  */
12140
- declare function scene3DPlanIssues(plan: Scene3DPlan): SemanticIssue[];
12169
+ declare function scene3DPlanV1Issues(plan: Scene3DPlanV1): SemanticIssue[];
12141
12170
  /**
12142
12171
  * THE plan validator. Structure first (zod), then the cross-field rules — a
12143
12172
  * consumer that parses with this cannot be handed a cycle, a dangling parent,
12144
12173
  * an out-of-range keyframe or a 90-second "one-minute-max" scene.
12145
12174
  */
12175
+ /**
12176
+ * The v1 object shape WITHOUT the cross-field pass. Exported only so
12177
+ * `scene3DAnyPlanSchema` can discriminate on `schemaVersion` (zod cannot
12178
+ * discriminate through a `superRefine`); parse with `scene3DPlanV1Schema`.
12179
+ */
12180
+ declare const scene3DPlanV1ObjectSchema: z.ZodObject<{
12181
+ planType: z.ZodLiteral<"3d-scene">;
12182
+ schemaVersion: z.ZodLiteral<1>;
12183
+ revisionId: z.ZodUUID;
12184
+ parentRevisionId: z.ZodOptional<z.ZodUUID>;
12185
+ width: z.ZodNumber;
12186
+ height: z.ZodNumber;
12187
+ fps: z.ZodNumber;
12188
+ durationInFrames: z.ZodNumber;
12189
+ backgroundColor: z.ZodString;
12190
+ camera: z.ZodObject<{
12191
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
12192
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
12193
+ focalLengthMm: z.ZodNumber;
12194
+ sensorWidthMm: z.ZodDefault<z.ZodNumber>;
12195
+ keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
12196
+ frame: z.ZodNumber;
12197
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
12198
+ target: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
12199
+ focalLengthMm: z.ZodOptional<z.ZodNumber>;
12200
+ easing: z.ZodOptional<z.ZodEnum<{
12201
+ linear: "linear";
12202
+ easeInOut: "easeInOut";
12203
+ }>>;
12204
+ }, z.core.$strict>>>;
12205
+ }, z.core.$strict>;
12206
+ objects: z.ZodArray<z.ZodObject<{
12207
+ id: z.ZodString;
12208
+ name: z.ZodString;
12209
+ primitive: z.ZodEnum<{
12210
+ group: "group";
12211
+ box: "box";
12212
+ sphere: "sphere";
12213
+ cylinder: "cylinder";
12214
+ cone: "cone";
12215
+ plane: "plane";
12216
+ capsule: "capsule";
12217
+ }>;
12218
+ parentId: z.ZodOptional<z.ZodString>;
12219
+ dimensions: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
12220
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
12221
+ rotation: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
12222
+ scale: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
12223
+ color: z.ZodString;
12224
+ keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
12225
+ frame: z.ZodNumber;
12226
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
12227
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
12228
+ scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
12229
+ easing: z.ZodOptional<z.ZodEnum<{
12230
+ linear: "linear";
12231
+ easeInOut: "easeInOut";
12232
+ }>>;
12233
+ }, z.core.$strict>>>;
12234
+ }, z.core.$strict>>;
12235
+ lighting: z.ZodObject<{
12236
+ ambientIntensity: z.ZodNumber;
12237
+ keyIntensity: z.ZodNumber;
12238
+ keyPosition: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
12239
+ }, z.core.$strict>;
12240
+ references: z.ZodOptional<z.ZodArray<z.ZodObject<{
12241
+ id: z.ZodString;
12242
+ url: z.ZodString;
12243
+ kind: z.ZodEnum<{
12244
+ image: "image";
12245
+ video: "video";
12246
+ }>;
12247
+ role: z.ZodEnum<{
12248
+ motion: "motion";
12249
+ layout: "layout";
12250
+ appearance: "appearance";
12251
+ }>;
12252
+ objectId: z.ZodOptional<z.ZodString>;
12253
+ startSeconds: z.ZodOptional<z.ZodNumber>;
12254
+ endSeconds: z.ZodOptional<z.ZodNumber>;
12255
+ }, z.core.$strict>>>;
12256
+ }, z.core.$strict>;
12257
+ declare const scene3DPlanV1Schema: z.ZodObject<{
12258
+ planType: z.ZodLiteral<"3d-scene">;
12259
+ schemaVersion: z.ZodLiteral<1>;
12260
+ revisionId: z.ZodUUID;
12261
+ parentRevisionId: z.ZodOptional<z.ZodUUID>;
12262
+ width: z.ZodNumber;
12263
+ height: z.ZodNumber;
12264
+ fps: z.ZodNumber;
12265
+ durationInFrames: z.ZodNumber;
12266
+ backgroundColor: z.ZodString;
12267
+ camera: z.ZodObject<{
12268
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
12269
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
12270
+ focalLengthMm: z.ZodNumber;
12271
+ sensorWidthMm: z.ZodDefault<z.ZodNumber>;
12272
+ keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
12273
+ frame: z.ZodNumber;
12274
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
12275
+ target: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
12276
+ focalLengthMm: z.ZodOptional<z.ZodNumber>;
12277
+ easing: z.ZodOptional<z.ZodEnum<{
12278
+ linear: "linear";
12279
+ easeInOut: "easeInOut";
12280
+ }>>;
12281
+ }, z.core.$strict>>>;
12282
+ }, z.core.$strict>;
12283
+ objects: z.ZodArray<z.ZodObject<{
12284
+ id: z.ZodString;
12285
+ name: z.ZodString;
12286
+ primitive: z.ZodEnum<{
12287
+ group: "group";
12288
+ box: "box";
12289
+ sphere: "sphere";
12290
+ cylinder: "cylinder";
12291
+ cone: "cone";
12292
+ plane: "plane";
12293
+ capsule: "capsule";
12294
+ }>;
12295
+ parentId: z.ZodOptional<z.ZodString>;
12296
+ dimensions: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
12297
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
12298
+ rotation: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
12299
+ scale: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
12300
+ color: z.ZodString;
12301
+ keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
12302
+ frame: z.ZodNumber;
12303
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
12304
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
12305
+ scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
12306
+ easing: z.ZodOptional<z.ZodEnum<{
12307
+ linear: "linear";
12308
+ easeInOut: "easeInOut";
12309
+ }>>;
12310
+ }, z.core.$strict>>>;
12311
+ }, z.core.$strict>>;
12312
+ lighting: z.ZodObject<{
12313
+ ambientIntensity: z.ZodNumber;
12314
+ keyIntensity: z.ZodNumber;
12315
+ keyPosition: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
12316
+ }, z.core.$strict>;
12317
+ references: z.ZodOptional<z.ZodArray<z.ZodObject<{
12318
+ id: z.ZodString;
12319
+ url: z.ZodString;
12320
+ kind: z.ZodEnum<{
12321
+ image: "image";
12322
+ video: "video";
12323
+ }>;
12324
+ role: z.ZodEnum<{
12325
+ motion: "motion";
12326
+ layout: "layout";
12327
+ appearance: "appearance";
12328
+ }>;
12329
+ objectId: z.ZodOptional<z.ZodString>;
12330
+ startSeconds: z.ZodOptional<z.ZodNumber>;
12331
+ endSeconds: z.ZodOptional<z.ZodNumber>;
12332
+ }, z.core.$strict>>>;
12333
+ }, z.core.$strict>;
12334
+ /** @deprecated v1-only, and it always was. Kept so every existing v1 call site
12335
+ * keeps EXACTLY its current accept/reject set. Use `scene3DPlanV1Schema` for
12336
+ * v1, or `scene3DAnyPlanSchema` when either version is acceptable. */
12146
12337
  declare const scene3DPlanSchema: z.ZodObject<{
12147
12338
  planType: z.ZodLiteral<"3d-scene">;
12148
12339
  schemaVersion: z.ZodLiteral<1>;
@@ -12220,18 +12411,21 @@ declare const scene3DPlanSchema: z.ZodObject<{
12220
12411
  endSeconds: z.ZodOptional<z.ZodNumber>;
12221
12412
  }, z.core.$strict>>>;
12222
12413
  }, z.core.$strict>;
12414
+ /** @deprecated Renamed to `scene3DPlanV1Issues`. */
12415
+ declare const scene3DPlanIssues: typeof scene3DPlanV1Issues;
12223
12416
  /** Order-insensitive deep equality over the JSON subset a plan is made of. */
12224
12417
  declare function scene3DDeepEqual(a: unknown, b: unknown): boolean;
12225
12418
  /** RFC-4122 v4 id, from the platform CSPRNG where there is one. Browser,
12226
12419
  * Node 18+ and the Remotion renderer all expose `globalThis.crypto`. */
12227
12420
  declare function newScene3DRevisionId(): string;
12228
- /** Narrowing helper for callers holding `unknown` (job output, workflow JSON). */
12229
- declare function isScene3DPlan(value: unknown): value is Scene3DPlan;
12421
+ /** Narrowing helper for callers holding `unknown` (job output, workflow JSON).
12422
+ * V1 ONLY — `isScene3DPlan` (in `scene3d-v2.ts`) accepts either version. */
12423
+ declare function isScene3DPlanV1(value: unknown): value is Scene3DPlanV1;
12230
12424
  /** What a finished `generate-3d-scene` / `edit-3d-scene` job carries in
12231
12425
  * `output_data`. The canvas, the SDK and the DAG output extractor all read
12232
12426
  * THIS shape — `scenePlan` is also the node's stored plan field. */
12233
12427
  interface Scene3DJobOutput {
12234
- scenePlan: Scene3DPlan;
12428
+ scenePlan: Scene3DPlanV1;
12235
12429
  /** One paragraph naming what changed. Absent on a first generation. */
12236
12430
  changeSummary?: string;
12237
12431
  }
@@ -12523,7 +12717,7 @@ interface Scene3DEditOptions {
12523
12717
  }
12524
12718
  type Scene3DEditResult = {
12525
12719
  ok: true;
12526
- plan: Scene3DPlan;
12720
+ plan: Scene3DPlanV1;
12527
12721
  changedObjectIds: string[];
12528
12722
  changeSummary: string;
12529
12723
  } | {
@@ -12557,69 +12751,2723 @@ declare function summarizeScene3DOperations(operations: readonly Scene3DEditOper
12557
12751
  * plan validator rejects it, as does removing an object a reference points
12558
12752
  * at.
12559
12753
  */
12560
- declare function applyScene3DEditOperations(plan: Scene3DPlan, operations: readonly Scene3DEditOperation[] | unknown, options?: Scene3DEditOptions): Scene3DEditResult;
12561
-
12562
- /**
12563
- * The parts of `settings.studio` that must not leave the owner's account.
12564
- *
12565
- * A shared production is read by anyone with the link. Three things inside the
12566
- * document are the OWNER'S working state and nobody else's business:
12567
- *
12568
- * - `trash` — the recycle bin, which holds every shot, still and clip they
12569
- * deleted, with prompts and urls intact. A share viewer receiving the bin is
12570
- * the sharpest of the three: it hands out work the owner explicitly threw away.
12571
- * - the in-flight job markers — `pendingClips` / `pendingStills` per shot, and
12572
- * `pendingMusic` / `pendingDraft` on the document. A viewer cannot land any
12573
- * of them and does not own them; all they carry across is job ids.
12574
- * - `freecutDraftUrl` — an unsaved editor draft.
12575
- *
12576
- * They do NOT all live at the same level, and that is the whole reason this
12577
- * file exists rather than one array: the writer puts `trash` and
12578
- * `freecutDraftUrl` on `settings.studio` itself, and puts the per-shot markers
12579
- * on the `settings.studio.shots[]` entry. A strip that walked only the top
12580
- * level would pass its own test and still hand a share viewer every marker in
12581
- * the production.
12582
- *
12583
- * It lives in `@nodaro/shared` because two independent readers need the SAME
12584
- * list: the public share read (which is the reason the list exists) and the
12585
- * production writer's own bundle projection. A second copy of a list like this
12586
- * does not stay equal — it goes one key stale and the stale side is the one
12587
- * that publishes.
12588
- *
12589
- * This is a plain JSON walker on purpose. `settings` is a free-form column that
12590
- * a client owns end to end; the projection reads the keys it must drop and
12591
- * nothing else, so it never needs — and must never grow — a dependency on
12592
- * whatever writes the rest of the document.
12593
- */
12594
- /**
12595
- * `settings.studio`'s OWN transient keys.
12596
- *
12597
- * The per-shot pending lists are on this list as well as the shot one on
12598
- * purpose: nothing writes them here today, and a stray one from an older
12599
- * client — or from a client that is not the studio editor at all — still must
12600
- * not ride out to a viewer.
12601
- */
12602
- declare const STUDIO_TRANSIENT_KEYS: readonly ["trash", "pendingStills", "pendingClips", "pendingMusic", "pendingDraft", "freecutDraftUrl"];
12603
- /**
12604
- * ...and a SHOT entry's, which is where the per-shot markers actually are.
12605
- *
12606
- * `pendingClip` (singular) is the pre-concurrent-markers shape; the editor's
12607
- * reader still migrates it on parse, so a row can still be carrying one and it
12608
- * is still in-flight state.
12609
- */
12610
- declare const STUDIO_SHOT_TRANSIENT_KEYS: readonly ["pendingClips", "pendingClip", "pendingStills"];
12611
- /**
12612
- * A production's `settings` with the owner's working state removed.
12613
- *
12614
- * Copy-on-write, and structurally: it rebuilds the objects without those keys
12615
- * rather than deleting from the caller's, so the stored row is untouched. A
12616
- * `settings` with no `studio` comes back unchanged — this is a studio concern,
12617
- * and a workflow that is not a production has nothing here to strip.
12618
- *
12619
- * Takes and returns `unknown` because the column is free-form and every caller
12620
- * already holds it as whatever its own layer calls JSON; narrowing here would
12621
- * only move the cast one line up.
12622
- */
12623
- declare function stripStudioTransientSettings(settings: unknown): unknown;
12754
+ declare function applyScene3DEditOperations(plan: Scene3DPlanV1, operations: readonly Scene3DEditOperation[] | unknown, options?: Scene3DEditOptions): Scene3DEditResult;
12755
+
12756
+ /**
12757
+ * Scene3D v2 — the PUBLIC wire contract for exported (GLB-backed) scenes.
12758
+ *
12759
+ * One Scene3D family, two schema versions. `Scene3DPlan` is the discriminated
12760
+ * union `Scene3DPlanV1 | Scene3DPlanV2`, keyed on `schemaVersion`; v1 (see
12761
+ * `scene3d.ts`) is untouched — same fields, same bounds, same messages — and a
12762
+ * default v1 authoring request must never come back as v2.
12763
+ *
12764
+ * What v2 adds over v1's inline primitives:
12765
+ *
12766
+ * - **Assets.** Geometry lives in GLB files referenced by opaque id + SHA-256
12767
+ * digest, never by an expiring URL. The camera lives in a sidecar
12768
+ * (`scene3d-camera-track.ts`), one sample per frame, so a 720-frame baked
12769
+ * move is not squeezed through v1's 240-keyframe budget.
12770
+ * - **Semantic entities.** A user-selectable object or assembly — a person, a
12771
+ * car, a prop, an environment — not every mesh in the export. Entities carry
12772
+ * stable ids, anchors, identity colour and material-role bindings, so
12773
+ * recolouring a person cannot recolour its chair.
12774
+ * - **Shots.** Explicit contiguous integer ranges covering the whole timeline,
12775
+ * with hard cuts. Interpolation never spans a cut.
12776
+ * - **Overlays.** Deterministic entity/camera overrides applied over immutable
12777
+ * baked bytes, in a fixed order, so a rebuild cannot silently drop a manual
12778
+ * edit.
12779
+ * - **Provenance.** Which engine/compiler/exporter/renderer produced this, and
12780
+ * the canonical content hash of the revision.
12781
+ *
12782
+ * This file is STRUCTURE ONLY: shapes, bounds, cross-references. How a scene is
12783
+ * authored, how a camera move is solved and what any of it costs are not part
12784
+ * of the published contract and are not here.
12785
+ *
12786
+ * It owns the VOCABULARY — constants, types and per-component schemas. The
12787
+ * whole-plan schema and every cross-field rule live in `scene3d-v2-plan.ts`,
12788
+ * which builds on this; the dense camera sidecar lives in
12789
+ * `scene3d-camera-track.ts`. Consumers import all three from the package root.
12790
+ *
12791
+ * ## World conventions (identical to v1, and now stated on the wire)
12792
+ *
12793
+ * Meters, Y up, right-handed, zero-based frames. `units`/`upAxis`/`handedness`
12794
+ * are required literals so a reader can refuse a manifest that assumes anything
12795
+ * else instead of quietly rendering a Z-up scene on its side. Conversion from
12796
+ * the authoring package's basis happens exactly once, at export: a GLB that is
12797
+ * already Y-up must not be rotated again, and the renderer must not replace an
12798
+ * exported camera quaternion with a `lookAt()`.
12799
+ */
12800
+
12801
+ /** The v2 discriminator value. v1's `SCENE3D_SCHEMA_VERSION` is unchanged. */
12802
+ declare const SCENE3D_SCHEMA_VERSION_V2 = 2;
12803
+ /** Every version this package can parse AND validate. An SDK consumer checks a
12804
+ * plan against this BEFORE trying to render one it cannot understand. */
12805
+ declare const SCENE3D_SUPPORTED_SCHEMA_VERSIONS: readonly [1, 2];
12806
+ type Scene3DSupportedSchemaVersion = (typeof SCENE3D_SUPPORTED_SCHEMA_VERSIONS)[number];
12807
+ /** Authoring engines a v2 manifest may name. Open-ended on the wire (the field
12808
+ * is a bounded slug) so a new engine does not need a package release; this
12809
+ * list is what the current platform ships. */
12810
+ declare const SCENE3D_V2_ENGINES: readonly ["blender-cloud", "blender-local"];
12811
+ type Scene3DKnownEngine = (typeof SCENE3D_V2_ENGINES)[number];
12812
+ /**
12813
+ * Admission bounds for v2. Server-configured ceilings are returned in
12814
+ * capabilities; these are the contract's hard maxima, quoted by the route Zod,
12815
+ * the builder, the renderer and the docs so they cannot drift apart.
12816
+ *
12817
+ * v1's `SCENE3D_LIMITS` is NOT changed by any of this — "raise maxObjects" was
12818
+ * never the v2 design.
12819
+ */
12820
+ declare const SCENE3D_V2_LIMITS: {
12821
+ /** Both the seconds and the frame ceiling apply; neither waives the other. */
12822
+ readonly maxDurationSeconds: 60;
12823
+ readonly minDurationInFrames: 1;
12824
+ readonly maxDurationInFrames: 3600;
12825
+ readonly minFps: 15;
12826
+ readonly maxFps: 60;
12827
+ readonly defaultFps: 24;
12828
+ /** Even integers only — an odd axis breaks H.264 chroma subsampling. */
12829
+ readonly minDimensionPx: 100;
12830
+ readonly maxDimensionPx: 1920;
12831
+ readonly minEntities: 1;
12832
+ /** SEMANTIC entities, not exported mesh nodes. */
12833
+ readonly maxEntities: 100;
12834
+ /** Enforced during asset normalization, after decode — see
12835
+ * `scene3DV2NormalizationIssues` in `scene3d-v2-resources.ts`. */
12836
+ readonly maxMeshNodes: 2000;
12837
+ readonly maxTriangles: 200000;
12838
+ readonly maxHierarchyDepth: 16;
12839
+ /** Decoded manifest JSON. Measured on the bytes, before `JSON.parse`. */
12840
+ readonly maxManifestBytes: number;
12841
+ /** Decoded camera-track JSON. */
12842
+ readonly maxCameraTrackBytes: number;
12843
+ /** Total DECLARED bytes of the assets the renderer downloads. Compression
12844
+ * does not waive the decoded geometry limits above. */
12845
+ readonly maxRendererAssetBytes: number;
12846
+ /** A `blend-source` is a separately authorized download, never handed to the
12847
+ * browser renderer, and therefore not part of the renderer budget. */
12848
+ readonly maxBlendSourceBytes: number;
12849
+ readonly maxAssets: 64;
12850
+ readonly maxShots: 32;
12851
+ readonly maxShotEntityIds: 16;
12852
+ /** v1's reference limit, unchanged until deliberately expanded. */
12853
+ readonly maxReferences: 8;
12854
+ readonly maxAnchorsPerEntity: 32;
12855
+ readonly maxMaterialBindingsPerEntity: 16;
12856
+ readonly maxOverrides: 200;
12857
+ readonly minPosterDimensionPx: 16;
12858
+ readonly maxPosterDimensionPx: 4096;
12859
+ readonly maxIdLength: 64;
12860
+ readonly maxAssetIdLength: 128;
12861
+ readonly maxNodeIdLength: 128;
12862
+ readonly maxNameLength: 120;
12863
+ readonly maxLabelLength: 120;
12864
+ readonly maxMaterialNameLength: 120;
12865
+ readonly maxVersionLength: 64;
12866
+ readonly maxCoordinate: 1000;
12867
+ readonly minSize: 0.001;
12868
+ readonly maxSize: 1000;
12869
+ readonly maxIntensity: 100;
12870
+ };
12871
+ /** The overlay operation vocabulary this package understands. An override
12872
+ * written by a NEWER writer is rejected with an explicit message rather than
12873
+ * silently skipped — a dropped edit is worse than a refused manifest. */
12874
+ declare const SCENE3D_V2_OVERRIDE_OPERATION_VERSION = 1;
12875
+ /**
12876
+ * The GLB `extras` keys the exporter writes and the importer reads. Blender
12877
+ * display names and array indices are NOT durable identifiers: a re-export
12878
+ * renames `Cube.003` and reorders children, and a hit-test would then select a
12879
+ * different entity. Both ends import these constants — never the literals.
12880
+ */
12881
+ declare const SCENE3D_GLB_EXTRAS_ENTITY_ID = "nodaroEntityId";
12882
+ declare const SCENE3D_GLB_EXTRAS_SUBPART_ID = "nodaroSubpartId";
12883
+ declare const SCENE3D_GLB_EXTRAS_MATERIAL_ROLE = "nodaroMaterialRole";
12884
+ /** Nothing outside this set is read from `extras`; an importer ignores the rest
12885
+ * rather than trusting arbitrary exporter metadata. */
12886
+ declare const SCENE3D_GLB_EXTRAS_ALLOWLIST: readonly ["nodaroEntityId", "nodaroSubpartId", "nodaroMaterialRole"];
12887
+ /** What an entity IS, for selection, grouping and validation reporting. It is
12888
+ * advisory: no rule anywhere requires a head on a car or a wheel on a person. */
12889
+ type Scene3DEntityRole = "person" | "vehicle" | "prop" | "environment" | "other";
12890
+ declare const SCENE3D_ENTITY_ROLES: readonly Scene3DEntityRole[];
12891
+ /** The v1 primitive vocabulary MINUS `group` — grouping is `visual.kind:"group"`
12892
+ * in v2, so there is exactly one way to say "no geometry". */
12893
+ type Scene3DV2Primitive = Exclude<Scene3DPrimitive, "group">;
12894
+ declare const SCENE3D_V2_PRIMITIVES: readonly Scene3DV2Primitive[];
12895
+ /** Deterministic overlays an entity accepts. Geometry and pose are deliberately
12896
+ * absent: those rebuild through the authoring engine, they are not overlays. */
12897
+ type Scene3DEntityCapability = "transform" | "color" | "visibility";
12898
+ declare const SCENE3D_ENTITY_CAPABILITIES: readonly Scene3DEntityCapability[];
12899
+ /** What an entity accepts when it does not say. */
12900
+ declare const SCENE3D_DEFAULT_ENTITY_CAPABILITIES: readonly Scene3DEntityCapability[];
12901
+ type Scene3DAssetKind = "glb" | "camera-track-json" | "poster" | "validation-report" | "blend-source";
12902
+ declare const SCENE3D_ASSET_KINDS: readonly Scene3DAssetKind[];
12903
+ type Scene3DAssetRole = "scene-geometry" | "entity-geometry" | "camera-track" | "poster" | "validation-report" | "source";
12904
+ declare const SCENE3D_ASSET_ROLES: readonly Scene3DAssetRole[];
12905
+ /** Which kinds may carry which role. A role is not decoration — it is what lets
12906
+ * a resolver decide whether bytes go to the renderer, the UI or an authorized
12907
+ * download, without sniffing the file. */
12908
+ declare const SCENE3D_ASSET_ROLE_KINDS: Readonly<Record<Scene3DAssetRole, Scene3DAssetKind>>;
12909
+ /** The kinds the BROWSER downloads. `blend-source` is never in this set: it is
12910
+ * a separately authorized download and it does not spend the renderer budget. */
12911
+ declare const SCENE3D_RENDERER_ASSET_KINDS: readonly Scene3DAssetKind[];
12912
+ /** The one material role a `primitive` entity has: its own `color`. */
12913
+ declare const SCENE3D_PRIMITIVE_MATERIAL_ROLE = "identity";
12914
+ /** The standardized clay look, pinned by id. Browser preview, critic stills and
12915
+ * the final export must implement a given preset identically. */
12916
+ declare const SCENE3D_CLAY_LIGHTING_PRESETS: readonly ["clay-studio-v1"];
12917
+ type Scene3DClayLightingPreset = (typeof SCENE3D_CLAY_LIGHTING_PRESETS)[number];
12918
+ /** A stable contact/selection location in entity-local space. Names are free
12919
+ * structural labels (`face`, `seat`, `wheel.frontLeft`, `roof`, `lookAt`) —
12920
+ * human anatomy is never required. */
12921
+ interface Scene3DAnchor {
12922
+ name: string;
12923
+ position: Vec3;
12924
+ /** Euler XYZ radians. Absent = identity orientation. */
12925
+ rotation?: Vec3;
12926
+ }
12927
+ /** Binds an editable colour ROLE to a real material inside the entity's own
12928
+ * asset root. Recolouring `bodyPaint` on a car must not touch its tires, and
12929
+ * cannot reach a material that belongs to a different entity. */
12930
+ interface Scene3DMaterialBinding {
12931
+ role: string;
12932
+ materialName: string;
12933
+ /** Baked colour for the role, sRGB opaque hex. */
12934
+ color?: string;
12935
+ roughness?: number;
12936
+ }
12937
+ /** Maps a clip inside the referenced GLB onto public frames. Sampling is
12938
+ * `time = (frame - startFrame) / fps` — never a wall-clock mixer delta, or
12939
+ * scrubbing backwards would not reproduce the rendered frame. */
12940
+ interface Scene3DAssetAnimation {
12941
+ clipName: string;
12942
+ startFrame: number;
12943
+ endFrameExclusive: number;
12944
+ /** Absent/false = hold the last sample after the window. */
12945
+ loop?: boolean;
12946
+ }
12947
+ type Scene3DEntityVisual =
12948
+ /** Organizational identity: a transform and a name, no geometry of its own. */
12949
+ {
12950
+ kind: "group";
12951
+ }
12952
+ /** The v1 primitive vocabulary and validated dimensions. */
12953
+ | {
12954
+ kind: "primitive";
12955
+ primitive: Scene3DV2Primitive;
12956
+ dimensions: Vec3;
12957
+ color: string;
12958
+ }
12959
+ /** An authorized GLB plus the exported node that roots this entity. */
12960
+ | {
12961
+ kind: "asset";
12962
+ assetId: string;
12963
+ rootNodeId: string;
12964
+ animation?: Scene3DAssetAnimation;
12965
+ };
12966
+ interface Scene3DEntityV2 {
12967
+ id: string;
12968
+ name: string;
12969
+ /** Transform parent, another entity. Cycles are rejected. */
12970
+ parentId?: string;
12971
+ role?: Scene3DEntityRole;
12972
+ /**
12973
+ * Local base transform. REQUIRED for `group` and `primitive`.
12974
+ *
12975
+ * OPTIONAL for `asset`, where the GLB node's own transform is authoritative:
12976
+ * a value here is an informational frame-0 snapshot and the renderer must NOT
12977
+ * apply it on top of the node transform. Applying both is the
12978
+ * double-transform bug that puts a car at twice its offset.
12979
+ */
12980
+ position?: Vec3;
12981
+ rotation?: Vec3;
12982
+ scale?: Vec3;
12983
+ /** The selection/identity chip colour. Opaque hex, sRGB. */
12984
+ identityColor?: string;
12985
+ anchors?: Scene3DAnchor[];
12986
+ /** Deterministic overlays this entity accepts. Absent = all of them. */
12987
+ capabilities?: Scene3DEntityCapability[];
12988
+ /** Currently frozen subset. An overlay is accepted iff its capability is
12989
+ * advertised AND not locked. */
12990
+ locks?: Scene3DEntityCapability[];
12991
+ /** `asset` entities only. */
12992
+ materialBindings?: Scene3DMaterialBinding[];
12993
+ visual: Scene3DEntityVisual;
12994
+ }
12995
+ /** A reference to immutable bytes. IDs and digests are persisted; short-lived
12996
+ * transport URLs are issued by the authenticated resolver and never stored. */
12997
+ interface Scene3DAssetRef {
12998
+ assetId: string;
12999
+ kind: Scene3DAssetKind;
13000
+ role: Scene3DAssetRole;
13001
+ byteLength: number;
13002
+ /** Lowercase hex SHA-256 of the bytes. */
13003
+ sha256: string;
13004
+ /** Set when this revision reuses an earlier revision's immutable bytes. */
13005
+ originRevisionId?: string;
13006
+ }
13007
+ /** A contiguous half-open frame range `[startFrame, endFrameExclusive)`. */
13008
+ interface Scene3DShot {
13009
+ id: string;
13010
+ startFrame: number;
13011
+ endFrameExclusive: number;
13012
+ label?: string;
13013
+ /** Who the shot is ABOUT — used by validation reporting and the UI. */
13014
+ subjectEntityIds?: string[];
13015
+ /** Who is deliberately in front of the lens (an over-the-shoulder anchor). */
13016
+ foregroundEntityIds?: string[];
13017
+ }
13018
+ interface Scene3DClayLighting {
13019
+ preset: Scene3DClayLightingPreset;
13020
+ ambientIntensity: number;
13021
+ keyIntensity: number;
13022
+ keyPosition: Vec3;
13023
+ }
13024
+ /** Which space a constant transform override is expressed in. Declared, so the
13025
+ * renderer never multiplies the same parent transform in twice. */
13026
+ type Scene3DOverrideSpace = "local" | "world";
13027
+ interface Scene3DOverrideProvenance {
13028
+ id: string;
13029
+ /** The revision this override was authored against. */
13030
+ sourceRevisionId: string;
13031
+ /** That revision's canonical content hash when the override was authored. */
13032
+ sourceContentHash: string;
13033
+ operationVersion: number;
13034
+ }
13035
+ type Scene3DOverride = Scene3DOverrideProvenance & ({
13036
+ kind: "entity-transform";
13037
+ entityId: string;
13038
+ space: Scene3DOverrideSpace;
13039
+ position?: Vec3;
13040
+ rotation?: Vec3;
13041
+ scale?: Vec3;
13042
+ } | {
13043
+ kind: "entity-color";
13044
+ entityId: string;
13045
+ materialRole: string;
13046
+ color: string;
13047
+ } | {
13048
+ kind: "entity-visibility";
13049
+ entityId: string;
13050
+ visible: boolean;
13051
+ } | {
13052
+ kind: "camera-shot-offset";
13053
+ shotId: string;
13054
+ positionOffset?: Vec3;
13055
+ targetOffset?: Vec3;
13056
+ });
13057
+ /**
13058
+ * Who built this revision and from what. Source versioning and renderer
13059
+ * versioning are independent — a renderer upgrade does not invalidate a scene.
13060
+ *
13061
+ * Every string here is a bounded slug, which is a structural guarantee that no
13062
+ * native path or block of prose fits in one. Scrubbing credentials
13063
+ * out of the values it does accept remains the producer's duty.
13064
+ */
13065
+ interface Scene3DProvenance {
13066
+ engine: string;
13067
+ engineVersion: string;
13068
+ recipeVersion: string;
13069
+ compilerVersion: string;
13070
+ exporterVersion: string;
13071
+ rendererVersion: string;
13072
+ sourceRevisionId?: string;
13073
+ /** The retained `blend-source` asset, when one was kept. */
13074
+ sourceArtifactId?: string;
13075
+ /** Canonical content hash of this revision — see `scene3d-v2-resources.ts`. */
13076
+ contentHash: string;
13077
+ }
13078
+ interface Scene3DPlanV2 {
13079
+ planType: typeof SCENE3D_PLAN_TYPE;
13080
+ schemaVersion: typeof SCENE3D_SCHEMA_VERSION_V2;
13081
+ revisionId: string;
13082
+ parentRevisionId?: string;
13083
+ width: number;
13084
+ height: number;
13085
+ fps: number;
13086
+ durationInFrames: number;
13087
+ units: "meters";
13088
+ upAxis: "Y";
13089
+ handedness: "right";
13090
+ objects: Scene3DEntityV2[];
13091
+ assets: Scene3DAssetRef[];
13092
+ cameraTrackAssetId: string;
13093
+ shots: Scene3DShot[];
13094
+ lighting: Scene3DClayLighting;
13095
+ backgroundColor: string;
13096
+ references?: Scene3DReference[];
13097
+ overrides?: Scene3DOverride[];
13098
+ provenance: Scene3DProvenance;
13099
+ }
13100
+ /** Opaque storage id. Deliberately slash-free: an asset id is an ID, resolved
13101
+ * server-side against ownership — never a path and never a URL. */
13102
+ declare const scene3DAssetIdSchema: z.ZodString;
13103
+ /** A node name inside an exported GLB. */
13104
+ declare const scene3DNodeIdSchema: z.ZodString;
13105
+ declare const scene3DSha256Schema: z.ZodString;
13106
+ /**
13107
+ * A version/engine token. The charset excludes `/`, `\`, `:` and whitespace, so
13108
+ * a native filesystem path cannot be spelled as one; the 64-character cap
13109
+ * excludes prose.
13110
+ */
13111
+ declare const scene3DVersionTokenSchema: z.ZodString;
13112
+ declare const scene3DEngineIdSchema: z.ZodString;
13113
+ /** Anchor names and material roles share the id charset (dots allowed, so
13114
+ * `wheel.frontLeft` is one name and not a path). */
13115
+ declare const scene3DAnchorNameSchema: z.ZodString;
13116
+ declare const scene3DMaterialRoleSchema: z.ZodString;
13117
+ declare const scene3DMaterialNameSchema: z.ZodString;
13118
+ declare const scene3DEntityCapabilitySchema: z.ZodEnum<{
13119
+ transform: "transform";
13120
+ color: "color";
13121
+ visibility: "visibility";
13122
+ }>;
13123
+ declare const scene3DAnchorSchema: z.ZodObject<{
13124
+ name: z.ZodString;
13125
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
13126
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13127
+ }, z.core.$strict>;
13128
+ declare const scene3DMaterialBindingSchema: z.ZodObject<{
13129
+ role: z.ZodString;
13130
+ materialName: z.ZodString;
13131
+ color: z.ZodOptional<z.ZodString>;
13132
+ roughness: z.ZodOptional<z.ZodNumber>;
13133
+ }, z.core.$strict>;
13134
+ declare const scene3DAssetAnimationSchema: z.ZodObject<{
13135
+ clipName: z.ZodString;
13136
+ startFrame: z.ZodNumber;
13137
+ endFrameExclusive: z.ZodNumber;
13138
+ loop: z.ZodOptional<z.ZodBoolean>;
13139
+ }, z.core.$strict>;
13140
+ declare const scene3DEntityVisualSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
13141
+ kind: z.ZodLiteral<"group">;
13142
+ }, z.core.$strict>, z.ZodObject<{
13143
+ kind: z.ZodLiteral<"primitive">;
13144
+ primitive: z.ZodEnum<{
13145
+ box: "box";
13146
+ sphere: "sphere";
13147
+ cylinder: "cylinder";
13148
+ cone: "cone";
13149
+ plane: "plane";
13150
+ capsule: "capsule";
13151
+ }>;
13152
+ dimensions: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
13153
+ color: z.ZodString;
13154
+ }, z.core.$strict>, z.ZodObject<{
13155
+ kind: z.ZodLiteral<"asset">;
13156
+ assetId: z.ZodString;
13157
+ rootNodeId: z.ZodString;
13158
+ animation: z.ZodOptional<z.ZodObject<{
13159
+ clipName: z.ZodString;
13160
+ startFrame: z.ZodNumber;
13161
+ endFrameExclusive: z.ZodNumber;
13162
+ loop: z.ZodOptional<z.ZodBoolean>;
13163
+ }, z.core.$strict>>;
13164
+ }, z.core.$strict>], "kind">;
13165
+ declare const scene3DEntityV2Schema: z.ZodObject<{
13166
+ id: z.ZodString;
13167
+ name: z.ZodString;
13168
+ parentId: z.ZodOptional<z.ZodString>;
13169
+ role: z.ZodOptional<z.ZodEnum<{
13170
+ other: "other";
13171
+ person: "person";
13172
+ vehicle: "vehicle";
13173
+ prop: "prop";
13174
+ environment: "environment";
13175
+ }>>;
13176
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13177
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13178
+ scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13179
+ identityColor: z.ZodOptional<z.ZodString>;
13180
+ anchors: z.ZodOptional<z.ZodArray<z.ZodObject<{
13181
+ name: z.ZodString;
13182
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
13183
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13184
+ }, z.core.$strict>>>;
13185
+ capabilities: z.ZodOptional<z.ZodArray<z.ZodEnum<{
13186
+ transform: "transform";
13187
+ color: "color";
13188
+ visibility: "visibility";
13189
+ }>>>;
13190
+ locks: z.ZodOptional<z.ZodArray<z.ZodEnum<{
13191
+ transform: "transform";
13192
+ color: "color";
13193
+ visibility: "visibility";
13194
+ }>>>;
13195
+ materialBindings: z.ZodOptional<z.ZodArray<z.ZodObject<{
13196
+ role: z.ZodString;
13197
+ materialName: z.ZodString;
13198
+ color: z.ZodOptional<z.ZodString>;
13199
+ roughness: z.ZodOptional<z.ZodNumber>;
13200
+ }, z.core.$strict>>>;
13201
+ visual: z.ZodDiscriminatedUnion<[z.ZodObject<{
13202
+ kind: z.ZodLiteral<"group">;
13203
+ }, z.core.$strict>, z.ZodObject<{
13204
+ kind: z.ZodLiteral<"primitive">;
13205
+ primitive: z.ZodEnum<{
13206
+ box: "box";
13207
+ sphere: "sphere";
13208
+ cylinder: "cylinder";
13209
+ cone: "cone";
13210
+ plane: "plane";
13211
+ capsule: "capsule";
13212
+ }>;
13213
+ dimensions: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
13214
+ color: z.ZodString;
13215
+ }, z.core.$strict>, z.ZodObject<{
13216
+ kind: z.ZodLiteral<"asset">;
13217
+ assetId: z.ZodString;
13218
+ rootNodeId: z.ZodString;
13219
+ animation: z.ZodOptional<z.ZodObject<{
13220
+ clipName: z.ZodString;
13221
+ startFrame: z.ZodNumber;
13222
+ endFrameExclusive: z.ZodNumber;
13223
+ loop: z.ZodOptional<z.ZodBoolean>;
13224
+ }, z.core.$strict>>;
13225
+ }, z.core.$strict>], "kind">;
13226
+ }, z.core.$strict>;
13227
+ declare const scene3DAssetRefSchema: z.ZodObject<{
13228
+ assetId: z.ZodString;
13229
+ kind: z.ZodEnum<{
13230
+ glb: "glb";
13231
+ "camera-track-json": "camera-track-json";
13232
+ poster: "poster";
13233
+ "validation-report": "validation-report";
13234
+ "blend-source": "blend-source";
13235
+ }>;
13236
+ role: z.ZodEnum<{
13237
+ source: "source";
13238
+ poster: "poster";
13239
+ "validation-report": "validation-report";
13240
+ "scene-geometry": "scene-geometry";
13241
+ "entity-geometry": "entity-geometry";
13242
+ "camera-track": "camera-track";
13243
+ }>;
13244
+ byteLength: z.ZodNumber;
13245
+ sha256: z.ZodString;
13246
+ originRevisionId: z.ZodOptional<z.ZodUUID>;
13247
+ }, z.core.$strict>;
13248
+ declare const scene3DShotSchema: z.ZodObject<{
13249
+ id: z.ZodString;
13250
+ startFrame: z.ZodNumber;
13251
+ endFrameExclusive: z.ZodNumber;
13252
+ label: z.ZodOptional<z.ZodString>;
13253
+ subjectEntityIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
13254
+ foregroundEntityIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
13255
+ }, z.core.$strict>;
13256
+ declare const scene3DClayLightingSchema: z.ZodObject<{
13257
+ preset: z.ZodEnum<{
13258
+ "clay-studio-v1": "clay-studio-v1";
13259
+ }>;
13260
+ ambientIntensity: z.ZodNumber;
13261
+ keyIntensity: z.ZodNumber;
13262
+ keyPosition: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
13263
+ }, z.core.$strict>;
13264
+ declare const scene3DOverrideSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
13265
+ kind: z.ZodLiteral<"entity-transform">;
13266
+ entityId: z.ZodString;
13267
+ space: z.ZodEnum<{
13268
+ local: "local";
13269
+ world: "world";
13270
+ }>;
13271
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13272
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13273
+ scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13274
+ id: z.ZodString;
13275
+ sourceRevisionId: z.ZodUUID;
13276
+ sourceContentHash: z.ZodString;
13277
+ operationVersion: z.ZodNumber;
13278
+ }, z.core.$strict>, z.ZodObject<{
13279
+ kind: z.ZodLiteral<"entity-color">;
13280
+ entityId: z.ZodString;
13281
+ materialRole: z.ZodString;
13282
+ color: z.ZodString;
13283
+ id: z.ZodString;
13284
+ sourceRevisionId: z.ZodUUID;
13285
+ sourceContentHash: z.ZodString;
13286
+ operationVersion: z.ZodNumber;
13287
+ }, z.core.$strict>, z.ZodObject<{
13288
+ kind: z.ZodLiteral<"entity-visibility">;
13289
+ entityId: z.ZodString;
13290
+ visible: z.ZodBoolean;
13291
+ id: z.ZodString;
13292
+ sourceRevisionId: z.ZodUUID;
13293
+ sourceContentHash: z.ZodString;
13294
+ operationVersion: z.ZodNumber;
13295
+ }, z.core.$strict>, z.ZodObject<{
13296
+ kind: z.ZodLiteral<"camera-shot-offset">;
13297
+ shotId: z.ZodString;
13298
+ positionOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13299
+ targetOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13300
+ id: z.ZodString;
13301
+ sourceRevisionId: z.ZodUUID;
13302
+ sourceContentHash: z.ZodString;
13303
+ operationVersion: z.ZodNumber;
13304
+ }, z.core.$strict>], "kind">;
13305
+ declare const scene3DProvenanceSchema: z.ZodObject<{
13306
+ engine: z.ZodString;
13307
+ engineVersion: z.ZodString;
13308
+ recipeVersion: z.ZodString;
13309
+ compilerVersion: z.ZodString;
13310
+ exporterVersion: z.ZodString;
13311
+ rendererVersion: z.ZodString;
13312
+ sourceRevisionId: z.ZodOptional<z.ZodUUID>;
13313
+ sourceArtifactId: z.ZodOptional<z.ZodString>;
13314
+ contentHash: z.ZodString;
13315
+ }, z.core.$strict>;
13316
+ type Issue$3 = Scene3DSemanticIssue;
13317
+ /** Decoded byte length of a JSON payload, browser and Node alike. Size is
13318
+ * checked on the BYTES, before `JSON.parse` allocates anything. */
13319
+ declare function scene3DJsonByteLength(text: string): number;
13320
+ /** What every `parse…Json` admission helper returns: the value, or the issues
13321
+ * that stopped it — never a throw, so a route can map issues to a 400. */
13322
+ type Scene3DParseResult<T> = {
13323
+ ok: true;
13324
+ value: T;
13325
+ } | {
13326
+ ok: false;
13327
+ issues: Issue$3[];
13328
+ };
13329
+ /** Flattens a zod failure into the same issue shape the semantic validators use. */
13330
+ declare function scene3DZodIssues(error: z.ZodError): Issue$3[];
13331
+
13332
+ /**
13333
+ * The Scene3D v2 PLAN: whole-manifest schema, every cross-field rule, and the
13334
+ * V1|V2 union the rest of the platform reads.
13335
+ *
13336
+ * `scene3d-v2.ts` says what a v2 entity, asset, shot or override looks like on
13337
+ * its own. Nothing there can catch the failures that actually reach a renderer,
13338
+ * because every one of them is a relationship:
13339
+ *
13340
+ * - an entity whose GLB is not in `assets`, or two entities claiming the same
13341
+ * exported root node;
13342
+ * - a parent chain that loops, or nests deeper than the transform walk allows;
13343
+ * - shots with a one-frame gap, so some frame belongs to no shot at all;
13344
+ * - a colour override naming a material role its entity never declared — the
13345
+ * bug where recolouring a person also repaints its chair;
13346
+ * - two overrides driving one channel, or one driving a locked entity;
13347
+ * - declared asset bytes over the download budget.
13348
+ *
13349
+ * All of it runs in `scene3DPlanV2Issues`, which the schema calls from a
13350
+ * `superRefine` and a caller holding an already-parsed plan can call directly —
13351
+ * the same split v1 uses, so both versions report failures identically.
13352
+ */
13353
+
13354
+ /** THE plan type. Narrow with `isScene3DPlanV1` / `isScene3DPlanV2` before
13355
+ * reading version-specific fields. */
13356
+ type Scene3DPlan = Scene3DPlanV1 | Scene3DPlanV2;
13357
+ interface Scene3DJobOutputV2 {
13358
+ scenePlan: Scene3DPlanV2;
13359
+ changeSummary?: string;
13360
+ }
13361
+ /** Job output when either version may come back. */
13362
+ interface Scene3DJobOutputAny {
13363
+ scenePlan: Scene3DPlan;
13364
+ changeSummary?: string;
13365
+ }
13366
+ type Issue$2 = Scene3DSemanticIssue;
13367
+ /** An overlay is accepted iff the entity advertises the capability AND has not
13368
+ * frozen it. One rule, checked in exactly one place. */
13369
+ declare function scene3DEntityAcceptsOverlay(entity: Scene3DEntityV2, capability: Scene3DEntityCapability): boolean;
13370
+ /**
13371
+ * Every v2 rule that needs more than one field: timing, identity, hierarchy,
13372
+ * asset resolution and budgets, shot coverage, overlay ownership and locks.
13373
+ *
13374
+ * Split out of the schema's `superRefine` (exactly as v1 does) so a caller
13375
+ * holding an already-parsed plan can re-check it without re-parsing.
13376
+ */
13377
+ declare function scene3DPlanV2Issues(plan: Scene3DPlanV2): Issue$2[];
13378
+ /**
13379
+ * The v2 object shape WITHOUT the cross-field pass. Exported so
13380
+ * `scene3DAnyPlanSchema` can discriminate on `schemaVersion`; parse with
13381
+ * `scene3DPlanV2Schema`.
13382
+ *
13383
+ * Deliberately free of `.default()`: `parse(x)` must deep-equal `x`, or a
13384
+ * producer hashing raw JSON and a consumer hashing parsed output would compute
13385
+ * different content hashes for the same revision.
13386
+ */
13387
+ declare const scene3DPlanV2ObjectSchema: z.ZodObject<{
13388
+ planType: z.ZodLiteral<"3d-scene">;
13389
+ schemaVersion: z.ZodLiteral<2>;
13390
+ revisionId: z.ZodUUID;
13391
+ parentRevisionId: z.ZodOptional<z.ZodUUID>;
13392
+ width: z.ZodNumber;
13393
+ height: z.ZodNumber;
13394
+ fps: z.ZodNumber;
13395
+ durationInFrames: z.ZodNumber;
13396
+ units: z.ZodLiteral<"meters">;
13397
+ upAxis: z.ZodLiteral<"Y">;
13398
+ handedness: z.ZodLiteral<"right">;
13399
+ objects: z.ZodArray<z.ZodObject<{
13400
+ id: z.ZodString;
13401
+ name: z.ZodString;
13402
+ parentId: z.ZodOptional<z.ZodString>;
13403
+ role: z.ZodOptional<z.ZodEnum<{
13404
+ other: "other";
13405
+ person: "person";
13406
+ vehicle: "vehicle";
13407
+ prop: "prop";
13408
+ environment: "environment";
13409
+ }>>;
13410
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13411
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13412
+ scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13413
+ identityColor: z.ZodOptional<z.ZodString>;
13414
+ anchors: z.ZodOptional<z.ZodArray<z.ZodObject<{
13415
+ name: z.ZodString;
13416
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
13417
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13418
+ }, z.core.$strict>>>;
13419
+ capabilities: z.ZodOptional<z.ZodArray<z.ZodEnum<{
13420
+ transform: "transform";
13421
+ color: "color";
13422
+ visibility: "visibility";
13423
+ }>>>;
13424
+ locks: z.ZodOptional<z.ZodArray<z.ZodEnum<{
13425
+ transform: "transform";
13426
+ color: "color";
13427
+ visibility: "visibility";
13428
+ }>>>;
13429
+ materialBindings: z.ZodOptional<z.ZodArray<z.ZodObject<{
13430
+ role: z.ZodString;
13431
+ materialName: z.ZodString;
13432
+ color: z.ZodOptional<z.ZodString>;
13433
+ roughness: z.ZodOptional<z.ZodNumber>;
13434
+ }, z.core.$strict>>>;
13435
+ visual: z.ZodDiscriminatedUnion<[z.ZodObject<{
13436
+ kind: z.ZodLiteral<"group">;
13437
+ }, z.core.$strict>, z.ZodObject<{
13438
+ kind: z.ZodLiteral<"primitive">;
13439
+ primitive: z.ZodEnum<{
13440
+ box: "box";
13441
+ sphere: "sphere";
13442
+ cylinder: "cylinder";
13443
+ cone: "cone";
13444
+ plane: "plane";
13445
+ capsule: "capsule";
13446
+ }>;
13447
+ dimensions: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
13448
+ color: z.ZodString;
13449
+ }, z.core.$strict>, z.ZodObject<{
13450
+ kind: z.ZodLiteral<"asset">;
13451
+ assetId: z.ZodString;
13452
+ rootNodeId: z.ZodString;
13453
+ animation: z.ZodOptional<z.ZodObject<{
13454
+ clipName: z.ZodString;
13455
+ startFrame: z.ZodNumber;
13456
+ endFrameExclusive: z.ZodNumber;
13457
+ loop: z.ZodOptional<z.ZodBoolean>;
13458
+ }, z.core.$strict>>;
13459
+ }, z.core.$strict>], "kind">;
13460
+ }, z.core.$strict>>;
13461
+ assets: z.ZodArray<z.ZodObject<{
13462
+ assetId: z.ZodString;
13463
+ kind: z.ZodEnum<{
13464
+ glb: "glb";
13465
+ "camera-track-json": "camera-track-json";
13466
+ poster: "poster";
13467
+ "validation-report": "validation-report";
13468
+ "blend-source": "blend-source";
13469
+ }>;
13470
+ role: z.ZodEnum<{
13471
+ source: "source";
13472
+ poster: "poster";
13473
+ "validation-report": "validation-report";
13474
+ "scene-geometry": "scene-geometry";
13475
+ "entity-geometry": "entity-geometry";
13476
+ "camera-track": "camera-track";
13477
+ }>;
13478
+ byteLength: z.ZodNumber;
13479
+ sha256: z.ZodString;
13480
+ originRevisionId: z.ZodOptional<z.ZodUUID>;
13481
+ }, z.core.$strict>>;
13482
+ cameraTrackAssetId: z.ZodString;
13483
+ shots: z.ZodArray<z.ZodObject<{
13484
+ id: z.ZodString;
13485
+ startFrame: z.ZodNumber;
13486
+ endFrameExclusive: z.ZodNumber;
13487
+ label: z.ZodOptional<z.ZodString>;
13488
+ subjectEntityIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
13489
+ foregroundEntityIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
13490
+ }, z.core.$strict>>;
13491
+ lighting: z.ZodObject<{
13492
+ preset: z.ZodEnum<{
13493
+ "clay-studio-v1": "clay-studio-v1";
13494
+ }>;
13495
+ ambientIntensity: z.ZodNumber;
13496
+ keyIntensity: z.ZodNumber;
13497
+ keyPosition: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
13498
+ }, z.core.$strict>;
13499
+ backgroundColor: z.ZodString;
13500
+ references: z.ZodOptional<z.ZodArray<z.ZodObject<{
13501
+ id: z.ZodString;
13502
+ url: z.ZodString;
13503
+ kind: z.ZodEnum<{
13504
+ image: "image";
13505
+ video: "video";
13506
+ }>;
13507
+ role: z.ZodEnum<{
13508
+ motion: "motion";
13509
+ layout: "layout";
13510
+ appearance: "appearance";
13511
+ }>;
13512
+ objectId: z.ZodOptional<z.ZodString>;
13513
+ startSeconds: z.ZodOptional<z.ZodNumber>;
13514
+ endSeconds: z.ZodOptional<z.ZodNumber>;
13515
+ }, z.core.$strict>>>;
13516
+ overrides: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
13517
+ kind: z.ZodLiteral<"entity-transform">;
13518
+ entityId: z.ZodString;
13519
+ space: z.ZodEnum<{
13520
+ local: "local";
13521
+ world: "world";
13522
+ }>;
13523
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13524
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13525
+ scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13526
+ id: z.ZodString;
13527
+ sourceRevisionId: z.ZodUUID;
13528
+ sourceContentHash: z.ZodString;
13529
+ operationVersion: z.ZodNumber;
13530
+ }, z.core.$strict>, z.ZodObject<{
13531
+ kind: z.ZodLiteral<"entity-color">;
13532
+ entityId: z.ZodString;
13533
+ materialRole: z.ZodString;
13534
+ color: z.ZodString;
13535
+ id: z.ZodString;
13536
+ sourceRevisionId: z.ZodUUID;
13537
+ sourceContentHash: z.ZodString;
13538
+ operationVersion: z.ZodNumber;
13539
+ }, z.core.$strict>, z.ZodObject<{
13540
+ kind: z.ZodLiteral<"entity-visibility">;
13541
+ entityId: z.ZodString;
13542
+ visible: z.ZodBoolean;
13543
+ id: z.ZodString;
13544
+ sourceRevisionId: z.ZodUUID;
13545
+ sourceContentHash: z.ZodString;
13546
+ operationVersion: z.ZodNumber;
13547
+ }, z.core.$strict>, z.ZodObject<{
13548
+ kind: z.ZodLiteral<"camera-shot-offset">;
13549
+ shotId: z.ZodString;
13550
+ positionOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13551
+ targetOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13552
+ id: z.ZodString;
13553
+ sourceRevisionId: z.ZodUUID;
13554
+ sourceContentHash: z.ZodString;
13555
+ operationVersion: z.ZodNumber;
13556
+ }, z.core.$strict>], "kind">>>;
13557
+ provenance: z.ZodObject<{
13558
+ engine: z.ZodString;
13559
+ engineVersion: z.ZodString;
13560
+ recipeVersion: z.ZodString;
13561
+ compilerVersion: z.ZodString;
13562
+ exporterVersion: z.ZodString;
13563
+ rendererVersion: z.ZodString;
13564
+ sourceRevisionId: z.ZodOptional<z.ZodUUID>;
13565
+ sourceArtifactId: z.ZodOptional<z.ZodString>;
13566
+ contentHash: z.ZodString;
13567
+ }, z.core.$strict>;
13568
+ }, z.core.$strict>;
13569
+ /** THE v2 plan validator: structure first, then the cross-field rules. */
13570
+ declare const scene3DPlanV2Schema: z.ZodObject<{
13571
+ planType: z.ZodLiteral<"3d-scene">;
13572
+ schemaVersion: z.ZodLiteral<2>;
13573
+ revisionId: z.ZodUUID;
13574
+ parentRevisionId: z.ZodOptional<z.ZodUUID>;
13575
+ width: z.ZodNumber;
13576
+ height: z.ZodNumber;
13577
+ fps: z.ZodNumber;
13578
+ durationInFrames: z.ZodNumber;
13579
+ units: z.ZodLiteral<"meters">;
13580
+ upAxis: z.ZodLiteral<"Y">;
13581
+ handedness: z.ZodLiteral<"right">;
13582
+ objects: z.ZodArray<z.ZodObject<{
13583
+ id: z.ZodString;
13584
+ name: z.ZodString;
13585
+ parentId: z.ZodOptional<z.ZodString>;
13586
+ role: z.ZodOptional<z.ZodEnum<{
13587
+ other: "other";
13588
+ person: "person";
13589
+ vehicle: "vehicle";
13590
+ prop: "prop";
13591
+ environment: "environment";
13592
+ }>>;
13593
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13594
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13595
+ scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13596
+ identityColor: z.ZodOptional<z.ZodString>;
13597
+ anchors: z.ZodOptional<z.ZodArray<z.ZodObject<{
13598
+ name: z.ZodString;
13599
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
13600
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13601
+ }, z.core.$strict>>>;
13602
+ capabilities: z.ZodOptional<z.ZodArray<z.ZodEnum<{
13603
+ transform: "transform";
13604
+ color: "color";
13605
+ visibility: "visibility";
13606
+ }>>>;
13607
+ locks: z.ZodOptional<z.ZodArray<z.ZodEnum<{
13608
+ transform: "transform";
13609
+ color: "color";
13610
+ visibility: "visibility";
13611
+ }>>>;
13612
+ materialBindings: z.ZodOptional<z.ZodArray<z.ZodObject<{
13613
+ role: z.ZodString;
13614
+ materialName: z.ZodString;
13615
+ color: z.ZodOptional<z.ZodString>;
13616
+ roughness: z.ZodOptional<z.ZodNumber>;
13617
+ }, z.core.$strict>>>;
13618
+ visual: z.ZodDiscriminatedUnion<[z.ZodObject<{
13619
+ kind: z.ZodLiteral<"group">;
13620
+ }, z.core.$strict>, z.ZodObject<{
13621
+ kind: z.ZodLiteral<"primitive">;
13622
+ primitive: z.ZodEnum<{
13623
+ box: "box";
13624
+ sphere: "sphere";
13625
+ cylinder: "cylinder";
13626
+ cone: "cone";
13627
+ plane: "plane";
13628
+ capsule: "capsule";
13629
+ }>;
13630
+ dimensions: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
13631
+ color: z.ZodString;
13632
+ }, z.core.$strict>, z.ZodObject<{
13633
+ kind: z.ZodLiteral<"asset">;
13634
+ assetId: z.ZodString;
13635
+ rootNodeId: z.ZodString;
13636
+ animation: z.ZodOptional<z.ZodObject<{
13637
+ clipName: z.ZodString;
13638
+ startFrame: z.ZodNumber;
13639
+ endFrameExclusive: z.ZodNumber;
13640
+ loop: z.ZodOptional<z.ZodBoolean>;
13641
+ }, z.core.$strict>>;
13642
+ }, z.core.$strict>], "kind">;
13643
+ }, z.core.$strict>>;
13644
+ assets: z.ZodArray<z.ZodObject<{
13645
+ assetId: z.ZodString;
13646
+ kind: z.ZodEnum<{
13647
+ glb: "glb";
13648
+ "camera-track-json": "camera-track-json";
13649
+ poster: "poster";
13650
+ "validation-report": "validation-report";
13651
+ "blend-source": "blend-source";
13652
+ }>;
13653
+ role: z.ZodEnum<{
13654
+ source: "source";
13655
+ poster: "poster";
13656
+ "validation-report": "validation-report";
13657
+ "scene-geometry": "scene-geometry";
13658
+ "entity-geometry": "entity-geometry";
13659
+ "camera-track": "camera-track";
13660
+ }>;
13661
+ byteLength: z.ZodNumber;
13662
+ sha256: z.ZodString;
13663
+ originRevisionId: z.ZodOptional<z.ZodUUID>;
13664
+ }, z.core.$strict>>;
13665
+ cameraTrackAssetId: z.ZodString;
13666
+ shots: z.ZodArray<z.ZodObject<{
13667
+ id: z.ZodString;
13668
+ startFrame: z.ZodNumber;
13669
+ endFrameExclusive: z.ZodNumber;
13670
+ label: z.ZodOptional<z.ZodString>;
13671
+ subjectEntityIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
13672
+ foregroundEntityIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
13673
+ }, z.core.$strict>>;
13674
+ lighting: z.ZodObject<{
13675
+ preset: z.ZodEnum<{
13676
+ "clay-studio-v1": "clay-studio-v1";
13677
+ }>;
13678
+ ambientIntensity: z.ZodNumber;
13679
+ keyIntensity: z.ZodNumber;
13680
+ keyPosition: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
13681
+ }, z.core.$strict>;
13682
+ backgroundColor: z.ZodString;
13683
+ references: z.ZodOptional<z.ZodArray<z.ZodObject<{
13684
+ id: z.ZodString;
13685
+ url: z.ZodString;
13686
+ kind: z.ZodEnum<{
13687
+ image: "image";
13688
+ video: "video";
13689
+ }>;
13690
+ role: z.ZodEnum<{
13691
+ motion: "motion";
13692
+ layout: "layout";
13693
+ appearance: "appearance";
13694
+ }>;
13695
+ objectId: z.ZodOptional<z.ZodString>;
13696
+ startSeconds: z.ZodOptional<z.ZodNumber>;
13697
+ endSeconds: z.ZodOptional<z.ZodNumber>;
13698
+ }, z.core.$strict>>>;
13699
+ overrides: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
13700
+ kind: z.ZodLiteral<"entity-transform">;
13701
+ entityId: z.ZodString;
13702
+ space: z.ZodEnum<{
13703
+ local: "local";
13704
+ world: "world";
13705
+ }>;
13706
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13707
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13708
+ scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13709
+ id: z.ZodString;
13710
+ sourceRevisionId: z.ZodUUID;
13711
+ sourceContentHash: z.ZodString;
13712
+ operationVersion: z.ZodNumber;
13713
+ }, z.core.$strict>, z.ZodObject<{
13714
+ kind: z.ZodLiteral<"entity-color">;
13715
+ entityId: z.ZodString;
13716
+ materialRole: z.ZodString;
13717
+ color: z.ZodString;
13718
+ id: z.ZodString;
13719
+ sourceRevisionId: z.ZodUUID;
13720
+ sourceContentHash: z.ZodString;
13721
+ operationVersion: z.ZodNumber;
13722
+ }, z.core.$strict>, z.ZodObject<{
13723
+ kind: z.ZodLiteral<"entity-visibility">;
13724
+ entityId: z.ZodString;
13725
+ visible: z.ZodBoolean;
13726
+ id: z.ZodString;
13727
+ sourceRevisionId: z.ZodUUID;
13728
+ sourceContentHash: z.ZodString;
13729
+ operationVersion: z.ZodNumber;
13730
+ }, z.core.$strict>, z.ZodObject<{
13731
+ kind: z.ZodLiteral<"camera-shot-offset">;
13732
+ shotId: z.ZodString;
13733
+ positionOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13734
+ targetOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13735
+ id: z.ZodString;
13736
+ sourceRevisionId: z.ZodUUID;
13737
+ sourceContentHash: z.ZodString;
13738
+ operationVersion: z.ZodNumber;
13739
+ }, z.core.$strict>], "kind">>>;
13740
+ provenance: z.ZodObject<{
13741
+ engine: z.ZodString;
13742
+ engineVersion: z.ZodString;
13743
+ recipeVersion: z.ZodString;
13744
+ compilerVersion: z.ZodString;
13745
+ exporterVersion: z.ZodString;
13746
+ rendererVersion: z.ZodString;
13747
+ sourceRevisionId: z.ZodOptional<z.ZodUUID>;
13748
+ sourceArtifactId: z.ZodOptional<z.ZodString>;
13749
+ contentHash: z.ZodString;
13750
+ }, z.core.$strict>;
13751
+ }, z.core.$strict>;
13752
+ /**
13753
+ * Either version, discriminated on `schemaVersion` — so an unknown version
13754
+ * reports "Invalid discriminator value. Expected '1' | '2'" instead of a pile
13755
+ * of unknown-key errors from whichever branch failed last.
13756
+ */
13757
+ declare const scene3DAnyPlanSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
13758
+ planType: z.ZodLiteral<"3d-scene">;
13759
+ schemaVersion: z.ZodLiteral<1>;
13760
+ revisionId: z.ZodUUID;
13761
+ parentRevisionId: z.ZodOptional<z.ZodUUID>;
13762
+ width: z.ZodNumber;
13763
+ height: z.ZodNumber;
13764
+ fps: z.ZodNumber;
13765
+ durationInFrames: z.ZodNumber;
13766
+ backgroundColor: z.ZodString;
13767
+ camera: z.ZodObject<{
13768
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
13769
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
13770
+ focalLengthMm: z.ZodNumber;
13771
+ sensorWidthMm: z.ZodDefault<z.ZodNumber>;
13772
+ keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
13773
+ frame: z.ZodNumber;
13774
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13775
+ target: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13776
+ focalLengthMm: z.ZodOptional<z.ZodNumber>;
13777
+ easing: z.ZodOptional<z.ZodEnum<{
13778
+ linear: "linear";
13779
+ easeInOut: "easeInOut";
13780
+ }>>;
13781
+ }, z.core.$strict>>>;
13782
+ }, z.core.$strict>;
13783
+ objects: z.ZodArray<z.ZodObject<{
13784
+ id: z.ZodString;
13785
+ name: z.ZodString;
13786
+ primitive: z.ZodEnum<{
13787
+ group: "group";
13788
+ box: "box";
13789
+ sphere: "sphere";
13790
+ cylinder: "cylinder";
13791
+ cone: "cone";
13792
+ plane: "plane";
13793
+ capsule: "capsule";
13794
+ }>;
13795
+ parentId: z.ZodOptional<z.ZodString>;
13796
+ dimensions: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
13797
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
13798
+ rotation: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
13799
+ scale: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
13800
+ color: z.ZodString;
13801
+ keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
13802
+ frame: z.ZodNumber;
13803
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13804
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13805
+ scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13806
+ easing: z.ZodOptional<z.ZodEnum<{
13807
+ linear: "linear";
13808
+ easeInOut: "easeInOut";
13809
+ }>>;
13810
+ }, z.core.$strict>>>;
13811
+ }, z.core.$strict>>;
13812
+ lighting: z.ZodObject<{
13813
+ ambientIntensity: z.ZodNumber;
13814
+ keyIntensity: z.ZodNumber;
13815
+ keyPosition: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
13816
+ }, z.core.$strict>;
13817
+ references: z.ZodOptional<z.ZodArray<z.ZodObject<{
13818
+ id: z.ZodString;
13819
+ url: z.ZodString;
13820
+ kind: z.ZodEnum<{
13821
+ image: "image";
13822
+ video: "video";
13823
+ }>;
13824
+ role: z.ZodEnum<{
13825
+ motion: "motion";
13826
+ layout: "layout";
13827
+ appearance: "appearance";
13828
+ }>;
13829
+ objectId: z.ZodOptional<z.ZodString>;
13830
+ startSeconds: z.ZodOptional<z.ZodNumber>;
13831
+ endSeconds: z.ZodOptional<z.ZodNumber>;
13832
+ }, z.core.$strict>>>;
13833
+ }, z.core.$strict>, z.ZodObject<{
13834
+ planType: z.ZodLiteral<"3d-scene">;
13835
+ schemaVersion: z.ZodLiteral<2>;
13836
+ revisionId: z.ZodUUID;
13837
+ parentRevisionId: z.ZodOptional<z.ZodUUID>;
13838
+ width: z.ZodNumber;
13839
+ height: z.ZodNumber;
13840
+ fps: z.ZodNumber;
13841
+ durationInFrames: z.ZodNumber;
13842
+ units: z.ZodLiteral<"meters">;
13843
+ upAxis: z.ZodLiteral<"Y">;
13844
+ handedness: z.ZodLiteral<"right">;
13845
+ objects: z.ZodArray<z.ZodObject<{
13846
+ id: z.ZodString;
13847
+ name: z.ZodString;
13848
+ parentId: z.ZodOptional<z.ZodString>;
13849
+ role: z.ZodOptional<z.ZodEnum<{
13850
+ other: "other";
13851
+ person: "person";
13852
+ vehicle: "vehicle";
13853
+ prop: "prop";
13854
+ environment: "environment";
13855
+ }>>;
13856
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13857
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13858
+ scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13859
+ identityColor: z.ZodOptional<z.ZodString>;
13860
+ anchors: z.ZodOptional<z.ZodArray<z.ZodObject<{
13861
+ name: z.ZodString;
13862
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
13863
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13864
+ }, z.core.$strict>>>;
13865
+ capabilities: z.ZodOptional<z.ZodArray<z.ZodEnum<{
13866
+ transform: "transform";
13867
+ color: "color";
13868
+ visibility: "visibility";
13869
+ }>>>;
13870
+ locks: z.ZodOptional<z.ZodArray<z.ZodEnum<{
13871
+ transform: "transform";
13872
+ color: "color";
13873
+ visibility: "visibility";
13874
+ }>>>;
13875
+ materialBindings: z.ZodOptional<z.ZodArray<z.ZodObject<{
13876
+ role: z.ZodString;
13877
+ materialName: z.ZodString;
13878
+ color: z.ZodOptional<z.ZodString>;
13879
+ roughness: z.ZodOptional<z.ZodNumber>;
13880
+ }, z.core.$strict>>>;
13881
+ visual: z.ZodDiscriminatedUnion<[z.ZodObject<{
13882
+ kind: z.ZodLiteral<"group">;
13883
+ }, z.core.$strict>, z.ZodObject<{
13884
+ kind: z.ZodLiteral<"primitive">;
13885
+ primitive: z.ZodEnum<{
13886
+ box: "box";
13887
+ sphere: "sphere";
13888
+ cylinder: "cylinder";
13889
+ cone: "cone";
13890
+ plane: "plane";
13891
+ capsule: "capsule";
13892
+ }>;
13893
+ dimensions: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
13894
+ color: z.ZodString;
13895
+ }, z.core.$strict>, z.ZodObject<{
13896
+ kind: z.ZodLiteral<"asset">;
13897
+ assetId: z.ZodString;
13898
+ rootNodeId: z.ZodString;
13899
+ animation: z.ZodOptional<z.ZodObject<{
13900
+ clipName: z.ZodString;
13901
+ startFrame: z.ZodNumber;
13902
+ endFrameExclusive: z.ZodNumber;
13903
+ loop: z.ZodOptional<z.ZodBoolean>;
13904
+ }, z.core.$strict>>;
13905
+ }, z.core.$strict>], "kind">;
13906
+ }, z.core.$strict>>;
13907
+ assets: z.ZodArray<z.ZodObject<{
13908
+ assetId: z.ZodString;
13909
+ kind: z.ZodEnum<{
13910
+ glb: "glb";
13911
+ "camera-track-json": "camera-track-json";
13912
+ poster: "poster";
13913
+ "validation-report": "validation-report";
13914
+ "blend-source": "blend-source";
13915
+ }>;
13916
+ role: z.ZodEnum<{
13917
+ source: "source";
13918
+ poster: "poster";
13919
+ "validation-report": "validation-report";
13920
+ "scene-geometry": "scene-geometry";
13921
+ "entity-geometry": "entity-geometry";
13922
+ "camera-track": "camera-track";
13923
+ }>;
13924
+ byteLength: z.ZodNumber;
13925
+ sha256: z.ZodString;
13926
+ originRevisionId: z.ZodOptional<z.ZodUUID>;
13927
+ }, z.core.$strict>>;
13928
+ cameraTrackAssetId: z.ZodString;
13929
+ shots: z.ZodArray<z.ZodObject<{
13930
+ id: z.ZodString;
13931
+ startFrame: z.ZodNumber;
13932
+ endFrameExclusive: z.ZodNumber;
13933
+ label: z.ZodOptional<z.ZodString>;
13934
+ subjectEntityIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
13935
+ foregroundEntityIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
13936
+ }, z.core.$strict>>;
13937
+ lighting: z.ZodObject<{
13938
+ preset: z.ZodEnum<{
13939
+ "clay-studio-v1": "clay-studio-v1";
13940
+ }>;
13941
+ ambientIntensity: z.ZodNumber;
13942
+ keyIntensity: z.ZodNumber;
13943
+ keyPosition: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
13944
+ }, z.core.$strict>;
13945
+ backgroundColor: z.ZodString;
13946
+ references: z.ZodOptional<z.ZodArray<z.ZodObject<{
13947
+ id: z.ZodString;
13948
+ url: z.ZodString;
13949
+ kind: z.ZodEnum<{
13950
+ image: "image";
13951
+ video: "video";
13952
+ }>;
13953
+ role: z.ZodEnum<{
13954
+ motion: "motion";
13955
+ layout: "layout";
13956
+ appearance: "appearance";
13957
+ }>;
13958
+ objectId: z.ZodOptional<z.ZodString>;
13959
+ startSeconds: z.ZodOptional<z.ZodNumber>;
13960
+ endSeconds: z.ZodOptional<z.ZodNumber>;
13961
+ }, z.core.$strict>>>;
13962
+ overrides: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
13963
+ kind: z.ZodLiteral<"entity-transform">;
13964
+ entityId: z.ZodString;
13965
+ space: z.ZodEnum<{
13966
+ local: "local";
13967
+ world: "world";
13968
+ }>;
13969
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13970
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13971
+ scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13972
+ id: z.ZodString;
13973
+ sourceRevisionId: z.ZodUUID;
13974
+ sourceContentHash: z.ZodString;
13975
+ operationVersion: z.ZodNumber;
13976
+ }, z.core.$strict>, z.ZodObject<{
13977
+ kind: z.ZodLiteral<"entity-color">;
13978
+ entityId: z.ZodString;
13979
+ materialRole: z.ZodString;
13980
+ color: z.ZodString;
13981
+ id: z.ZodString;
13982
+ sourceRevisionId: z.ZodUUID;
13983
+ sourceContentHash: z.ZodString;
13984
+ operationVersion: z.ZodNumber;
13985
+ }, z.core.$strict>, z.ZodObject<{
13986
+ kind: z.ZodLiteral<"entity-visibility">;
13987
+ entityId: z.ZodString;
13988
+ visible: z.ZodBoolean;
13989
+ id: z.ZodString;
13990
+ sourceRevisionId: z.ZodUUID;
13991
+ sourceContentHash: z.ZodString;
13992
+ operationVersion: z.ZodNumber;
13993
+ }, z.core.$strict>, z.ZodObject<{
13994
+ kind: z.ZodLiteral<"camera-shot-offset">;
13995
+ shotId: z.ZodString;
13996
+ positionOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13997
+ targetOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13998
+ id: z.ZodString;
13999
+ sourceRevisionId: z.ZodUUID;
14000
+ sourceContentHash: z.ZodString;
14001
+ operationVersion: z.ZodNumber;
14002
+ }, z.core.$strict>], "kind">>>;
14003
+ provenance: z.ZodObject<{
14004
+ engine: z.ZodString;
14005
+ engineVersion: z.ZodString;
14006
+ recipeVersion: z.ZodString;
14007
+ compilerVersion: z.ZodString;
14008
+ exporterVersion: z.ZodString;
14009
+ rendererVersion: z.ZodString;
14010
+ sourceRevisionId: z.ZodOptional<z.ZodUUID>;
14011
+ sourceArtifactId: z.ZodOptional<z.ZodString>;
14012
+ contentHash: z.ZodString;
14013
+ }, z.core.$strict>;
14014
+ }, z.core.$strict>], "schemaVersion">;
14015
+ /** Zod for a client's `acceptedSceneSchemaVersions`. */
14016
+ declare const scene3DAcceptedSchemaVersionsSchema: z.ZodArray<z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>]>>;
14017
+ declare function isScene3DPlanV2(value: unknown): value is Scene3DPlanV2;
14018
+ /** Accepts EITHER version. `isScene3DPlanV1` (in `scene3d.ts`) is the v1-only
14019
+ * form; narrow with one of them before reading version-specific fields. */
14020
+ declare function isScene3DPlan(value: unknown): value is Scene3DPlan;
14021
+ /**
14022
+ * The schema version a value CLAIMS, without validating the rest of it.
14023
+ *
14024
+ * Returns the number even when this package cannot handle it, so an SDK
14025
+ * consumer can say "this scene is v3, upgrade to render it" instead of "invalid
14026
+ * plan". `null` means it is not a Scene3D plan at all.
14027
+ */
14028
+ declare function scene3DPlanSchemaVersion(value: unknown): number | null;
14029
+ declare function isScene3DSchemaVersionSupported(version: number): version is Scene3DSupportedSchemaVersion;
14030
+ declare function isKnownScene3DEngine(engine: string): engine is Scene3DKnownEngine;
14031
+ /**
14032
+ * The shot owning `frame`, or `-1`. Ranges are half-open and contiguous, so
14033
+ * this is total over `[0, durationInFrames)` on a validated plan — and it is
14034
+ * the ONLY place a renderer decides which side of a cut a frame is on.
14035
+ */
14036
+ declare function scene3DShotIndexForFrame(shots: readonly Scene3DShot[], frame: number): number;
14037
+ declare function scene3DShotForFrame(shots: readonly Scene3DShot[], frame: number): Scene3DShot | undefined;
14038
+
14039
+ /**
14040
+ * Scene3D v2 resource admission and revision identity.
14041
+ *
14042
+ * Two gates and one hash, all of which have to agree across the builder, the
14043
+ * platform route and the renderer — so they live in one published place instead
14044
+ * of being re-derived three times.
14045
+ *
14046
+ * **Pre-allocation gate** (`scene3DV2AdmissionIssues`). Everything checkable
14047
+ * from the manifest alone, BEFORE a byte is fetched or a decoder is handed
14048
+ * anything: declared asset sizes, counts, timeline length, hierarchy depth, and
14049
+ * the decoded size of the manifest itself. A limit enforced after the download
14050
+ * is not a limit.
14051
+ *
14052
+ * **Post-decode gate** (`scene3DV2NormalizationIssues`). What only the actual
14053
+ * bytes can answer: real length versus declared, digest versus declared,
14054
+ * triangles, mesh nodes, node depth, image dimensions. A 2 MiB GLB can decode
14055
+ * to a hundred million triangles, so compression never waives a geometry
14056
+ * budget.
14057
+ *
14058
+ * **Content hash.** The canonical form of a revision, which is what makes
14059
+ * "these two revisions are the same scene" a decidable question — for
14060
+ * content-addressed caching, and for asserting after a rebuild that the entities
14061
+ * the user locked really did come back unchanged.
14062
+ */
14063
+
14064
+ type Issue$1 = Scene3DSemanticIssue;
14065
+ interface Scene3DV2ResourceUsage {
14066
+ entities: number;
14067
+ assets: number;
14068
+ shots: number;
14069
+ overrides: number;
14070
+ references: number;
14071
+ frames: number;
14072
+ durationSeconds: number;
14073
+ /** Deepest entity parent chain, 1 for a flat scene. */
14074
+ hierarchyDepth: number;
14075
+ /** Declared bytes of everything the browser downloads. */
14076
+ rendererAssetBytes: number;
14077
+ /** Declared bytes of the camera sidecar. */
14078
+ cameraTrackBytes: number;
14079
+ /** Declared bytes of the retained native source, which the browser never sees. */
14080
+ blendSourceBytes: number;
14081
+ }
14082
+ /** Deepest parent chain, counting the entity itself. Bounded by the entity
14083
+ * count even on a cyclic plan, so it is safe to call before validation. */
14084
+ declare function scene3DV2HierarchyDepth(entities: readonly Scene3DEntityV2[]): number;
14085
+ /** What this manifest CLAIMS it will cost. Also the shape a capabilities or
14086
+ * quote surface displays — it is derived, never authored. */
14087
+ declare function scene3DV2ResourceUsage(plan: Scene3DPlanV2): Scene3DV2ResourceUsage;
14088
+ /**
14089
+ * The pre-allocation gate. `manifestBytes` is the DECODED size of the manifest
14090
+ * as it arrived — pass it when admitting a downloaded manifest, omit it when
14091
+ * the plan is already in memory.
14092
+ *
14093
+ * Most of these are also enforced by `scene3DPlanV2Schema`; this function is
14094
+ * what a caller runs when it wants the budget answer without re-parsing, and
14095
+ * what makes the ceilings quotable in one place by capabilities and docs.
14096
+ */
14097
+ declare function scene3DV2AdmissionIssues(plan: Scene3DPlanV2, manifestBytes?: number): Issue$1[];
14098
+ /**
14099
+ * What the normalizer measured on the ACTUAL bytes of one asset. Optional
14100
+ * fields are "not applicable to this kind" — a poster has image dimensions and
14101
+ * no triangles; a GLB is the other way round.
14102
+ */
14103
+ interface Scene3DNormalizedAssetStats {
14104
+ assetId: string;
14105
+ kind: Scene3DAssetKind;
14106
+ /** Decoded length, after any transport compression. */
14107
+ byteLength: number;
14108
+ /** Digest of the decoded bytes, lowercase hex, when computed. */
14109
+ sha256?: string;
14110
+ meshNodes?: number;
14111
+ triangles?: number;
14112
+ /** Deepest node chain inside the asset's own scene graph. */
14113
+ maxNodeDepth?: number;
14114
+ imageWidth?: number;
14115
+ imageHeight?: number;
14116
+ }
14117
+ /**
14118
+ * The post-decode gate: does what arrived match what the manifest promised, and
14119
+ * does the resolved geometry fit the budget?
14120
+ *
14121
+ * Mesh nodes and triangles are summed ACROSS assets — the ceiling is on the
14122
+ * scene the renderer assembles, not on any single file.
14123
+ */
14124
+ declare function scene3DV2NormalizationIssues(plan: Scene3DPlanV2, stats: readonly Scene3DNormalizedAssetStats[]): Issue$1[];
14125
+ /** Size-gate on the bytes, then parse, then the full v2 schema. Refuses an
14126
+ * oversized manifest before `JSON.parse` allocates it. */
14127
+ declare function parseScene3DPlanV2Json(text: string): Scene3DParseResult<Scene3DPlanV2>;
14128
+ /**
14129
+ * Fields excluded from the canonical form.
14130
+ *
14131
+ * `revisionId`/`parentRevisionId` are IDENTITY, not content: two revisions with
14132
+ * the same scene must hash the same, or a content-addressed cache never hits
14133
+ * and "did the rebuild preserve the locked entities?" cannot be answered by
14134
+ * comparing hashes. `provenance.contentHash` is excluded because a value cannot
14135
+ * contain its own hash.
14136
+ *
14137
+ * Everything else is in — entities, anchors, material bindings, overrides, asset
14138
+ * digests, shots, lighting, provenance versions.
14139
+ */
14140
+ declare const SCENE3D_V2_CONTENT_HASH_EXCLUDED: readonly ["revisionId", "parentRevisionId"];
14141
+ /**
14142
+ * The exact bytes a revision's content hash is computed over: recursively
14143
+ * key-sorted JSON with the identity fields removed. Key order in the input
14144
+ * cannot change the result, so a manifest that survives a round-trip through a
14145
+ * database or a re-serialization still hashes the same.
14146
+ */
14147
+ declare function canonicalScene3DPlanV2Json(plan: Scene3DPlanV2): string;
14148
+ /**
14149
+ * SHA-256 of the canonical form, lowercase hex — the value that belongs in
14150
+ * `provenance.contentHash`. Uses WebCrypto, which the browser, Node 18+ and the
14151
+ * Remotion renderer all expose, so producer and consumer compute it the same
14152
+ * way.
14153
+ */
14154
+ declare function computeScene3DPlanV2ContentHash(plan: Scene3DPlanV2): Promise<string>;
14155
+ /** Does the manifest's declared `provenance.contentHash` match its content? */
14156
+ declare function verifyScene3DPlanV2ContentHash(plan: Scene3DPlanV2): Promise<boolean>;
14157
+
14158
+ /**
14159
+ * The Scene3D v2 camera sidecar — one baked sample per frame.
14160
+ *
14161
+ * A 30-second scene is 720 camera samples. V1's 240-keyframe interpolated track
14162
+ * cannot carry that, and interpolating a sparse track across a hard cut blends
14163
+ * two shots into a frame that belongs to neither. So v2 moves the camera out of
14164
+ * the manifest into this dense JSON asset, and the rule becomes trivial:
14165
+ *
14166
+ * **at integer frame `f`, use `samples[f]`.**
14167
+ *
14168
+ * No interpolation, no easing, no "nearest key". Pausing, scrubbing backwards
14169
+ * and rendering frames out of order therefore produce identical state, which is
14170
+ * the whole reason preview and export can be trusted to agree.
14171
+ *
14172
+ * Two things this format refuses to guess at:
14173
+ *
14174
+ * - **Orientation is a quaternion, not a look-at.** A renderer that replaces the
14175
+ * exported quaternion with `lookAt(target)` throws away the authored roll and
14176
+ * the handheld component. `target` is carried for inspection and intent only.
14177
+ * - **Projection is a matrix, not a lens number.** A focal length cannot express
14178
+ * sensor fit or lens shift, and re-deriving a projection at a different aspect
14179
+ * silently reframes every shot. `focalLengthMm` is metadata; the 16-element
14180
+ * column-major matrix is authoritative.
14181
+ *
14182
+ * Changing fps or aspect ratio is an explicit resample/reprojection producing a
14183
+ * NEW revision — never a render-time override. `scene3DCameraTrackPlanIssues`
14184
+ * is what makes that non-negotiable.
14185
+ */
14186
+
14187
+ declare const SCENE3D_CAMERA_TRACK_FORMAT = "scene3d-camera-track";
14188
+ declare const SCENE3D_CAMERA_TRACK_VERSION = 1;
14189
+ declare const SCENE3D_CAMERA_TRACK_LIMITS: {
14190
+ readonly maxJsonBytes: number;
14191
+ readonly maxFrameCount: 3600;
14192
+ readonly minFps: 15;
14193
+ readonly maxFps: 60;
14194
+ /** A unit quaternion off by more than this is a bug, not float noise. */
14195
+ readonly quaternionTolerance: 0.0001;
14196
+ /** Absolute tolerance on the projection entries that must be exactly zero
14197
+ * (or exactly ∓1) in a perspective matrix. */
14198
+ readonly projectionEpsilon: 0.000001;
14199
+ /** Relative tolerance when comparing declared near/far against the values the
14200
+ * projection matrix implies. */
14201
+ readonly nearFarRelativeTolerance: 0.001;
14202
+ /** Relative tolerance on `m[0]/m[5]` vs the manifest's `height/width`. */
14203
+ readonly aspectRelativeTolerance: 0.001;
14204
+ readonly minNear: 0.0001;
14205
+ readonly maxFar: 10000000;
14206
+ };
14207
+ interface Scene3DCameraSample {
14208
+ position: Vec3;
14209
+ /** `[x, y, z, w]` — that order, normalized. */
14210
+ quaternion: [number, number, number, number];
14211
+ /** Exactly 16 entries, COLUMN-MAJOR (Three.js `Matrix4.elements` order). */
14212
+ projectionMatrix: number[];
14213
+ near: number;
14214
+ far: number;
14215
+ /** Authoring intent, for inspection and validation reporting. A renderer must
14216
+ * never feed this back through `lookAt()`. */
14217
+ target?: Vec3;
14218
+ /** Metadata only; the projection matrix wins. */
14219
+ focalLengthMm?: number;
14220
+ }
14221
+ interface Scene3DCameraTrackV1 {
14222
+ format: typeof SCENE3D_CAMERA_TRACK_FORMAT;
14223
+ version: typeof SCENE3D_CAMERA_TRACK_VERSION;
14224
+ /** Always 0: public frames are zero-based, and the exporter has already
14225
+ * subtracted the authoring package's start frame. */
14226
+ frameStart: 0;
14227
+ frameCount: number;
14228
+ fps: number;
14229
+ samples: Scene3DCameraSample[];
14230
+ }
14231
+ declare const scene3DCameraSampleSchema: z.ZodObject<{
14232
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
14233
+ quaternion: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
14234
+ projectionMatrix: z.ZodArray<z.ZodNumber>;
14235
+ near: z.ZodNumber;
14236
+ far: z.ZodNumber;
14237
+ target: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14238
+ focalLengthMm: z.ZodOptional<z.ZodNumber>;
14239
+ }, z.core.$strict>;
14240
+ /** Structure only; `scene3DCameraTrackIssues` carries the numeric rules. */
14241
+ declare const scene3DCameraTrackObjectSchema: z.ZodObject<{
14242
+ format: z.ZodLiteral<"scene3d-camera-track">;
14243
+ version: z.ZodLiteral<1>;
14244
+ frameStart: z.ZodLiteral<0>;
14245
+ frameCount: z.ZodNumber;
14246
+ fps: z.ZodNumber;
14247
+ samples: z.ZodArray<z.ZodObject<{
14248
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
14249
+ quaternion: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
14250
+ projectionMatrix: z.ZodArray<z.ZodNumber>;
14251
+ near: z.ZodNumber;
14252
+ far: z.ZodNumber;
14253
+ target: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14254
+ focalLengthMm: z.ZodOptional<z.ZodNumber>;
14255
+ }, z.core.$strict>>;
14256
+ }, z.core.$strict>;
14257
+ type Issue = Scene3DSemanticIssue;
14258
+ /**
14259
+ * Is this a real PERSPECTIVE projection, and does it agree with the declared
14260
+ * near/far?
14261
+ *
14262
+ * Column-major layout produced by every Three.js/glTF perspective camera:
14263
+ *
14264
+ * ```text
14265
+ * m0 0 m8 0
14266
+ * 0 m5 m9 0
14267
+ * 0 0 m10 m14
14268
+ * 0 0 -1 0
14269
+ * ```
14270
+ *
14271
+ * `m8`/`m9` carry lens shift and are free. Everything else is pinned. Inverting
14272
+ * the two depth terms recovers `near = m14 / (m10 - 1)` and
14273
+ * `far = m14 / (m10 + 1)`, which is how a matrix that quietly disagrees with its
14274
+ * own declared clip planes gets caught.
14275
+ *
14276
+ * Exported because the builder validates its export with the same function the
14277
+ * renderer admits it with.
14278
+ */
14279
+ declare function scene3DProjectionIssues(matrix: readonly number[], near: number, far: number, path: (string | number)[]): Issue[];
14280
+ /**
14281
+ * The numeric rules the schema cannot express: exact sample count, normalized
14282
+ * quaternions, and a real perspective projection on every frame.
14283
+ *
14284
+ * Split out of the schema (as v1 does) so a caller holding a parsed track can
14285
+ * re-check it, and so the per-sample walk stays one readable loop over up to
14286
+ * 3,600 samples.
14287
+ */
14288
+ declare function scene3DCameraTrackIssues(track: Scene3DCameraTrackV1): Issue[];
14289
+ /** THE camera-track validator: structure, then the numeric rules. */
14290
+ declare const scene3DCameraTrackSchema: z.ZodObject<{
14291
+ format: z.ZodLiteral<"scene3d-camera-track">;
14292
+ version: z.ZodLiteral<1>;
14293
+ frameStart: z.ZodLiteral<0>;
14294
+ frameCount: z.ZodNumber;
14295
+ fps: z.ZodNumber;
14296
+ samples: z.ZodArray<z.ZodObject<{
14297
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
14298
+ quaternion: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
14299
+ projectionMatrix: z.ZodArray<z.ZodNumber>;
14300
+ near: z.ZodNumber;
14301
+ far: z.ZodNumber;
14302
+ target: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14303
+ focalLengthMm: z.ZodOptional<z.ZodNumber>;
14304
+ }, z.core.$strict>>;
14305
+ }, z.core.$strict>;
14306
+ declare function isScene3DCameraTrack(value: unknown): value is Scene3DCameraTrackV1;
14307
+ /**
14308
+ * Track ↔ manifest agreement. A track that is valid on its own can still be the
14309
+ * WRONG track for this scene: a different fps, a different length, or a
14310
+ * projection baked for another aspect ratio. Each of those silently reframes or
14311
+ * retimes every shot, so each is an error here rather than a render-time
14312
+ * surprise.
14313
+ */
14314
+ declare function scene3DCameraTrackPlanIssues(track: Scene3DCameraTrackV1, plan: Pick<Scene3DPlanV2, "fps" | "durationInFrames" | "width" | "height">): Issue[];
14315
+ /**
14316
+ * The sample for an integer frame. `undefined` outside `[0, frameCount)` — a
14317
+ * caller must fail rather than clamp, because a clamped frame is a wrong frame
14318
+ * that looks plausible.
14319
+ */
14320
+ declare function scene3DSampleForFrame(track: Scene3DCameraTrackV1, frame: number): Scene3DCameraSample | undefined;
14321
+ /**
14322
+ * Size-gate, then parse, then validate. This is the admission path for a
14323
+ * downloaded camera track: an 80 MiB "8 MiB" track is refused before
14324
+ * `JSON.parse` gets a chance to allocate it.
14325
+ */
14326
+ declare function parseScene3DCameraTrackJson(text: string): Scene3DParseResult<Scene3DCameraTrackV1>;
14327
+
14328
+ /**
14329
+ * The `pro-3d-render` ("3D Render Pro") WIRE CONTRACT.
14330
+ *
14331
+ * ONE durable operation, three ways in. A `source` says WHERE the scene comes
14332
+ * from — a new brief, an existing revision, or a completed desktop export —
14333
+ * and the settled job carries BOTH halves of the result: the exact composition
14334
+ * (`scenePlan`) and the standard video field every downstream consumer already
14335
+ * reads (`videoUrl`).
14336
+ *
14337
+ * The `source` is a strict discriminated union rather than a bag of optional
14338
+ * fields, and that is the load-bearing decision here. "Prompt present" and
14339
+ * "revisionId present" are not two settings on one request: they select
14340
+ * different pipelines with different costs. A flat shape lets a caller send
14341
+ * both, or neither, and pushes the "what did they actually mean" decision into
14342
+ * whichever surface reads it last — which is how an existing scene silently
14343
+ * becomes a paid re-authoring run.
14344
+ *
14345
+ * The same union is what makes RENDER-ONLY expressible: `{kind:'scene'}` with
14346
+ * NO `editPrompt` means "export this revision", and its absence must survive
14347
+ * every hop unchanged. Nothing may helpfully substitute an empty string or
14348
+ * copy the node's brief into it — that converts a free export into an
14349
+ * authoring run the user never asked for.
14350
+ *
14351
+ * What lives here is only what a client needs to CALL the operation, QUOTE it
14352
+ * and READ its result. How the scene is planned, compiled, built, priced or
14353
+ * authorized is not part of this contract and is not described here.
14354
+ *
14355
+ * Deliberately NOT here:
14356
+ * - a model chooser. The planner is fixed and server-owned.
14357
+ * - a credit number. The cost is resolved server-side and returned by the
14358
+ * quote endpoint; a constant in a published package would be a wrong answer
14359
+ * shipped to every consumer (see `PRO3D_RENDER_CREDIT_ID`).
14360
+ */
14361
+
14362
+ /** Canvas/API/MCP node type. */
14363
+ declare const PRO3D_RENDER_NODE_TYPE = "pro-3d-render";
14364
+ /** Display name. One string, so every surface spells it the same way. */
14365
+ declare const PRO3D_RENDER_LABEL = "3D Render Pro";
14366
+ /**
14367
+ * The credit identifier the operation settles under.
14368
+ *
14369
+ * An IDENTIFIER, not a price: the number is operator/deployment configuration
14370
+ * (a `model_pricing` row), and the per-run ceiling comes from a quote. There is
14371
+ * deliberately no fallback constant — a flat default would underprice an
14372
+ * operation that plans, builds and renders, and "cheap by accident" is not a
14373
+ * failure mode you notice from the outside.
14374
+ */
14375
+ declare const PRO3D_RENDER_CREDIT_ID = "pro-3d-render";
14376
+ /**
14377
+ * Where the scene is built. `blender-local` is a paired desktop and is refused
14378
+ * unless the deployment both enables it and has an engine advertising it — an
14379
+ * unknown or unavailable engine is an error, never a downgrade to the cheaper
14380
+ * cloud path.
14381
+ */
14382
+ declare const PRO3D_RENDER_ENGINES: readonly ["blender-cloud", "blender-local"];
14383
+ type Pro3DRenderEngine = (typeof PRO3D_RENDER_ENGINES)[number];
14384
+ declare const PRO3D_RENDER_DEFAULT_ENGINE: Pro3DRenderEngine;
14385
+ /**
14386
+ * Render quality profiles.
14387
+ *
14388
+ * One today. A surface must advertise only what the installed engine reports
14389
+ * (`capabilities().pro.qualityProfiles`) rather than this list — offering a
14390
+ * profile the engine cannot serve is a run that fails after the user chose it.
14391
+ */
14392
+ declare const PRO3D_RENDER_QUALITY_PROFILES: readonly ["standard"];
14393
+ type Pro3DRenderQuality = (typeof PRO3D_RENDER_QUALITY_PROFILES)[number];
14394
+ declare const PRO3D_RENDER_DEFAULT_QUALITY: Pro3DRenderQuality;
14395
+ /** Material/lighting treatment. Clay is the movement-reference default. */
14396
+ declare const PRO3D_RENDER_STYLES: readonly ["clay"];
14397
+ type Pro3DRenderStyle = (typeof PRO3D_RENDER_STYLES)[number];
14398
+ declare const PRO3D_RENDER_DEFAULT_STYLE: Pro3DRenderStyle;
14399
+ /**
14400
+ * The correction budget: how many repair passes the engine may spend after its
14401
+ * first attempt. Displayed to the user because each pass is paid work.
14402
+ */
14403
+ declare const PRO3D_RENDER_MIN_REPAIR_PASSES = 0;
14404
+ declare const PRO3D_RENDER_MAX_REPAIR_PASSES = 2;
14405
+ declare const PRO3D_RENDER_DEFAULT_REPAIR_PASSES = 2;
14406
+ /**
14407
+ * Aspect ratios the node authors at.
14408
+ *
14409
+ * `21:9` is not decoration: the acceptance fixture is a 30-second 21:9 scene,
14410
+ * so a set that omitted it could not express the case the feature is measured
14411
+ * against. Its canonical pixel pair is the contract's explicitly supported
14412
+ * 1680×720 (see `ASPECT_RATIO_DIMENSIONS`).
14413
+ */
14414
+ declare const PRO3D_RENDER_ASPECT_RATIOS: readonly ["16:9", "9:16", "1:1", "4:5", "21:9"];
14415
+ type Pro3DRenderAspectRatio = (typeof PRO3D_RENDER_ASPECT_RATIOS)[number];
14416
+ /** Same prompt ceiling the Basic authoring routes enforce. */
14417
+ declare const PRO3D_RENDER_PROMPT_MAX = 8000;
14418
+ /**
14419
+ * Request bounds shared by every ingress (HTTP route, orchestrator, MCP, SDK).
14420
+ *
14421
+ * Timing/reference limits reuse the Basic authoring limits verbatim rather
14422
+ * than declaring a second set: the two nodes describe the same kind of scene,
14423
+ * and two drifting ceilings is how one surface starts accepting what another
14424
+ * refuses.
14425
+ */
14426
+ declare const PRO3D_RENDER_LIMITS: {
14427
+ readonly promptMax: 8000;
14428
+ readonly editPromptMax: 8000;
14429
+ readonly minDurationSeconds: 1;
14430
+ readonly maxDurationSeconds: 60;
14431
+ readonly minFps: 15;
14432
+ readonly maxFps: 60;
14433
+ readonly maxReferences: 8;
14434
+ /** Opaque ids the caller echoes back (quote, export, connection). */
14435
+ readonly maxIdLength: 200;
14436
+ /** `Idempotency-Key` bounds — the platform's floor, with a ceiling so an
14437
+ * unbounded header can never reach a lookup or a database column. */
14438
+ readonly minIdempotencyKeyLength: 8;
14439
+ readonly maxIdempotencyKeyLength: 255;
14440
+ };
14441
+ declare const PRO3D_RENDER_SOURCE_KINDS: readonly ["prompt", "scene", "local-export"];
14442
+ type Pro3DRenderSourceKind = (typeof PRO3D_RENDER_SOURCE_KINDS)[number];
14443
+ /** A new scene, authored from a brief plus optional image/video references. */
14444
+ interface Pro3DRenderPromptSource {
14445
+ kind: "prompt";
14446
+ prompt: string;
14447
+ references?: readonly Scene3DReference[];
14448
+ }
14449
+ /**
14450
+ * An existing immutable revision.
14451
+ *
14452
+ * `editPrompt` ABSENT is the render-only path — export this revision, spend no
14453
+ * authoring or build credits. Its absence is meaningful and must be preserved
14454
+ * verbatim; an empty string is not the same request.
14455
+ *
14456
+ * Retained revisions are authorized through their current scene permissions.
14457
+ * `sourceJobId` locates Basic scenes stored only in job history; it is required
14458
+ * for that source, but optional for retained scenes (including manual edits).
14459
+ */
14460
+ interface Pro3DRenderSceneSource {
14461
+ kind: "scene";
14462
+ revisionId: string;
14463
+ sourceJobId?: string;
14464
+ editPrompt?: string;
14465
+ }
14466
+ /** A completed export from a paired desktop Blender. */
14467
+ interface Pro3DRenderLocalExportSource {
14468
+ kind: "local-export";
14469
+ exportId: string;
14470
+ connectionId: string;
14471
+ }
14472
+ type Pro3DRenderSource = Pro3DRenderPromptSource | Pro3DRenderSceneSource | Pro3DRenderLocalExportSource;
14473
+ /** True when this source exports an existing revision without re-authoring it. */
14474
+ declare function isPro3DRenderRenderOnly(source: Pro3DRenderSource): boolean;
14475
+ /**
14476
+ * Which scene-schema version a source PRODUCES, or `null` when only the server
14477
+ * can know.
14478
+ *
14479
+ * A `prompt` or `local-export` source always mints a fresh v2 manifest, so a
14480
+ * client that cannot read v2 is refusable for free, before any work. A `scene`
14481
+ * source inherits whatever version the named revision already is — the host
14482
+ * does not resolve revisions, so demanding v2 there would refuse a perfectly
14483
+ * renderable retained v1 scene.
14484
+ */
14485
+ declare function pro3DRenderProducedSchemaVersion(source: Pro3DRenderSource): number | null;
14486
+ /** One priced component of a quote. Display copy, not economics. */
14487
+ interface Pro3DRenderQuoteLine {
14488
+ code: string;
14489
+ label: string;
14490
+ credits: number;
14491
+ }
14492
+ /**
14493
+ * The paired quote's answer.
14494
+ *
14495
+ * `maxCredits` is a CEILING, not a charge: quoting reserves nothing and spends
14496
+ * nothing. `normalizedInputHash` is what run admission re-checks, so a body
14497
+ * edited between quote and run is refused rather than executed at a price it
14498
+ * was never quoted for.
14499
+ */
14500
+ interface Pro3DRenderQuote {
14501
+ quoteId: string;
14502
+ /** ISO-8601. After this the quote is stale and run answers "quote again". */
14503
+ expiresAt: string;
14504
+ maxCredits: number;
14505
+ breakdown: Pro3DRenderQuoteLine[];
14506
+ pricingVersion: string;
14507
+ capabilitiesVersion: string;
14508
+ normalizedInputHash: string;
14509
+ }
14510
+ declare const pro3DRenderQuoteSchema: z.ZodObject<{
14511
+ quoteId: z.ZodString;
14512
+ expiresAt: z.ZodString;
14513
+ maxCredits: z.ZodNumber;
14514
+ breakdown: z.ZodArray<z.ZodObject<{
14515
+ code: z.ZodString;
14516
+ label: z.ZodString;
14517
+ credits: z.ZodNumber;
14518
+ }, z.core.$loose>>;
14519
+ pricingVersion: z.ZodString;
14520
+ capabilitiesVersion: z.ZodString;
14521
+ normalizedInputHash: z.ZodString;
14522
+ }, z.core.$loose>;
14523
+ declare function isPro3DRenderQuote(value: unknown): value is Pro3DRenderQuote;
14524
+ /**
14525
+ * What this deployment can actually serve.
14526
+ *
14527
+ * Every surface that offers a control reads it from here rather than from the
14528
+ * vocabularies above: the constants say what the CONTRACT can express, this
14529
+ * says what the INSTALLED engine will accept.
14530
+ */
14531
+ interface Pro3DRenderCapabilities {
14532
+ available: boolean;
14533
+ engines: Pro3DRenderEngine[];
14534
+ qualityProfiles: Pro3DRenderQuality[];
14535
+ styles: Pro3DRenderStyle[];
14536
+ aspectRatios: Pro3DRenderAspectRatio[];
14537
+ maxRepairPasses: number;
14538
+ }
14539
+ interface Pro3DRenderValidationWarning {
14540
+ code: string;
14541
+ message: string;
14542
+ shotId?: string;
14543
+ }
14544
+ interface Pro3DRenderResultMetadata {
14545
+ width: number;
14546
+ height: number;
14547
+ fps: number;
14548
+ frames: number;
14549
+ duration: number;
14550
+ }
14551
+ /**
14552
+ * The completed job's `output_data`.
14553
+ *
14554
+ * `videoUrl` is the platform's existing resolved-video field (the contract's
14555
+ * `resultUrl` mapped onto the envelope this platform already has), so the node
14556
+ * connects to every existing video consumer without a second video result type
14557
+ * producer validators cannot parse. `scenePlan` + `sceneRevisionId` are the
14558
+ * exact revision that video was rendered from, so a later render-only re-run
14559
+ * costs no authoring.
14560
+ *
14561
+ * Everything else is what the spec requires a caller to be able to act on: the
14562
+ * poster to show before playback, the validation report to read warnings from,
14563
+ * the renderer/metadata to check the export against a downstream model's
14564
+ * limits, and the optional source artifact to offer as a download.
14565
+ */
14566
+ interface Pro3DRenderJobOutput {
14567
+ videoUrl: string;
14568
+ scenePlan: Scene3DPlan;
14569
+ sceneRevisionId: string;
14570
+ posterAssetId: string;
14571
+ /** Present when an editable native source was retained for this revision. */
14572
+ sourceArtifactId?: string;
14573
+ validation: {
14574
+ status: "passed";
14575
+ reportAssetId: string;
14576
+ warnings: Pro3DRenderValidationWarning[];
14577
+ };
14578
+ renderer: string;
14579
+ metadata: Pro3DRenderResultMetadata;
14580
+ /** Short, user-safe note about what this revision contains. Never diagnostics. */
14581
+ changeSummary?: string;
14582
+ }
14583
+ /**
14584
+ * Reader-side schema.
14585
+ *
14586
+ * Passthrough on purpose: a job row may carry additive metadata a client of
14587
+ * this version has never heard of, and refusing the whole result over an
14588
+ * unknown key would turn an additive server change into a client outage.
14589
+ *
14590
+ * The required fields are required because the contract makes them so — this
14591
+ * is what a COMPLETE result looks like. Nothing in the platform fabricates
14592
+ * them to satisfy the schema; a runtime that has not produced them yet simply
14593
+ * does not parse as complete, which is the honest answer.
14594
+ */
14595
+ declare const pro3DRenderJobOutputSchema: z.ZodObject<{
14596
+ videoUrl: z.ZodString;
14597
+ scenePlan: z.ZodDiscriminatedUnion<[z.ZodObject<{
14598
+ planType: z.ZodLiteral<"3d-scene">;
14599
+ schemaVersion: z.ZodLiteral<1>;
14600
+ revisionId: z.ZodUUID;
14601
+ parentRevisionId: z.ZodOptional<z.ZodUUID>;
14602
+ width: z.ZodNumber;
14603
+ height: z.ZodNumber;
14604
+ fps: z.ZodNumber;
14605
+ durationInFrames: z.ZodNumber;
14606
+ backgroundColor: z.ZodString;
14607
+ camera: z.ZodObject<{
14608
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
14609
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
14610
+ focalLengthMm: z.ZodNumber;
14611
+ sensorWidthMm: z.ZodDefault<z.ZodNumber>;
14612
+ keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
14613
+ frame: z.ZodNumber;
14614
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14615
+ target: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14616
+ focalLengthMm: z.ZodOptional<z.ZodNumber>;
14617
+ easing: z.ZodOptional<z.ZodEnum<{
14618
+ linear: "linear";
14619
+ easeInOut: "easeInOut";
14620
+ }>>;
14621
+ }, z.core.$strict>>>;
14622
+ }, z.core.$strict>;
14623
+ objects: z.ZodArray<z.ZodObject<{
14624
+ id: z.ZodString;
14625
+ name: z.ZodString;
14626
+ primitive: z.ZodEnum<{
14627
+ group: "group";
14628
+ box: "box";
14629
+ sphere: "sphere";
14630
+ cylinder: "cylinder";
14631
+ cone: "cone";
14632
+ plane: "plane";
14633
+ capsule: "capsule";
14634
+ }>;
14635
+ parentId: z.ZodOptional<z.ZodString>;
14636
+ dimensions: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
14637
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
14638
+ rotation: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
14639
+ scale: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
14640
+ color: z.ZodString;
14641
+ keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
14642
+ frame: z.ZodNumber;
14643
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14644
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14645
+ scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14646
+ easing: z.ZodOptional<z.ZodEnum<{
14647
+ linear: "linear";
14648
+ easeInOut: "easeInOut";
14649
+ }>>;
14650
+ }, z.core.$strict>>>;
14651
+ }, z.core.$strict>>;
14652
+ lighting: z.ZodObject<{
14653
+ ambientIntensity: z.ZodNumber;
14654
+ keyIntensity: z.ZodNumber;
14655
+ keyPosition: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
14656
+ }, z.core.$strict>;
14657
+ references: z.ZodOptional<z.ZodArray<z.ZodObject<{
14658
+ id: z.ZodString;
14659
+ url: z.ZodString;
14660
+ kind: z.ZodEnum<{
14661
+ image: "image";
14662
+ video: "video";
14663
+ }>;
14664
+ role: z.ZodEnum<{
14665
+ motion: "motion";
14666
+ layout: "layout";
14667
+ appearance: "appearance";
14668
+ }>;
14669
+ objectId: z.ZodOptional<z.ZodString>;
14670
+ startSeconds: z.ZodOptional<z.ZodNumber>;
14671
+ endSeconds: z.ZodOptional<z.ZodNumber>;
14672
+ }, z.core.$strict>>>;
14673
+ }, z.core.$strict>, z.ZodObject<{
14674
+ planType: z.ZodLiteral<"3d-scene">;
14675
+ schemaVersion: z.ZodLiteral<2>;
14676
+ revisionId: z.ZodUUID;
14677
+ parentRevisionId: z.ZodOptional<z.ZodUUID>;
14678
+ width: z.ZodNumber;
14679
+ height: z.ZodNumber;
14680
+ fps: z.ZodNumber;
14681
+ durationInFrames: z.ZodNumber;
14682
+ units: z.ZodLiteral<"meters">;
14683
+ upAxis: z.ZodLiteral<"Y">;
14684
+ handedness: z.ZodLiteral<"right">;
14685
+ objects: z.ZodArray<z.ZodObject<{
14686
+ id: z.ZodString;
14687
+ name: z.ZodString;
14688
+ parentId: z.ZodOptional<z.ZodString>;
14689
+ role: z.ZodOptional<z.ZodEnum<{
14690
+ other: "other";
14691
+ person: "person";
14692
+ vehicle: "vehicle";
14693
+ prop: "prop";
14694
+ environment: "environment";
14695
+ }>>;
14696
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14697
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14698
+ scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14699
+ identityColor: z.ZodOptional<z.ZodString>;
14700
+ anchors: z.ZodOptional<z.ZodArray<z.ZodObject<{
14701
+ name: z.ZodString;
14702
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
14703
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14704
+ }, z.core.$strict>>>;
14705
+ capabilities: z.ZodOptional<z.ZodArray<z.ZodEnum<{
14706
+ transform: "transform";
14707
+ color: "color";
14708
+ visibility: "visibility";
14709
+ }>>>;
14710
+ locks: z.ZodOptional<z.ZodArray<z.ZodEnum<{
14711
+ transform: "transform";
14712
+ color: "color";
14713
+ visibility: "visibility";
14714
+ }>>>;
14715
+ materialBindings: z.ZodOptional<z.ZodArray<z.ZodObject<{
14716
+ role: z.ZodString;
14717
+ materialName: z.ZodString;
14718
+ color: z.ZodOptional<z.ZodString>;
14719
+ roughness: z.ZodOptional<z.ZodNumber>;
14720
+ }, z.core.$strict>>>;
14721
+ visual: z.ZodDiscriminatedUnion<[z.ZodObject<{
14722
+ kind: z.ZodLiteral<"group">;
14723
+ }, z.core.$strict>, z.ZodObject<{
14724
+ kind: z.ZodLiteral<"primitive">;
14725
+ primitive: z.ZodEnum<{
14726
+ box: "box";
14727
+ sphere: "sphere";
14728
+ cylinder: "cylinder";
14729
+ cone: "cone";
14730
+ plane: "plane";
14731
+ capsule: "capsule";
14732
+ }>;
14733
+ dimensions: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
14734
+ color: z.ZodString;
14735
+ }, z.core.$strict>, z.ZodObject<{
14736
+ kind: z.ZodLiteral<"asset">;
14737
+ assetId: z.ZodString;
14738
+ rootNodeId: z.ZodString;
14739
+ animation: z.ZodOptional<z.ZodObject<{
14740
+ clipName: z.ZodString;
14741
+ startFrame: z.ZodNumber;
14742
+ endFrameExclusive: z.ZodNumber;
14743
+ loop: z.ZodOptional<z.ZodBoolean>;
14744
+ }, z.core.$strict>>;
14745
+ }, z.core.$strict>], "kind">;
14746
+ }, z.core.$strict>>;
14747
+ assets: z.ZodArray<z.ZodObject<{
14748
+ assetId: z.ZodString;
14749
+ kind: z.ZodEnum<{
14750
+ glb: "glb";
14751
+ "camera-track-json": "camera-track-json";
14752
+ poster: "poster";
14753
+ "validation-report": "validation-report";
14754
+ "blend-source": "blend-source";
14755
+ }>;
14756
+ role: z.ZodEnum<{
14757
+ source: "source";
14758
+ poster: "poster";
14759
+ "validation-report": "validation-report";
14760
+ "scene-geometry": "scene-geometry";
14761
+ "entity-geometry": "entity-geometry";
14762
+ "camera-track": "camera-track";
14763
+ }>;
14764
+ byteLength: z.ZodNumber;
14765
+ sha256: z.ZodString;
14766
+ originRevisionId: z.ZodOptional<z.ZodUUID>;
14767
+ }, z.core.$strict>>;
14768
+ cameraTrackAssetId: z.ZodString;
14769
+ shots: z.ZodArray<z.ZodObject<{
14770
+ id: z.ZodString;
14771
+ startFrame: z.ZodNumber;
14772
+ endFrameExclusive: z.ZodNumber;
14773
+ label: z.ZodOptional<z.ZodString>;
14774
+ subjectEntityIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
14775
+ foregroundEntityIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
14776
+ }, z.core.$strict>>;
14777
+ lighting: z.ZodObject<{
14778
+ preset: z.ZodEnum<{
14779
+ "clay-studio-v1": "clay-studio-v1";
14780
+ }>;
14781
+ ambientIntensity: z.ZodNumber;
14782
+ keyIntensity: z.ZodNumber;
14783
+ keyPosition: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
14784
+ }, z.core.$strict>;
14785
+ backgroundColor: z.ZodString;
14786
+ references: z.ZodOptional<z.ZodArray<z.ZodObject<{
14787
+ id: z.ZodString;
14788
+ url: z.ZodString;
14789
+ kind: z.ZodEnum<{
14790
+ image: "image";
14791
+ video: "video";
14792
+ }>;
14793
+ role: z.ZodEnum<{
14794
+ motion: "motion";
14795
+ layout: "layout";
14796
+ appearance: "appearance";
14797
+ }>;
14798
+ objectId: z.ZodOptional<z.ZodString>;
14799
+ startSeconds: z.ZodOptional<z.ZodNumber>;
14800
+ endSeconds: z.ZodOptional<z.ZodNumber>;
14801
+ }, z.core.$strict>>>;
14802
+ overrides: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
14803
+ kind: z.ZodLiteral<"entity-transform">;
14804
+ entityId: z.ZodString;
14805
+ space: z.ZodEnum<{
14806
+ local: "local";
14807
+ world: "world";
14808
+ }>;
14809
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14810
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14811
+ scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14812
+ id: z.ZodString;
14813
+ sourceRevisionId: z.ZodUUID;
14814
+ sourceContentHash: z.ZodString;
14815
+ operationVersion: z.ZodNumber;
14816
+ }, z.core.$strict>, z.ZodObject<{
14817
+ kind: z.ZodLiteral<"entity-color">;
14818
+ entityId: z.ZodString;
14819
+ materialRole: z.ZodString;
14820
+ color: z.ZodString;
14821
+ id: z.ZodString;
14822
+ sourceRevisionId: z.ZodUUID;
14823
+ sourceContentHash: z.ZodString;
14824
+ operationVersion: z.ZodNumber;
14825
+ }, z.core.$strict>, z.ZodObject<{
14826
+ kind: z.ZodLiteral<"entity-visibility">;
14827
+ entityId: z.ZodString;
14828
+ visible: z.ZodBoolean;
14829
+ id: z.ZodString;
14830
+ sourceRevisionId: z.ZodUUID;
14831
+ sourceContentHash: z.ZodString;
14832
+ operationVersion: z.ZodNumber;
14833
+ }, z.core.$strict>, z.ZodObject<{
14834
+ kind: z.ZodLiteral<"camera-shot-offset">;
14835
+ shotId: z.ZodString;
14836
+ positionOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14837
+ targetOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14838
+ id: z.ZodString;
14839
+ sourceRevisionId: z.ZodUUID;
14840
+ sourceContentHash: z.ZodString;
14841
+ operationVersion: z.ZodNumber;
14842
+ }, z.core.$strict>], "kind">>>;
14843
+ provenance: z.ZodObject<{
14844
+ engine: z.ZodString;
14845
+ engineVersion: z.ZodString;
14846
+ recipeVersion: z.ZodString;
14847
+ compilerVersion: z.ZodString;
14848
+ exporterVersion: z.ZodString;
14849
+ rendererVersion: z.ZodString;
14850
+ sourceRevisionId: z.ZodOptional<z.ZodUUID>;
14851
+ sourceArtifactId: z.ZodOptional<z.ZodString>;
14852
+ contentHash: z.ZodString;
14853
+ }, z.core.$strict>;
14854
+ }, z.core.$strict>], "schemaVersion">;
14855
+ sceneRevisionId: z.ZodString;
14856
+ posterAssetId: z.ZodString;
14857
+ sourceArtifactId: z.ZodOptional<z.ZodString>;
14858
+ validation: z.ZodObject<{
14859
+ status: z.ZodLiteral<"passed">;
14860
+ reportAssetId: z.ZodString;
14861
+ warnings: z.ZodArray<z.ZodObject<{
14862
+ code: z.ZodString;
14863
+ message: z.ZodString;
14864
+ shotId: z.ZodOptional<z.ZodString>;
14865
+ }, z.core.$loose>>;
14866
+ }, z.core.$loose>;
14867
+ renderer: z.ZodString;
14868
+ metadata: z.ZodObject<{
14869
+ width: z.ZodNumber;
14870
+ height: z.ZodNumber;
14871
+ fps: z.ZodNumber;
14872
+ frames: z.ZodNumber;
14873
+ duration: z.ZodNumber;
14874
+ }, z.core.$loose>;
14875
+ changeSummary: z.ZodOptional<z.ZodString>;
14876
+ }, z.core.$loose>;
14877
+ declare function isPro3DRenderJobOutput(value: unknown): value is Pro3DRenderJobOutput;
14878
+ /**
14879
+ * The two fields every EXECUTION SURFACE must be able to resolve, whatever
14880
+ * else a runtime does or does not attach yet.
14881
+ *
14882
+ * Separate from the full reader above on purpose: canvas wiring, the DAG
14883
+ * extractors and the render-only re-run need "is there a video and a scene
14884
+ * here", and gating those on complete metadata would blank a node over a
14885
+ * missing poster id.
14886
+ */
14887
+ declare const pro3DRenderCoreOutputSchema: z.ZodObject<{
14888
+ videoUrl: z.ZodString;
14889
+ scenePlan: z.ZodDiscriminatedUnion<[z.ZodObject<{
14890
+ planType: z.ZodLiteral<"3d-scene">;
14891
+ schemaVersion: z.ZodLiteral<1>;
14892
+ revisionId: z.ZodUUID;
14893
+ parentRevisionId: z.ZodOptional<z.ZodUUID>;
14894
+ width: z.ZodNumber;
14895
+ height: z.ZodNumber;
14896
+ fps: z.ZodNumber;
14897
+ durationInFrames: z.ZodNumber;
14898
+ backgroundColor: z.ZodString;
14899
+ camera: z.ZodObject<{
14900
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
14901
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
14902
+ focalLengthMm: z.ZodNumber;
14903
+ sensorWidthMm: z.ZodDefault<z.ZodNumber>;
14904
+ keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
14905
+ frame: z.ZodNumber;
14906
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14907
+ target: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14908
+ focalLengthMm: z.ZodOptional<z.ZodNumber>;
14909
+ easing: z.ZodOptional<z.ZodEnum<{
14910
+ linear: "linear";
14911
+ easeInOut: "easeInOut";
14912
+ }>>;
14913
+ }, z.core.$strict>>>;
14914
+ }, z.core.$strict>;
14915
+ objects: z.ZodArray<z.ZodObject<{
14916
+ id: z.ZodString;
14917
+ name: z.ZodString;
14918
+ primitive: z.ZodEnum<{
14919
+ group: "group";
14920
+ box: "box";
14921
+ sphere: "sphere";
14922
+ cylinder: "cylinder";
14923
+ cone: "cone";
14924
+ plane: "plane";
14925
+ capsule: "capsule";
14926
+ }>;
14927
+ parentId: z.ZodOptional<z.ZodString>;
14928
+ dimensions: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
14929
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
14930
+ rotation: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
14931
+ scale: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
14932
+ color: z.ZodString;
14933
+ keyframes: z.ZodOptional<z.ZodArray<z.ZodObject<{
14934
+ frame: z.ZodNumber;
14935
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14936
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14937
+ scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14938
+ easing: z.ZodOptional<z.ZodEnum<{
14939
+ linear: "linear";
14940
+ easeInOut: "easeInOut";
14941
+ }>>;
14942
+ }, z.core.$strict>>>;
14943
+ }, z.core.$strict>>;
14944
+ lighting: z.ZodObject<{
14945
+ ambientIntensity: z.ZodNumber;
14946
+ keyIntensity: z.ZodNumber;
14947
+ keyPosition: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
14948
+ }, z.core.$strict>;
14949
+ references: z.ZodOptional<z.ZodArray<z.ZodObject<{
14950
+ id: z.ZodString;
14951
+ url: z.ZodString;
14952
+ kind: z.ZodEnum<{
14953
+ image: "image";
14954
+ video: "video";
14955
+ }>;
14956
+ role: z.ZodEnum<{
14957
+ motion: "motion";
14958
+ layout: "layout";
14959
+ appearance: "appearance";
14960
+ }>;
14961
+ objectId: z.ZodOptional<z.ZodString>;
14962
+ startSeconds: z.ZodOptional<z.ZodNumber>;
14963
+ endSeconds: z.ZodOptional<z.ZodNumber>;
14964
+ }, z.core.$strict>>>;
14965
+ }, z.core.$strict>, z.ZodObject<{
14966
+ planType: z.ZodLiteral<"3d-scene">;
14967
+ schemaVersion: z.ZodLiteral<2>;
14968
+ revisionId: z.ZodUUID;
14969
+ parentRevisionId: z.ZodOptional<z.ZodUUID>;
14970
+ width: z.ZodNumber;
14971
+ height: z.ZodNumber;
14972
+ fps: z.ZodNumber;
14973
+ durationInFrames: z.ZodNumber;
14974
+ units: z.ZodLiteral<"meters">;
14975
+ upAxis: z.ZodLiteral<"Y">;
14976
+ handedness: z.ZodLiteral<"right">;
14977
+ objects: z.ZodArray<z.ZodObject<{
14978
+ id: z.ZodString;
14979
+ name: z.ZodString;
14980
+ parentId: z.ZodOptional<z.ZodString>;
14981
+ role: z.ZodOptional<z.ZodEnum<{
14982
+ other: "other";
14983
+ person: "person";
14984
+ vehicle: "vehicle";
14985
+ prop: "prop";
14986
+ environment: "environment";
14987
+ }>>;
14988
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14989
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14990
+ scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14991
+ identityColor: z.ZodOptional<z.ZodString>;
14992
+ anchors: z.ZodOptional<z.ZodArray<z.ZodObject<{
14993
+ name: z.ZodString;
14994
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
14995
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14996
+ }, z.core.$strict>>>;
14997
+ capabilities: z.ZodOptional<z.ZodArray<z.ZodEnum<{
14998
+ transform: "transform";
14999
+ color: "color";
15000
+ visibility: "visibility";
15001
+ }>>>;
15002
+ locks: z.ZodOptional<z.ZodArray<z.ZodEnum<{
15003
+ transform: "transform";
15004
+ color: "color";
15005
+ visibility: "visibility";
15006
+ }>>>;
15007
+ materialBindings: z.ZodOptional<z.ZodArray<z.ZodObject<{
15008
+ role: z.ZodString;
15009
+ materialName: z.ZodString;
15010
+ color: z.ZodOptional<z.ZodString>;
15011
+ roughness: z.ZodOptional<z.ZodNumber>;
15012
+ }, z.core.$strict>>>;
15013
+ visual: z.ZodDiscriminatedUnion<[z.ZodObject<{
15014
+ kind: z.ZodLiteral<"group">;
15015
+ }, z.core.$strict>, z.ZodObject<{
15016
+ kind: z.ZodLiteral<"primitive">;
15017
+ primitive: z.ZodEnum<{
15018
+ box: "box";
15019
+ sphere: "sphere";
15020
+ cylinder: "cylinder";
15021
+ cone: "cone";
15022
+ plane: "plane";
15023
+ capsule: "capsule";
15024
+ }>;
15025
+ dimensions: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
15026
+ color: z.ZodString;
15027
+ }, z.core.$strict>, z.ZodObject<{
15028
+ kind: z.ZodLiteral<"asset">;
15029
+ assetId: z.ZodString;
15030
+ rootNodeId: z.ZodString;
15031
+ animation: z.ZodOptional<z.ZodObject<{
15032
+ clipName: z.ZodString;
15033
+ startFrame: z.ZodNumber;
15034
+ endFrameExclusive: z.ZodNumber;
15035
+ loop: z.ZodOptional<z.ZodBoolean>;
15036
+ }, z.core.$strict>>;
15037
+ }, z.core.$strict>], "kind">;
15038
+ }, z.core.$strict>>;
15039
+ assets: z.ZodArray<z.ZodObject<{
15040
+ assetId: z.ZodString;
15041
+ kind: z.ZodEnum<{
15042
+ glb: "glb";
15043
+ "camera-track-json": "camera-track-json";
15044
+ poster: "poster";
15045
+ "validation-report": "validation-report";
15046
+ "blend-source": "blend-source";
15047
+ }>;
15048
+ role: z.ZodEnum<{
15049
+ source: "source";
15050
+ poster: "poster";
15051
+ "validation-report": "validation-report";
15052
+ "scene-geometry": "scene-geometry";
15053
+ "entity-geometry": "entity-geometry";
15054
+ "camera-track": "camera-track";
15055
+ }>;
15056
+ byteLength: z.ZodNumber;
15057
+ sha256: z.ZodString;
15058
+ originRevisionId: z.ZodOptional<z.ZodUUID>;
15059
+ }, z.core.$strict>>;
15060
+ cameraTrackAssetId: z.ZodString;
15061
+ shots: z.ZodArray<z.ZodObject<{
15062
+ id: z.ZodString;
15063
+ startFrame: z.ZodNumber;
15064
+ endFrameExclusive: z.ZodNumber;
15065
+ label: z.ZodOptional<z.ZodString>;
15066
+ subjectEntityIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
15067
+ foregroundEntityIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
15068
+ }, z.core.$strict>>;
15069
+ lighting: z.ZodObject<{
15070
+ preset: z.ZodEnum<{
15071
+ "clay-studio-v1": "clay-studio-v1";
15072
+ }>;
15073
+ ambientIntensity: z.ZodNumber;
15074
+ keyIntensity: z.ZodNumber;
15075
+ keyPosition: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
15076
+ }, z.core.$strict>;
15077
+ backgroundColor: z.ZodString;
15078
+ references: z.ZodOptional<z.ZodArray<z.ZodObject<{
15079
+ id: z.ZodString;
15080
+ url: z.ZodString;
15081
+ kind: z.ZodEnum<{
15082
+ image: "image";
15083
+ video: "video";
15084
+ }>;
15085
+ role: z.ZodEnum<{
15086
+ motion: "motion";
15087
+ layout: "layout";
15088
+ appearance: "appearance";
15089
+ }>;
15090
+ objectId: z.ZodOptional<z.ZodString>;
15091
+ startSeconds: z.ZodOptional<z.ZodNumber>;
15092
+ endSeconds: z.ZodOptional<z.ZodNumber>;
15093
+ }, z.core.$strict>>>;
15094
+ overrides: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
15095
+ kind: z.ZodLiteral<"entity-transform">;
15096
+ entityId: z.ZodString;
15097
+ space: z.ZodEnum<{
15098
+ local: "local";
15099
+ world: "world";
15100
+ }>;
15101
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
15102
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
15103
+ scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
15104
+ id: z.ZodString;
15105
+ sourceRevisionId: z.ZodUUID;
15106
+ sourceContentHash: z.ZodString;
15107
+ operationVersion: z.ZodNumber;
15108
+ }, z.core.$strict>, z.ZodObject<{
15109
+ kind: z.ZodLiteral<"entity-color">;
15110
+ entityId: z.ZodString;
15111
+ materialRole: z.ZodString;
15112
+ color: z.ZodString;
15113
+ id: z.ZodString;
15114
+ sourceRevisionId: z.ZodUUID;
15115
+ sourceContentHash: z.ZodString;
15116
+ operationVersion: z.ZodNumber;
15117
+ }, z.core.$strict>, z.ZodObject<{
15118
+ kind: z.ZodLiteral<"entity-visibility">;
15119
+ entityId: z.ZodString;
15120
+ visible: z.ZodBoolean;
15121
+ id: z.ZodString;
15122
+ sourceRevisionId: z.ZodUUID;
15123
+ sourceContentHash: z.ZodString;
15124
+ operationVersion: z.ZodNumber;
15125
+ }, z.core.$strict>, z.ZodObject<{
15126
+ kind: z.ZodLiteral<"camera-shot-offset">;
15127
+ shotId: z.ZodString;
15128
+ positionOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
15129
+ targetOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
15130
+ id: z.ZodString;
15131
+ sourceRevisionId: z.ZodUUID;
15132
+ sourceContentHash: z.ZodString;
15133
+ operationVersion: z.ZodNumber;
15134
+ }, z.core.$strict>], "kind">>>;
15135
+ provenance: z.ZodObject<{
15136
+ engine: z.ZodString;
15137
+ engineVersion: z.ZodString;
15138
+ recipeVersion: z.ZodString;
15139
+ compilerVersion: z.ZodString;
15140
+ exporterVersion: z.ZodString;
15141
+ rendererVersion: z.ZodString;
15142
+ sourceRevisionId: z.ZodOptional<z.ZodUUID>;
15143
+ sourceArtifactId: z.ZodOptional<z.ZodString>;
15144
+ contentHash: z.ZodString;
15145
+ }, z.core.$strict>;
15146
+ }, z.core.$strict>], "schemaVersion">;
15147
+ }, z.core.$loose>;
15148
+ /** What a canvas node / DAG builder holds before it can name a source. */
15149
+ interface Pro3DRenderSourceInput {
15150
+ /** `"scene"` selects the existing-revision path; anything else is a brief. */
15151
+ sourceMode?: string;
15152
+ /** The brief, already resolved and affix-applied by the caller. */
15153
+ prompt?: string;
15154
+ references?: readonly Scene3DReference[];
15155
+ /** The revision to export or edit, and the run that produced it. */
15156
+ revisionId?: string;
15157
+ sourceJobId?: string;
15158
+ /** Absent/blank keeps the render-only path. */
15159
+ editPrompt?: string;
15160
+ }
15161
+ type Pro3DRenderSourceResult = {
15162
+ ok: true;
15163
+ source: Pro3DRenderSource;
15164
+ } | {
15165
+ ok: false;
15166
+ message: string;
15167
+ };
15168
+ /**
15169
+ * Turn node/DAG state into the wire `source`.
15170
+ *
15171
+ * Shared by BOTH execution engines because the alternative — one copy in the
15172
+ * browser executor and one in the orchestrator — is the drift that lets a
15173
+ * canvas run and a headless run of the same node mean different things. The
15174
+ * refusals are part of that: a scene source missing its correlation must fail
15175
+ * the same way on both.
15176
+ *
15177
+ * A blank `editPrompt` is treated as ABSENT, never as an empty instruction: a
15178
+ * user who cleared the box asked for a plain export, and forwarding `""` would
15179
+ * buy them an authoring pass.
15180
+ */
15181
+ declare function buildPro3DRenderSource(input: Pro3DRenderSourceInput): Pro3DRenderSourceResult;
15182
+ /**
15183
+ * Which timing fields a request may carry.
15184
+ *
15185
+ * A `scene` source already HAS timing, and the contract forbids silently
15186
+ * overriding it — so the node's own duration/fps/aspect are withheld unless
15187
+ * the user explicitly asked to re-time, in which case they are sent and the
15188
+ * engine decides whether the change is compatible. For a new scene the node's
15189
+ * settings simply are the request.
15190
+ *
15191
+ * Returning an object with the keys omitted (rather than set to `undefined`)
15192
+ * matters: these bodies are JSON-serialized, and an explicit `undefined` and a
15193
+ * missing key are the same on the wire only by luck of the serializer.
15194
+ */
15195
+ declare function pro3DRenderTimingOverrides(input: {
15196
+ source: Pro3DRenderSource;
15197
+ overrideSourceTiming?: boolean;
15198
+ durationSeconds?: number;
15199
+ fps?: number;
15200
+ aspectRatio?: string;
15201
+ }): {
15202
+ durationSeconds?: number;
15203
+ fps?: number;
15204
+ aspectRatio?: string;
15205
+ };
15206
+
15207
+ /**
15208
+ * The parts of `settings.studio` that must not leave the owner's account.
15209
+ *
15210
+ * A shared production is read by anyone with the link. Three things inside the
15211
+ * document are the OWNER'S working state and nobody else's business:
15212
+ *
15213
+ * - `trash` — the recycle bin, which holds every shot, still and clip they
15214
+ * deleted, with prompts and urls intact. A share viewer receiving the bin is
15215
+ * the sharpest of the three: it hands out work the owner explicitly threw away.
15216
+ * - the in-flight job markers — `pendingClips` / `pendingStills` per shot, and
15217
+ * `pendingMusic` / `pendingDraft` on the document. A viewer cannot land any
15218
+ * of them and does not own them; all they carry across is job ids.
15219
+ * - `freecutDraftUrl` — an unsaved editor draft.
15220
+ *
15221
+ * They do NOT all live at the same level, and that is the whole reason this
15222
+ * file exists rather than one array: the writer puts `trash` and
15223
+ * `freecutDraftUrl` on `settings.studio` itself, and puts the per-shot markers
15224
+ * on the `settings.studio.shots[]` entry. A strip that walked only the top
15225
+ * level would pass its own test and still hand a share viewer every marker in
15226
+ * the production.
15227
+ *
15228
+ * It lives in `@nodaro/shared` because two independent readers need the SAME
15229
+ * list: the public share read (which is the reason the list exists) and the
15230
+ * production writer's own bundle projection. A second copy of a list like this
15231
+ * does not stay equal — it goes one key stale and the stale side is the one
15232
+ * that publishes.
15233
+ *
15234
+ * This is a plain JSON walker on purpose. `settings` is a free-form column that
15235
+ * a client owns end to end; the projection reads the keys it must drop and
15236
+ * nothing else, so it never needs — and must never grow — a dependency on
15237
+ * whatever writes the rest of the document.
15238
+ */
15239
+ /**
15240
+ * `settings.studio`'s OWN transient keys.
15241
+ *
15242
+ * The per-shot pending lists are on this list as well as the shot one on
15243
+ * purpose: nothing writes them here today, and a stray one from an older
15244
+ * client — or from a client that is not the studio editor at all — still must
15245
+ * not ride out to a viewer.
15246
+ */
15247
+ declare const STUDIO_TRANSIENT_KEYS: readonly ["trash", "pendingStills", "pendingClips", "pendingMusic", "pendingDraft", "freecutDraftUrl"];
15248
+ /**
15249
+ * ...and a SHOT entry's, which is where the per-shot markers actually are.
15250
+ *
15251
+ * `pendingClip` (singular) is the pre-concurrent-markers shape; the editor's
15252
+ * reader still migrates it on parse, so a row can still be carrying one and it
15253
+ * is still in-flight state.
15254
+ */
15255
+ declare const STUDIO_SHOT_TRANSIENT_KEYS: readonly ["pendingClips", "pendingClip", "pendingStills"];
15256
+ /**
15257
+ * A production's `settings` with the owner's working state removed.
15258
+ *
15259
+ * Copy-on-write, and structurally: it rebuilds the objects without those keys
15260
+ * rather than deleting from the caller's, so the stored row is untouched. A
15261
+ * `settings` with no `studio` comes back unchanged — this is a studio concern,
15262
+ * and a workflow that is not a production has nothing here to strip.
15263
+ *
15264
+ * Takes and returns `unknown` because the column is free-form and every caller
15265
+ * already holds it as whatever its own layer calls JSON; narrowing here would
15266
+ * only move the cast one line up.
15267
+ */
15268
+ declare function stripStudioTransientSettings(settings: unknown): unknown;
15269
+
15270
+ /** Immutable, deterministic edits over a baked scene. No asset bytes are mutated. */
15271
+
15272
+ /** Callers describe values. Revision identity and provenance are assigned here. */
15273
+ declare const scene3DV2OverrideInputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
15274
+ kind: z.ZodLiteral<"entity-transform">;
15275
+ entityId: z.ZodString;
15276
+ space: z.ZodEnum<{
15277
+ local: "local";
15278
+ world: "world";
15279
+ }>;
15280
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
15281
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
15282
+ scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
15283
+ }, z.core.$strict>, z.ZodObject<{
15284
+ kind: z.ZodLiteral<"entity-color">;
15285
+ entityId: z.ZodString;
15286
+ materialRole: z.ZodString;
15287
+ color: z.ZodString;
15288
+ }, z.core.$strict>, z.ZodObject<{
15289
+ kind: z.ZodLiteral<"entity-visibility">;
15290
+ entityId: z.ZodString;
15291
+ visible: z.ZodBoolean;
15292
+ }, z.core.$strict>, z.ZodObject<{
15293
+ kind: z.ZodLiteral<"camera-shot-offset">;
15294
+ shotId: z.ZodString;
15295
+ positionOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
15296
+ targetOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
15297
+ }, z.core.$strict>], "kind">;
15298
+ declare const scene3DV2EditOperationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
15299
+ op: z.ZodLiteral<"set-override">;
15300
+ override: z.ZodDiscriminatedUnion<[z.ZodObject<{
15301
+ kind: z.ZodLiteral<"entity-transform">;
15302
+ entityId: z.ZodString;
15303
+ space: z.ZodEnum<{
15304
+ local: "local";
15305
+ world: "world";
15306
+ }>;
15307
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
15308
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
15309
+ scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
15310
+ }, z.core.$strict>, z.ZodObject<{
15311
+ kind: z.ZodLiteral<"entity-color">;
15312
+ entityId: z.ZodString;
15313
+ materialRole: z.ZodString;
15314
+ color: z.ZodString;
15315
+ }, z.core.$strict>, z.ZodObject<{
15316
+ kind: z.ZodLiteral<"entity-visibility">;
15317
+ entityId: z.ZodString;
15318
+ visible: z.ZodBoolean;
15319
+ }, z.core.$strict>, z.ZodObject<{
15320
+ kind: z.ZodLiteral<"camera-shot-offset">;
15321
+ shotId: z.ZodString;
15322
+ positionOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
15323
+ targetOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
15324
+ }, z.core.$strict>], "kind">;
15325
+ }, z.core.$strict>, z.ZodObject<{
15326
+ op: z.ZodLiteral<"remove-override">;
15327
+ overrideId: z.ZodString;
15328
+ }, z.core.$strict>], "op">;
15329
+ declare const scene3DV2EditOperationsSchema: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
15330
+ op: z.ZodLiteral<"set-override">;
15331
+ override: z.ZodDiscriminatedUnion<[z.ZodObject<{
15332
+ kind: z.ZodLiteral<"entity-transform">;
15333
+ entityId: z.ZodString;
15334
+ space: z.ZodEnum<{
15335
+ local: "local";
15336
+ world: "world";
15337
+ }>;
15338
+ position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
15339
+ rotation: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
15340
+ scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
15341
+ }, z.core.$strict>, z.ZodObject<{
15342
+ kind: z.ZodLiteral<"entity-color">;
15343
+ entityId: z.ZodString;
15344
+ materialRole: z.ZodString;
15345
+ color: z.ZodString;
15346
+ }, z.core.$strict>, z.ZodObject<{
15347
+ kind: z.ZodLiteral<"entity-visibility">;
15348
+ entityId: z.ZodString;
15349
+ visible: z.ZodBoolean;
15350
+ }, z.core.$strict>, z.ZodObject<{
15351
+ kind: z.ZodLiteral<"camera-shot-offset">;
15352
+ shotId: z.ZodString;
15353
+ positionOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
15354
+ targetOffset: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
15355
+ }, z.core.$strict>], "kind">;
15356
+ }, z.core.$strict>, z.ZodObject<{
15357
+ op: z.ZodLiteral<"remove-override">;
15358
+ overrideId: z.ZodString;
15359
+ }, z.core.$strict>], "op">>;
15360
+ type Scene3DV2OverrideInput = z.infer<typeof scene3DV2OverrideInputSchema>;
15361
+ type Scene3DV2EditOperation = z.infer<typeof scene3DV2EditOperationSchema>;
15362
+ interface Scene3DV2EditOptions {
15363
+ expectedRevisionId: string;
15364
+ expectedContentHash?: string;
15365
+ lockedObjectIds?: readonly string[];
15366
+ /** Hosts may allocate identity at admission for idempotent job replay. */
15367
+ newRevisionId?: string;
15368
+ }
15369
+ type Scene3DV2EditResult = {
15370
+ ok: true;
15371
+ plan: Scene3DPlanV2;
15372
+ changeSummary: string;
15373
+ } | {
15374
+ ok: false;
15375
+ code: "invalid_plan" | "invalid_operations" | "stale_revision" | "locked";
15376
+ message: string;
15377
+ };
15378
+ /**
15379
+ * Edits are all-or-nothing. The expected revision and content hash are checked
15380
+ * before writing, and the result is validated and hashed before acceptance.
15381
+ * A source file belongs to its exact base revision: until the host materializes
15382
+ * these edits, the new revision must not advertise the old native download.
15383
+ */
15384
+ declare function applyScene3DV2EditOperations(input: Scene3DPlanV2, operations: readonly Scene3DV2EditOperation[], options: Scene3DV2EditOptions): Promise<Scene3DV2EditResult>;
15385
+
15386
+ /** The value that names the Basic lane explicitly. Absent means the same. */
15387
+ declare const SCENE3D_BASIC_ENGINE = "basic";
15388
+ /** Everything a caller may put in `engine` on a Generate/Edit request. */
15389
+ declare const SCENE3D_AUTHORING_ENGINES: readonly ["basic", "blender-cloud", "blender-local"];
15390
+ type Scene3DAuthoringEngine = (typeof SCENE3D_AUTHORING_ENGINES)[number];
15391
+ /**
15392
+ * The engine an Advanced run picks when nothing else names one.
15393
+ *
15394
+ * Hosted cloud, because that is the contract's default lane; `blender-local`
15395
+ * is never inferred — it needs a paired desktop and its own deployment flag,
15396
+ * so it is only ever used when it was explicitly asked for or when the scene
15397
+ * under edit was authored by it and this install still offers it.
15398
+ */
15399
+ declare const SCENE3D_DEFAULT_ADVANCED_ENGINE: Scene3DKnownEngine;
15400
+ declare function isScene3DAuthoringEngine(value: unknown): value is Scene3DAuthoringEngine;
15401
+ interface Scene3DEngineChoiceInput {
15402
+ /** The node's/caller's explicit selection. `undefined` = "not chosen". */
15403
+ requested?: string | null;
15404
+ /**
15405
+ * The plan the run edits, for an edit. Omit for generate.
15406
+ *
15407
+ * The raw plan rather than a version number on purpose: the caller already
15408
+ * holds it, and reading the version here is the ONE place the "v2 never goes
15409
+ * to Basic" rule can be enforced for every surface at once.
15410
+ */
15411
+ plan?: unknown;
15412
+ /**
15413
+ * Advanced engines this install can actually serve, from
15414
+ * `GET /v1/3d-scene/capabilities`.
15415
+ *
15416
+ * `undefined` means NOT KNOWN (the headless orchestrator never asks, and the
15417
+ * browser has not had the answer back yet) — which is different from "none".
15418
+ * Unknown proceeds and lets the route refuse honestly with
15419
+ * `SCENE_CAPABILITY_UNAVAILABLE`; a known-empty list refuses here, before a
15420
+ * request that cannot succeed is sent.
15421
+ */
15422
+ availableEngines?: readonly string[] | undefined;
15423
+ }
15424
+ /** The extra body fields an Advanced request carries. Empty on Basic, so the
15425
+ * Basic request stays byte-identical to what it has always been. */
15426
+ interface Scene3DEngineRequestFields {
15427
+ engine?: Scene3DKnownEngine;
15428
+ /**
15429
+ * Which scene schema versions the CALLER can read back.
15430
+ *
15431
+ * Contract §5: an advanced authoring request declares this so the engine
15432
+ * never answers with a revision the caller cannot render. Both of our
15433
+ * surfaces read v1 and v2, so both send the same list.
15434
+ */
15435
+ acceptedSceneSchemaVersions?: number[];
15436
+ }
15437
+ type Scene3DEngineChoiceRefusalCode =
15438
+ /** The name is not an engine this contract knows. */
15439
+ "unknown_engine"
15440
+ /** Explicitly asked for an engine this install does not serve. */
15441
+ | "engine_unavailable"
15442
+ /** A v2 scene was pointed at the Basic lane. */
15443
+ | "schema_requires_advanced"
15444
+ /** The scene claims a version nothing here can author against. */
15445
+ | "unsupported_schema_version"
15446
+ /** v2 scene, and no Advanced engine installed at all. */
15447
+ | "advanced_unavailable";
15448
+ type Scene3DEngineChoice = {
15449
+ ok: true;
15450
+ lane: "basic";
15451
+ engine: undefined;
15452
+ fields: Scene3DEngineRequestFields;
15453
+ } | {
15454
+ ok: true;
15455
+ lane: "advanced";
15456
+ engine: Scene3DKnownEngine;
15457
+ fields: Scene3DEngineRequestFields;
15458
+ } | {
15459
+ ok: false;
15460
+ code: Scene3DEngineChoiceRefusalCode;
15461
+ message: string;
15462
+ };
15463
+ /**
15464
+ * Resolve the lane, or refuse with a sentence the user can act on.
15465
+ *
15466
+ * Pure and synchronous: every caller already holds the three inputs, and the
15467
+ * answer must be identical on the canvas and in the orchestrator.
15468
+ */
15469
+ declare function resolveScene3DAuthoringEngine(input: Scene3DEngineChoiceInput): Scene3DEngineChoice;
15470
+ /** v1's version constant, re-exported for callers narrowing a plan by hand. */
15471
+ declare const SCENE3D_BASIC_SCHEMA_VERSION = 1;
12624
15472
 
12625
- 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_PANEL_COUNT, DEFAULT_REF_IMAGE_MAX, DEFAULT_SECTIONS, 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, 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_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, 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_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 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_FIELD_MAP, OUTPUT_FORMATS, 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, 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, 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 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, 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_DEFAULT_DURATION_SECONDS, SCENE3D_DEFAULT_FPS, SCENE3D_EDIT_NODE_TYPE, SCENE3D_GENERATE_NODE_TYPE, SCENE3D_LIMITS, SCENE3D_PLAN_FIELD, SCENE3D_PLAN_TYPE, SCENE3D_PRIMITIVES, SCENE3D_SCHEMA_VERSION, 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_SHOT_TRANSIENT_KEYS, STUDIO_TRANSIENT_KEYS, SUBMISSION_STATUSES, SUNO_ADD_TRACK_MODELS, SUNO_FIELD_HANDLE_FIELDS, SUNO_HARD_CEILING, SUNO_MODELS, SUNO_SELECT_OPERATIONS, SUNO_TEXT_MAX, SUNO_TITLE_MAX, SUNO_TRACK_SOURCE_TYPES, SUNO_VERSION_PRICED_OPERATIONS, SUPPORTED_FONT_NAMES, SURROUND_DIRECTIONS, SWITCHX_BLOCK_FRAMES, SWITCHX_FRAME_TIERS, type SafetyRetryPolicy, type Scene3DCamera, type Scene3DCameraChanges, type Scene3DCameraKeyframe, type Scene3DEasing, type Scene3DEditErrorCode, type Scene3DEditOperation, type Scene3DEditOptions, type Scene3DEditResult, type Scene3DJobOutput, type Scene3DLighting, type Scene3DLightingChanges, type Scene3DObject, type Scene3DObjectChanges, type Scene3DObjectKeyframe, type Scene3DPlan, type Scene3DPrimitive, type Scene3DReference, type Scene3DReferenceKind, type Scene3DReferenceRole, 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, 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, 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 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_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, applySlots, applyVideoAudioToggle, applyVideoNegativePrompt, aspectRatioFromDims, aspectRatioOptionsByKind, aspectRatioToNumber, assembleNarratedVideoCredits, availableReasoningEfforts, bucketSecondsFromAuditCreditId, bucketSecondsFromCreditId, buildBoardPrompt, buildChildrenByParent, buildConditionVariables, buildCreditModelIdentifier, buildExpressionFromVisual, buildLipSyncCreditId, buildLlmCreditIdentifier, buildModelMenu, buildModelTree, buildMotionCreditModelIdentifier, buildNodePresetExport, buildPanelPrompt, buildProgressSegments, buildRangeLabel, buildScraperCreditId, buildVideoAnalysisCreditId, buildVideoAuditCreditId, buildVideoCreditModelIdentifier, calculateCombinedProgress, calculateMonetizationMarkup, calculateMonetizedCost, calculateProgress, canonicalVarName, characterBoardItems, characterBucketDisplayRank, characterMentionSlug, characterMentionableAssetArrays, characterSheetRefItems, characterVariantAssetArrays, checkRefVideoDurations, cinematicCreditId, clampCinematicDuration, clampSmartCutWindow, classifyRefToken, cleanOrphanedItems, clearImageCriticMetadata, clearVideoCriticMetadata, clipLookSchema, collectAncestorRefs, combineSameLabelRefs, computeAggregateLanes, 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, groupHandleId, groupLlmModelsByVendor, hasContiguousSegmentDurations, hasFeature, hexToRgbaArray, humanizeSlotSid, imageMentionSlug, imageMentionSlugForRef, imageReferenceLimit, inferMusicVideo, isAggregateableType, isCharacterAspectRatio, isCollectInEdge, isDefaultSelectorConfig, isExpandedClone, isFlux2Model, isGeminiOmniProvider, isGvpSupportedProvider, isHandleInputWired, isKineticCaptionStyle, isLocationUsageMode, isMinimaxH3Provider, isObjectAspectRatio, isOversizedScene, isPaygRetentionActive, isPerSecondLipSyncProvider, isScene3DHttpUrl, isScene3DPlan, isScraperActor, isSeedance2Provider, 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, normalizeLottieLayers, normalizeMinimaxH3Resolution, normalizeModelInput, normalizeNodeModelParams, normalizePinterestUrl, normalizeRoleSlug, normalizeVideoRequestParams, normalizeWan3Resolution, orderedLlmModels, parseAttributedDialogue, parseCharacterMentionToken, parseEntityMentionToken, parseGroupHandle, parseHandleId, parseImageMentionToken, parseListExpression, parseLocationMentionToken, parseNodePresetExport, parseNodeRef, pickAiAvatarBucket, pickIds, pickLipSyncBucket, pickSwitchXFrameTier, pickVideoAnalysisBucket, planSheetGeneration, planSheetPanels, preferredInputModeForModel, presentTypes, presetApplyClearKeys, presetDataMatches, presetEntries, pricedVideoSelection, qualityOptionsByKind, readPromptAffixes, refHandleCategory, referenceModalityForHandle, referenceSheetCreditId, registerCatalogSidecars, registerSidecarLoaders, renderAnalyzedScene, 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, resolveScraperCreditId, resolveSelectorRefs, resolveSeparator, resolveSheetSections, resolveSlideshowTransition, resolveSourceThroughConnectedList, resolveStoredTier, resolveSwitchXCreditId, resolveTopazUpscale, resolveVideoAnalysisModel, resolveVideoModeForInputs, resolveVideoProviderForMode, resolveXfadeName, rewriteSceneBindings, rewriteSlotTokens, rewriteSpeakerSlots, rgbaArrayToHex, roleToPhrase, rotationVec3Schema, runSelector, safetyRetryPolicy, sanitizeRole, scaleVec3Schema, scene3DCameraChangesSchema, scene3DCameraKeyframeSchema, scene3DCameraSchema, scene3DColorSchema, scene3DDeepEqual, scene3DEasingSchema, scene3DEditOperationSchema, scene3DEditOperationsSchema, scene3DIdSchema, scene3DLightingChangesSchema, scene3DLightingSchema, scene3DObjectChangesSchema, scene3DObjectKeyframeSchema, scene3DObjectSchema, scene3DPlanIssues, scene3DPlanSchema, scene3DPrimitiveSchema, scene3DReferenceSchema, scene3DUrlSchema, 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, supportedDefaultDimensions, supportsAdvancedMode, supportsEndAnchor, supportsExtendRender, toConnectedReference, toConnectedReferences, togglePick, tryParseJson, uiAspectRatioFill, uiDurationFill, uiResolutionFill, unresolvedRefTokens, unwrapUnresolvedTokens, usageModeDirective, usageModeIncludesName, usageModeLabel, usdToCredits, validateAiAvatarPayload, validateCinematicAvatarPayload, validateDurationForFormat, validateModeActivation, validateModelInput, validateNoNestedGroups, validateObjects, validateProviderForNodeType, validateSubWorkflowRoutes, variantJobId, vec3Schema, videoAnalysisCreditSegment, videoAnalysisNumWindows, videoAnalysisResultSchema, videoAuditCreditsForBucket, videoModelCanSpeakDialogue, videoModelSupportsAudio, videoNegativeSuffix, videoProviderFoldsLoneEndFrame, videoProviderRequiresImage, windowAnalysisSchema, zipMergeLists };
15473
+ 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_PANEL_COUNT, DEFAULT_REF_IMAGE_MAX, DEFAULT_SECTIONS, 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, 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_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, 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_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 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_FIELD_MAP, OUTPUT_FORMATS, 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, 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 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, 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_ASSET_KINDS, SCENE3D_ASSET_ROLES, SCENE3D_ASSET_ROLE_KINDS, 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_RENDERER_ASSET_KINDS, 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_SHOT_TRANSIENT_KEYS, STUDIO_TRANSIENT_KEYS, SUBMISSION_STATUSES, SUNO_ADD_TRACK_MODELS, SUNO_FIELD_HANDLE_FIELDS, SUNO_HARD_CEILING, SUNO_MODELS, SUNO_SELECT_OPERATIONS, SUNO_TEXT_MAX, SUNO_TITLE_MAX, SUNO_TRACK_SOURCE_TYPES, 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 Scene3DAuthoringEngine, type Scene3DCamera, type Scene3DCameraChanges, type Scene3DCameraKeyframe, type Scene3DCameraSample, type Scene3DCameraTrackV1, type Scene3DClayLighting, type Scene3DClayLightingPreset, 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 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 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, 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, 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 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_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, 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, groupHandleId, groupLlmModelsByVendor, hasContiguousSegmentDurations, hasFeature, hexToRgbaArray, humanizeSlotSid, imageMentionSlug, imageMentionSlugForRef, imageReferenceLimit, inferMusicVideo, isAggregateableType, isCharacterAspectRatio, isCollectInEdge, isDefaultSelectorConfig, isExpandedClone, isFlux2Model, isGeminiOmniProvider, isGvpSupportedProvider, isHandleInputWired, isKineticCaptionStyle, isKnownScene3DEngine, isLocationUsageMode, isMinimaxH3Provider, isObjectAspectRatio, isOversizedScene, isPaygRetentionActive, isPerSecondLipSyncProvider, isPro3DRenderJobOutput, isPro3DRenderQuote, isPro3DRenderRenderOnly, isScene3DAuthoringEngine, isScene3DCameraTrack, isScene3DHttpUrl, isScene3DPlan, isScene3DPlanV1, isScene3DPlanV2, isScene3DSchemaVersionSupported, isScraperActor, isSeedance2Provider, 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, normalizeLottieLayers, normalizeMinimaxH3Resolution, normalizeModelInput, normalizeNodeModelParams, normalizePinterestUrl, normalizeRoleSlug, normalizeVideoRequestParams, normalizeWan3Resolution, orderedLlmModels, parseAttributedDialogue, parseCharacterMentionToken, parseEntityMentionToken, parseGroupHandle, parseHandleId, parseImageMentionToken, parseListExpression, parseLocationMentionToken, parseNodePresetExport, parseNodeRef, parseScene3DCameraTrackJson, parseScene3DPlanV2Json, pickAiAvatarBucket, pickIds, pickLipSyncBucket, pickSwitchXFrameTier, pickVideoAnalysisBucket, planSheetGeneration, planSheetPanels, preferredInputModeForModel, presentTypes, presetApplyClearKeys, presetDataMatches, presetEntries, pricedVideoSelection, pro3DRenderCoreOutputSchema, pro3DRenderJobOutputSchema, pro3DRenderProducedSchemaVersion, pro3DRenderQuoteSchema, pro3DRenderTimingOverrides, qualityOptionsByKind, readPromptAffixes, refHandleCategory, referenceModalityForHandle, referenceSheetCreditId, registerCatalogSidecars, registerSidecarLoaders, renderAnalyzedScene, 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, 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, scene3DJsonByteLength, scene3DLightingChangesSchema, scene3DLightingSchema, scene3DMaterialBindingSchema, scene3DMaterialNameSchema, scene3DMaterialRoleSchema, scene3DNodeIdSchema, scene3DObjectChangesSchema, scene3DObjectKeyframeSchema, scene3DObjectSchema, scene3DOverrideSchema, scene3DPlanIssues, scene3DPlanSchema, scene3DPlanSchemaVersion, scene3DPlanV1Issues, scene3DPlanV1ObjectSchema, scene3DPlanV1Schema, scene3DPlanV2Issues, scene3DPlanV2ObjectSchema, scene3DPlanV2Schema, scene3DPrimitiveSchema, scene3DProjectionIssues, scene3DProvenanceSchema, scene3DReferenceSchema, 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, supportedDefaultDimensions, supportsAdvancedMode, supportsEndAnchor, supportsExtendRender, 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 };