@nodaro/sdk 2.12.0 → 2.14.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.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as _nodaro_shared from '@nodaro/shared';
2
- import { CollaboratorRole, GenericNode, GenericEdge, WorkflowExport, WorkflowImportReport, WorkflowVisibility, NodeExecutionStateWire, Scene3DReference, Scene3DPlan, Scene3DEditOperation, Scene3DV2EditOperation, Pro3DRenderSource, Pro3DRenderEngine, Pro3DRenderQuality, Pro3DRenderStyle, Scene3DJobOutputAny, Pro3DRenderJobOutput as Pro3DRenderJobOutput$1, Pro3DRenderCapabilities, Scene3DPlanV2, Pro3DRenderQuote as Pro3DRenderQuote$1, ModelInputAdjustment, ConnectedReference, DescribedReference, Scene3DAssetRef, TtsProvider, EntityStyle, CharacterAspectRatio, CharacterAttachColumn, LocationAssetType, LocationAttachColumn, SurroundDirection, ObjectAssetType, ObjectAttachColumn, ObjectAspectRatio, CreatureAttachColumn, PipelineInput, PipelineStatus, PipelineMode, PipelineStageName, SubGateName, ChatEnabledStage, ProposedChange, ReduceStrategyId, ReduceMeta, Voice, VoiceLibraryParams, VoiceLibraryResponse, VoiceClone, AudioFxPreset, OverlayAnchor, CharacterMotionMetadata, BrowseCommunityParams, BrowseCommunityResult, CommunityCard, CommunityFullDetail, CommunityEntityType, CloneListingResult, FavoriteListingResult, CommunityReportReason, ReportListingResult, PublishListingParams, PublishListingResult, SharedListing, OrganizationView, OrgKind, OrgSettings, OrgPage, OrgMemberView, MemberStatus, WorkspaceRole, InvitationDelivery, InvitationState, InvitationView, InvitationPreview, OrgAuditEntry, UsageQuery, UsageReport, UsageLogEntry, WorkspaceSummary, WorkspaceView, WorkspaceSettings, WorkspaceMemberView, JoinCodeView, MeOrganizations } from '@nodaro/shared';
3
- export { AudioFxPreset, BrowseCommunityParams, BrowseCommunityResult, CHARACTER_ASPECT_DEFAULTS, CHARACTER_ASPECT_OPTIONS, CHARACTER_STYLES, OBJECT_ASPECT_DEFAULTS as CREATURE_ASPECT_DEFAULTS, OBJECT_ASPECT_OPTIONS as CREATURE_ASPECT_OPTIONS, CREATURE_ATTACH_COLUMNS, CharacterAspectRatio, CloneListingResult, CommunityCard, CommunityEntityType, CommunityReportReason, CommunitySort, ConnectedReference, ObjectAspectRatio as CreatureAspectRatio, CreatureAttachColumn, DescribedReference, EntityStyle, FavoriteListingResult, GenericEdge, GenericNode, InvitationDelivery, InvitationPreview, InvitationState, InvitationView, JoinCodeView, LOCATION_ASSET_TYPES, LOCATION_ATTACH_COLUMNS, LocationAssetType, LocationAttachColumn, MeOrganizations, MemberStatus, NodeExecutionStatus, OBJECT_ASPECT_DEFAULTS, OBJECT_ASPECT_OPTIONS, OBJECT_ASSET_TYPES, OBJECT_ATTACH_COLUMNS, OUTPUT_BEARING_NODE_STATUSES, ObjectAspectRatio, ObjectAssetType, ObjectAttachColumn, OrgAuditEntry, OrgErrorCode, OrgKind, OrgMemberView, OrgPage, OrgRole, OrgSettings, OrgStatus, OrganizationSummary, OrganizationView, PROMPT_PREFIX_KEY, PROMPT_SUFFIX_KEY, PipelineStageName, PromptAffixFields, PublishListingParams, PublishListingResult, ReduceMeta, ReduceStrategyId, ReportListingResult, SURROUND_DIRECTIONS, SharedListing, SharedVoice, SurroundDirection, USAGE_GROUP_BYS, UsageGroupBy, UsageLogEntry, UsageQuery, UsageReport, UsageReportRow, UsageReportTotals, UsageVarianceRow, Voice, VoiceClone, VoiceLibraryParams, VoiceLibraryResponse, WORKSPACE_HEADER, WorkflowExport, WorkflowExportCharacter, WorkflowExportLocation, WorkflowExportObject, WorkspaceMemberView, WorkspaceRole, WorkspaceSettings, WorkspaceSummary, WorkspaceView, nodeStateMayCarryOutput } from '@nodaro/shared';
2
+ import { CollaboratorRole, GenericNode, GenericEdge, WorkflowExport, WorkflowImportReport, WorkflowVisibility, NodeExecutionStateWire, Scene3DReference, Scene3DPlan, Scene3DEditOperation, Scene3DV2EditOperation, Pro3DRenderSource, Pro3DRenderEngine, Pro3DRenderQuality, Pro3DRenderStyle, Scene3DJobOutputAny, Pro3DRenderJobOutput as Pro3DRenderJobOutput$1, Pro3DRenderCapabilities, Scene3DPlanV2, Pro3DRenderQuote as Pro3DRenderQuote$1, ModelInputAdjustment, ConnectedReference, DescribedReference, Scene3DAssetRef, TtsProvider, EntityStyle, CharacterAspectRatio, CharacterAttachColumn, LocationAssetType, LocationAttachColumn, SurroundDirection, ObjectAssetType, ObjectAttachColumn, ObjectAspectRatio, CreatureAttachColumn, PipelineInput, PipelineStatus, PipelineMode, PipelineStageName, SubGateName, ChatEnabledStage, ProposedChange, ReduceStrategyId, ReduceMeta, Voice, VoiceLibraryParams, VoiceLibraryResponse, VoiceClone, AudioFxPreset, CaptionLookId, SupportedFontName, TranscribeLane, CaptionStyle, OverlayAnchor, TranscribeProvider, Transcript, CharacterMotionMetadata, BrowseCommunityParams, BrowseCommunityResult, CommunityCard, CommunityFullDetail, CommunityEntityType, CloneListingResult, FavoriteListingResult, CommunityReportReason, ReportListingResult, PublishListingParams, PublishListingResult, SharedListing, OrganizationView, OrgKind, OrgSettings, OrgPage, OrgMemberView, MemberStatus, WorkspaceRole, InvitationDelivery, InvitationState, InvitationView, InvitationPreview, OrgAuditEntry, UsageQuery, UsageReport, UsageLogEntry, WorkspaceSummary, WorkspaceView, WorkspaceSettings, WorkspaceMemberView, JoinCodeView, Edl, EditPlanMode, EditPlanTier, MeOrganizations } from '@nodaro/shared';
3
+ export { AudioFxPreset, BrowseCommunityParams, BrowseCommunityResult, CHARACTER_ASPECT_DEFAULTS, CHARACTER_ASPECT_OPTIONS, CHARACTER_STYLES, OBJECT_ASPECT_DEFAULTS as CREATURE_ASPECT_DEFAULTS, OBJECT_ASPECT_OPTIONS as CREATURE_ASPECT_OPTIONS, CREATURE_ATTACH_COLUMNS, ChapterSet, CharacterAspectRatio, CloneListingResult, CommunityCard, CommunityEntityType, CommunityReportReason, CommunitySort, ConnectedReference, ObjectAspectRatio as CreatureAspectRatio, CreatureAttachColumn, DescribedReference, EditPlanMode, EditPlanTier, Edl, EdlClipSet, EntityStyle, FavoriteListingResult, GenericEdge, GenericNode, InvitationDelivery, InvitationPreview, InvitationState, InvitationView, JoinCodeView, LOCATION_ASSET_TYPES, LOCATION_ATTACH_COLUMNS, LocationAssetType, LocationAttachColumn, MeOrganizations, MemberStatus, NodeExecutionStatus, OBJECT_ASPECT_DEFAULTS, OBJECT_ASPECT_OPTIONS, OBJECT_ASSET_TYPES, OBJECT_ATTACH_COLUMNS, OUTPUT_BEARING_NODE_STATUSES, ObjectAspectRatio, ObjectAssetType, ObjectAttachColumn, OrgAuditEntry, OrgErrorCode, OrgKind, OrgMemberView, OrgPage, OrgRole, OrgSettings, OrgStatus, OrganizationSummary, OrganizationView, PROMPT_PREFIX_KEY, PROMPT_SUFFIX_KEY, PipelineStageName, PromptAffixFields, PublishListingParams, PublishListingResult, ReduceMeta, ReduceStrategyId, ReportListingResult, SURROUND_DIRECTIONS, SharedListing, SharedVoice, SurroundDirection, TranscribeLane, TranscribeProvider, Transcript, USAGE_GROUP_BYS, UsageGroupBy, UsageLogEntry, UsageQuery, UsageReport, UsageReportRow, UsageReportTotals, UsageVarianceRow, Voice, VoiceClone, VoiceLibraryParams, VoiceLibraryResponse, WORKSPACE_HEADER, WorkflowExport, WorkflowExportCharacter, WorkflowExportLocation, WorkflowExportObject, WorkspaceMemberView, WorkspaceRole, WorkspaceSettings, WorkspaceSummary, WorkspaceView, nodeStateMayCarryOutput, unwrapEditPlanOutput } from '@nodaro/shared';
4
4
  import { DirectionFields, SubjectFields, PersonValue, WizardNodeContext, WizardQuestion, WizardSelection, RecommendedModel, FactoryPreset } from '@nodaro/prompts';
5
5
  export { PEOPLE, PERSON_DIMENSION_LABELS, PERSON_DIMENSION_ORDER, PersonValue, RecommendedModel, WizardNodeContext, WizardOption, WizardQuestion, WizardSelection, buildPersonHints } from '@nodaro/prompts';
6
6
 
@@ -4782,6 +4782,73 @@ declare class LlmResource {
4782
4782
  }>;
4783
4783
  }
4784
4784
 
4785
+ /** One word-timed caption entry (one per WORD for the kinetic styles). */
4786
+ interface CaptionEntry {
4787
+ text: string;
4788
+ startMs: number;
4789
+ endMs: number;
4790
+ timestampMs?: number | null;
4791
+ confidence?: number | null;
4792
+ }
4793
+ /** Look + motion levers — see {@link MediaResource.addCaptions}. `look` is a
4794
+ * named preset the explicit levers override; an unset look renders as `outline`
4795
+ * (the default). The STYLING levers (`look`, `fontFamily`, `fontWeight`,
4796
+ * `strokeColor`/`strokeWidth`, `uppercase`, `positionY`, `maxWordsPerLine`) now
4797
+ * apply to the static `subtitle` style too — a subtitle carrying any of them
4798
+ * renders via Remotion. Only `highlightColor` (no spoken-word cursor to colour)
4799
+ * and `animate` (no motion to freeze) stay kinetic-only and are rejected (400)
4800
+ * on `subtitle`. */
4801
+ interface CaptionLookInput {
4802
+ look?: CaptionLookId;
4803
+ fontFamily?: SupportedFontName;
4804
+ fontWeight?: number;
4805
+ strokeColor?: string;
4806
+ strokeWidth?: number;
4807
+ highlightColor?: string;
4808
+ uppercase?: boolean;
4809
+ positionY?: number;
4810
+ /** Cap on how many words one caption LINE (or `tiktok-words` page) may hold,
4811
+ * 1-20, on TOP of the frame-width budget, sentence ends and pauses that
4812
+ * already close a line — 1-2 gives the punchy CapCut read, unset fits the
4813
+ * width. Applies to `word-highlight` / `karaoke` / `bouncy` / `tiktok-words`
4814
+ * and to a Remotion-rendered `subtitle`; inert on `word-pop` (always one
4815
+ * word). */
4816
+ maxWordsPerLine?: number;
4817
+ /** Kinetic styles only. `false` freezes the per-word MOTION — the grouping,
4818
+ * line-holding and spoken-word highlight stay, only the movement stops;
4819
+ * default `true`. Rejected (400) on the static `subtitle` style. */
4820
+ animate?: boolean;
4821
+ }
4822
+ /** One caption SEGMENT: a time range with optional style/look overrides and its
4823
+ * own words (`text`/`captions`, else the shared transcript filtered to range).
4824
+ * A segmented render is entirely Remotion, so any `style` is valid here. */
4825
+ interface CaptionSegmentInput extends CaptionLookInput {
4826
+ startMs: number;
4827
+ endMs: number;
4828
+ style?: CaptionStyle;
4829
+ position?: "bottom" | "top" | "center";
4830
+ fontSize?: number;
4831
+ color?: string;
4832
+ backgroundColor?: string;
4833
+ text?: string;
4834
+ captions?: CaptionEntry[];
4835
+ }
4836
+ /** {@link MediaResource.addCaptions} input. */
4837
+ interface AddCaptionsInput extends CaptionLookInput {
4838
+ videoUrl: string;
4839
+ text?: string;
4840
+ captions?: CaptionEntry[];
4841
+ /** Transcribe the video's audio when no text/captions are given (default true). */
4842
+ autoTranscribe?: boolean;
4843
+ transcribeProvider?: TranscribeLane;
4844
+ style?: CaptionStyle;
4845
+ position?: "bottom" | "top" | "center";
4846
+ fontSize?: number;
4847
+ color?: string;
4848
+ backgroundColor?: string;
4849
+ /** Apply different treatments to time ranges in one call (non-overlapping). */
4850
+ segments?: CaptionSegmentInput[];
4851
+ }
4785
4852
  /**
4786
4853
  * Media ingestion + trimming — the source-preparation steps a Voice Changer Pro
4787
4854
  * flow (or any pipeline) needs before it has a clip to work on: pull a social
@@ -4812,15 +4879,20 @@ declare class MediaResource {
4812
4879
  * Download a social video (YouTube / TikTok / Instagram / X / Facebook) into
4813
4880
  * your storage (`POST /v1/download-video`). `maxHeight` caps the resolution
4814
4881
  * (default "best"); `sectionStartSec` + `sectionEndSec` (both-or-neither) fetch
4815
- * ONLY that time range instead of the whole video. Returns a `downloadId`;
4816
- * progress streams from `GET /v1/download-video/progress/:downloadId`
4817
- * (server-sent events) and the finished file lands in your library.
4882
+ * ONLY that time range instead of the whole video. A download that arrives
4883
+ * with no audio stream FAILS by default (it is usually a degraded source
4884
+ * response, and is retried through other routes first); pass
4885
+ * `requireAudio: false` to accept a clip that really has no sound. Returns a
4886
+ * `downloadId`; progress streams from
4887
+ * `GET /v1/download-video/progress/:downloadId` (server-sent events) and the
4888
+ * finished file lands in your library.
4818
4889
  */
4819
4890
  downloadVideo(input: {
4820
4891
  url: string;
4821
4892
  maxHeight?: number;
4822
4893
  sectionStartSec?: number;
4823
4894
  sectionEndSec?: number;
4895
+ requireAudio?: boolean;
4824
4896
  }): Promise<{
4825
4897
  downloadId: string;
4826
4898
  }>;
@@ -4992,6 +5064,46 @@ declare class MediaResource {
4992
5064
  }): Promise<{
4993
5065
  jobId: string;
4994
5066
  }>;
5067
+ /**
5068
+ * Burn captions into a video (`POST /v1/add-captions`). Give the words as
5069
+ * `text`, word-timed `captions[]`, or let it transcribe (`autoTranscribe`,
5070
+ * the default when neither is set).
5071
+ *
5072
+ * `style: "subtitle"` renders statically (FFmpeg) UNLESS it carries a styling
5073
+ * lever, in which case it — like the KINETIC styles (`word-highlight` /
5074
+ * `karaoke` / `tiktok-words` / `word-pop` / `bouncy`) — renders via Remotion.
5075
+ * `look` picks a preset — `outline` (Montserrat 900, UPPERCASE, black outline,
5076
+ * yellow spoken word — the TikTok/Reels read) or `clean`; an UNSET look renders
5077
+ * as `outline`. The explicit STYLING levers (`fontFamily`, `fontWeight`,
5078
+ * `strokeColor`/`strokeWidth`, `uppercase`, `positionY`, `maxWordsPerLine`)
5079
+ * override individual fields of it and now apply to `subtitle` too. Only
5080
+ * `highlightColor` (the spoken-word cursor) and `animate` stay kinetic-only
5081
+ * and are REJECTED on `subtitle`.
5082
+ *
5083
+ * `animate` (default true) freezes the per-word MOTION on the kinetic styles
5084
+ * when set to false — the grouping, line-holding and spoken-word highlight
5085
+ * stay; only the movement stops.
5086
+ *
5087
+ * `maxWordsPerLine` (1-20) caps how many words a line — or a `tiktok-words`
5088
+ * page — may hold, on top of the width budget / sentence ends / pauses that
5089
+ * already close one; it is inert on `word-pop`, which is always one word.
5090
+ * Like every lever here it exists top-level AND per segment, and a segment
5091
+ * that does not name its own inherits the top-level value.
5092
+ *
5093
+ * `segments[]` applies DIFFERENT treatments to non-overlapping time ranges in
5094
+ * one call (e.g. a large top intro, then a small bottom body); a segment that
5095
+ * names its own `look` starts fresh from that preset and does not inherit the
5096
+ * top-level explicit levers. Poll `jobs.get(jobId)`.
5097
+ *
5098
+ * `word-highlight` shows ONE held line at a time and a word's
5099
+ * `startMs`/`endMs` is its SPOKEN window (what times the highlight, not how
5100
+ * long the text is on screen) — so `captions[]` can be handed over verbatim
5101
+ * from an `audio.transcribe()` job's `output_data.words`, with
5102
+ * `autoTranscribe: false`.
5103
+ */
5104
+ addCaptions(input: AddCaptionsInput): Promise<{
5105
+ jobId: string;
5106
+ }>;
4995
5107
  /**
4996
5108
  * Trim (and extract) audio from a video or audio source
4997
5109
  * (`POST /v1/trim-audio`) to `[startTime, endTime]` seconds, in `audioFormat`
@@ -5123,11 +5235,48 @@ interface MediaProcessResult {
5123
5235
  metadata: Record<string, unknown>;
5124
5236
  }
5125
5237
 
5238
+ /**
5239
+ * One word of a {@link AudioResource.transcribe} result — caption-shaped, in
5240
+ * MILLISECONDS, and structurally the `captions[]` entry `media.addCaptions()`
5241
+ * takes, so a word list can be passed straight through. `speaker` is present
5242
+ * only on a diarized `elevenlabs-stt` run.
5243
+ */
5244
+ interface TranscribeWord {
5245
+ text: string;
5246
+ startMs: number;
5247
+ endMs: number;
5248
+ timestampMs?: number | null;
5249
+ confidence?: number | null;
5250
+ speaker?: string;
5251
+ }
5252
+ /**
5253
+ * A completed transcribe job's `output_data` (read it off `jobs.get(jobId)`).
5254
+ *
5255
+ * Mind the units: `words` and `json.words` are in MILLISECONDS, while the
5256
+ * top-level `segments` are in SECONDS (the raw per-utterance ranges) — present
5257
+ * only on the legacy lanes; `elevenlabs-stt` returns none, so read `words`.
5258
+ */
5259
+ interface TranscribeJobOutput {
5260
+ /** The full transcript as one string. */
5261
+ text: string;
5262
+ /** Detected (or requested) language code. */
5263
+ language?: string;
5264
+ /** Per-word timings, ms — present on the word-level lanes. */
5265
+ words?: TranscribeWord[];
5266
+ /** The normalized {@link Transcript} (ms), the shape `edit.*` consumes. */
5267
+ json?: Transcript;
5268
+ /** Per-utterance ranges in SECONDS — not ms, unlike everything above. */
5269
+ segments?: Array<{
5270
+ start: number;
5271
+ end: number;
5272
+ text: string;
5273
+ }>;
5274
+ }
5126
5275
  /**
5127
5276
  * Audio primitives — the building blocks Voice Changer Pro composes internally
5128
- * (separation, isolation, effect, mix, level), exposed standalone so a consumer
5129
- * can run any single step or assemble its own pipeline. Each returns a job id to
5130
- * poll (`jobs.get(jobId)`).
5277
+ * (separation, isolation, effect, mix, level) plus speech-to-text, exposed
5278
+ * standalone so a consumer can run any single step or assemble its own
5279
+ * pipeline. Each returns a job id to poll (`jobs.get(jobId)`).
5131
5280
  */
5132
5281
  declare class AudioResource {
5133
5282
  private client;
@@ -5207,6 +5356,39 @@ declare class AudioResource {
5207
5356
  }): Promise<{
5208
5357
  jobId: string;
5209
5358
  }>;
5359
+ /**
5360
+ * Transcribe an audio (or video) track to text (`POST /v1/transcribe`).
5361
+ *
5362
+ * Three engines are accepted. `elevenlabs-stt` (Scribe) is always word-level,
5363
+ * flag or not, and is the only lane that honours `diarize` (who spoke) and
5364
+ * `tagAudioEvents` (laughter, applause, …); `incredibly-fast-whisper` returns
5365
+ * word timings when you ask for them. `whisper` returns NO word timings at
5366
+ * all — named explicitly or reached by OMITTING `provider`, which still falls
5367
+ * back to it — so asking it for them (`wordTimestamps: true`) is rejected with
5368
+ * a `400 validation_error` at ingress, before any credit is spent. A kinetic
5369
+ * caption render therefore has to name one of the other two.
5370
+ *
5371
+ * Poll `jobs.get(jobId)`; the finished job's `output_data` is a
5372
+ * {@link TranscribeJobOutput}: `text` (the whole transcript), `words`
5373
+ * (caption-shaped, in MILLISECONDS), `json` (the normalized
5374
+ * {@link Transcript}, also ms) — and a top-level `segments` array that is in
5375
+ * SECONDS, not ms.
5376
+ *
5377
+ * `words` is the caption source for a kinetic burn-in: hand it to
5378
+ * `media.addCaptions()` as `captions` with `autoTranscribe: false` and the
5379
+ * render uses those exact words (correct the `text` of an entry in between
5380
+ * and the fix is what burns in).
5381
+ */
5382
+ transcribe(input: {
5383
+ audioUrl: string;
5384
+ provider?: TranscribeProvider;
5385
+ language?: string;
5386
+ diarize?: boolean;
5387
+ tagAudioEvents?: boolean;
5388
+ wordTimestamps?: boolean;
5389
+ }): Promise<{
5390
+ jobId: string;
5391
+ }>;
5210
5392
  }
5211
5393
 
5212
5394
  /**
@@ -5230,6 +5412,11 @@ interface UserBalance {
5230
5412
  periodEnd: string | null;
5231
5413
  /** Credits earned for app usage (free tier only — earned by running flows). */
5232
5414
  appCreditsAllowance: number;
5415
+ /** Present when a deployment uses an external shared wallet. Raw credits;
5416
+ * null means unavailable. Do not substitute the personal `total` balance. */
5417
+ externalWallet?: {
5418
+ available: number | null;
5419
+ };
5233
5420
  }
5234
5421
  /**
5235
5422
  * Result of `POST /v1/credits/model-costs` — a batch cost lookup for editor
@@ -6249,8 +6436,12 @@ interface StudioGenerateRequest {
6249
6436
  shotId: string;
6250
6437
  /** Candidates to fan out (stills); the builder clamps it to the catalog's range. */
6251
6438
  count?: number;
6252
- /** The directing input mode for a clip; absent ⇒ derived from the inputs. */
6253
- mode?: "start" | "references";
6439
+ /**
6440
+ * The directing input mode for a clip; absent ⇒ derived from the scene's saved
6441
+ * inputs (a pinned end frame included). `start` sends ONLY the start frame;
6442
+ * `start-end` sends the start and the end frame.
6443
+ */
6444
+ mode?: "start" | "start-end" | "references";
6254
6445
  /** Price the run and return; nothing is submitted and nothing is written. */
6255
6446
  dryRun?: boolean;
6256
6447
  clientRequestId?: StudioClientRequestId;
@@ -6653,7 +6844,7 @@ interface StudioShotGenerationInput {
6653
6844
  shotId: string;
6654
6845
  clientRequestId?: string;
6655
6846
  count?: number;
6656
- mode?: "start" | "references";
6847
+ mode?: "start" | "start-end" | "references";
6657
6848
  dryRun?: boolean;
6658
6849
  /** Linked clips only: require the exact inputs returned by a reviewed quote. */
6659
6850
  expectedInputHash?: string;
@@ -7612,6 +7803,184 @@ declare class WorkspacesResource {
7612
7803
  usageCsv(id: string, opts?: Omit<UsageQuery, "cursor" | "limit" | "workspaceId">): Promise<string>;
7613
7804
  }
7614
7805
 
7806
+ /**
7807
+ * A silence-detect job's `output_data.json` — the value to pass as
7808
+ * {@link EditPlanInput.silence}. It is NOT what {@link EditResource.silenceDetect}
7809
+ * returns (that is `{ jobId }`); fetch the finished job and read its
7810
+ * `output_data.json`. The planner reads the `ranges` array — an input without
7811
+ * one is silently ignored, so pass this whole object.
7812
+ */
7813
+ interface SilenceRanges {
7814
+ /** Wire version of the payload. */
7815
+ version?: number;
7816
+ /** Silence spans on the source clock, in ms. */
7817
+ ranges: ReadonlyArray<{
7818
+ startMs: number;
7819
+ endMs: number;
7820
+ }>;
7821
+ /** Total source duration, in ms. */
7822
+ durationMs?: number;
7823
+ }
7824
+ /** Every editorial route answers with the queued job to poll. */
7825
+ interface EditJobResult {
7826
+ /** The queued job id — follow it via `client.jobs.getStatus(jobId)`. */
7827
+ jobId: string;
7828
+ }
7829
+ interface SilenceDetectInput {
7830
+ /**
7831
+ * An audio OR video source. A single ffmpeg `silencedetect` pass runs over the
7832
+ * source's audio proxy either way — no provider key required.
7833
+ */
7834
+ audioUrl: string;
7835
+ /** dBFS threshold, always ≤ 0. Default -35 (a good podcast default). */
7836
+ thresholdDb?: number;
7837
+ /** Minimum silence length to report, in ms. Default 700. */
7838
+ minSilenceMs?: number;
7839
+ /** Padding kept around speech, in ms — shrinks each reported range inward. Default 120. */
7840
+ padMs?: number;
7841
+ /**
7842
+ * Optionally associate this run with a workflow execution (display only — it
7843
+ * ties the standalone job back to a workflow for the execution history).
7844
+ */
7845
+ workflowId?: string;
7846
+ }
7847
+ interface ApplyEdlInput {
7848
+ /** The edit decision list to render. Media resolves from each `edl.sources[i].url`. */
7849
+ edl: Edl;
7850
+ /**
7851
+ * Optional media-URL overrides for `edl.sources[i].url`, POSITIONAL in this
7852
+ * array's order. Each URL is SSRF-guarded server-side like any media the
7853
+ * platform fetches.
7854
+ */
7855
+ sources?: string[];
7856
+ /**
7857
+ * Optional transcript to remap through the cut. The rendered job returns the
7858
+ * remapped transcript on its `json` output. A word-level multi-hour transcript
7859
+ * is several MB — if you only need the re-timed transcript (not a render), use
7860
+ * {@link EditResource.remapTranscript} locally instead of sending it here.
7861
+ */
7862
+ transcript?: Transcript;
7863
+ /** Render a full video (default) or an audio-only cut. */
7864
+ output?: "video" | "audio";
7865
+ /** Fast proxy draft or the final render. Default "final". */
7866
+ quality?: "proxy" | "final";
7867
+ /**
7868
+ * Default crossfade (ms) on boundaries with no explicit transition; 0 = hard
7869
+ * cuts. Per-boundary clamped to the ffmpeg-xfade limit server-side. Default 0.
7870
+ */
7871
+ crossfadeMs?: number;
7872
+ /** Optionally associate this run with a workflow execution (display only). */
7873
+ workflowId?: string;
7874
+ }
7875
+ /**
7876
+ * One media source for an edit-plan run. Mirrors the shape the workflow engine
7877
+ * sends: a stable `id` (adopted verbatim as the plan's `EdlSource` id), the
7878
+ * media `url`, and the `kind`, plus optional per-source annotations the planner
7879
+ * honors.
7880
+ */
7881
+ interface EditPlanSource {
7882
+ /** Stable id for this source — becomes the `EdlSource` id in the returned plan. */
7883
+ id: string;
7884
+ /** The source's media URL (SSRF-guarded server-side). */
7885
+ url: string;
7886
+ /** This source's medium. */
7887
+ kind: "video" | "audio";
7888
+ /** Role annotation. `"master-audio"` marks the clock the plan is reserved on. */
7889
+ role?: "master-audio" | "camera" | "wide" | "screen";
7890
+ /** Speaker labels present in this source. */
7891
+ speakers?: string[];
7892
+ /** This source's origin on the master clock (masterMs = sourceMs + offsetMs). */
7893
+ offsetMs?: number;
7894
+ }
7895
+ interface EditPlanInput {
7896
+ /**
7897
+ * Planning mode. The finished job's `output_data` carries the plan — read it
7898
+ * with {@link unwrapEditPlanOutput}, which also strips the relay's
7899
+ * `viaNodaroCloud` marker:
7900
+ * - `"tighten"` → an `Edl`.
7901
+ * - `"clips"` → an {@link EdlClipSet} (`{ version, clips: Edl[] }`);
7902
+ * `unwrapEditPlanOutput` returns the bare `Edl[]`.
7903
+ * - `"chapters"` → a {@link ChapterSet} (`{ version, chapters: [...] }`).
7904
+ */
7905
+ mode: EditPlanMode;
7906
+ /** Reasoning tier — affects plan quality AND the credit bucket. */
7907
+ planTier: EditPlanTier;
7908
+ /** The timed transcript driving the plan. */
7909
+ transcript: Transcript;
7910
+ /**
7911
+ * Optional detected silence ranges. Pass the silence-detect JOB'S RESULT —
7912
+ * `getStatus(jobId).data.output_data.json` (a {@link SilenceRanges} object),
7913
+ * NOT the `{ jobId }` that {@link EditResource.silenceDetect} returns. The
7914
+ * planner reads the `ranges` array; an input without one is silently ignored.
7915
+ */
7916
+ silence?: SilenceRanges;
7917
+ /** The recording's media sources (1–6). */
7918
+ sources: EditPlanSource[];
7919
+ /** Free-text editing steer. */
7920
+ instructions?: string;
7921
+ /** Style-guide text applied to the plan. */
7922
+ styleGuide?: string;
7923
+ /** `"clips"` mode only: how many clips to cut. */
7924
+ count?: number;
7925
+ /** `"clips"` mode only: target duration per clip, in seconds. */
7926
+ targetDurationSec?: number;
7927
+ /** Target aspect for cut clips. */
7928
+ targetAspect?: "16:9" | "9:16" | "1:1" | "4:5";
7929
+ /** Target platform hint (e.g. a social platform name). */
7930
+ platform?: string;
7931
+ /** Optionally associate this run with a workflow execution (display only). */
7932
+ workflowId?: string;
7933
+ }
7934
+ /**
7935
+ * Phase-1 editorial primitives for podcast / long-form video editing.
7936
+ *
7937
+ * - {@link silenceDetect} and {@link applyEdl} are core nodes available on every
7938
+ * edition.
7939
+ * - {@link editPlan} is a Cloud-edition transcript-driven planner.
7940
+ * - {@link remapTranscript} is a PURE local transform (no request) — the same
7941
+ * remap `applyEdl` performs on its `transcript`, exposed for callers that hold
7942
+ * an EDL and a transcript and only want the re-timed transcript.
7943
+ *
7944
+ * Every request method returns {@link EditJobResult}; poll the `jobId` with
7945
+ * `client.jobs.getStatus(jobId)`.
7946
+ */
7947
+ declare class EditResource {
7948
+ private client;
7949
+ constructor(client: NodaroClient);
7950
+ /**
7951
+ * Detect silence ranges in an audio/video source (`POST /v1/silence-detect`).
7952
+ * Keyless — one ffmpeg pass over the source's audio proxy.
7953
+ */
7954
+ silenceDetect(input: SilenceDetectInput): Promise<EditJobResult>;
7955
+ /**
7956
+ * Render an edit decision list into a video or audio cut (`POST /v1/apply-edl`).
7957
+ * The EDL is validated at ingress — an unresolvable source or a picture-less
7958
+ * segment on a video edit throws a typed `NodaroError` (400, `code:
7959
+ * "invalid_edl"`) before any credits are reserved.
7960
+ */
7961
+ applyEdl(input: ApplyEdlInput): Promise<EditJobResult>;
7962
+ /**
7963
+ * Plan a transcript-driven cut (`POST /v1/edit-plan`). Reads a timed
7964
+ * transcript (plus optional silence ranges) and the media sources, and plans
7965
+ * the edit. The finished job's `output_data` holds the plan: an `Edl`
7966
+ * (`"tighten"`), an {@link EdlClipSet} (`"clips"`), or a {@link ChapterSet}
7967
+ * (`"chapters"`) — normalize it with {@link unwrapEditPlanOutput}.
7968
+ *
7969
+ * On a self-hosted install the request relays to nodaro.ai and needs the
7970
+ * install connected (a 503 `code: "nodaro_connection_required"` otherwise);
7971
+ * on nodaro.ai it runs directly.
7972
+ */
7973
+ editPlan(input: EditPlanInput): Promise<EditJobResult>;
7974
+ /**
7975
+ * Remap a transcript through an EDL — a PURE client-side transform (NO
7976
+ * request). Returns a new transcript whose word (and segment) timings are on
7977
+ * the EDL's rendered output clock, dropping words that fall in cut regions and
7978
+ * clipping straddlers. Runs `@nodaro/shared`'s canonical
7979
+ * `remapTranscriptThroughEdl`, the same remap `applyEdl` performs server-side.
7980
+ */
7981
+ remapTranscript(edl: Edl, transcript: Transcript): Transcript;
7982
+ }
7983
+
7615
7984
  interface ClientOptions {
7616
7985
  /** Backend base URL, e.g. "https://nodaro.example.com" or empty string for same-origin. */
7617
7986
  baseUrl: string;
@@ -7725,6 +8094,7 @@ declare class NodaroClient {
7725
8094
  readonly tutorials: TutorialsResource;
7726
8095
  readonly organizations: OrganizationsResource;
7727
8096
  readonly workspaces: WorkspacesResource;
8097
+ readonly edit: EditResource;
7728
8098
  /** The workspace this client acts in; undefined = the personal space. */
7729
8099
  readonly workspaceId: string | undefined;
7730
8100
  constructor(opts: ClientOptions);
@@ -8006,4 +8376,4 @@ interface ApiErrorBody {
8006
8376
  }
8007
8377
  declare function throwFromResponse(status: number, body: ApiErrorBody): never;
8008
8378
 
8009
- export { type AccessTokenResponse, type AnalyzeInput, type AnalyzeResult, type AppRun, type AppRunResult, type ApplyChatProposalResult, type ApproveCreatureMainImageResult, type ApproveMainImageResult, type ApproveObjectMainImageResult, type ApprovePortraitResult, AppsResource, AudioResource, type Auth, type BranchPipelineInput, type BranchPipelineResult, type BrowseTemplatesParams, type BrowseTemplatesResult, CREATURE_ASSET_TYPES, CallbackAuth, type CancelExecutionParams, type CancelJobResult, CatalogsResource, type Character, type CharacterDetail, type CharacterUsage, CharactersResource, type ChatStageResult, type ChatTurn, type ClientOptions, type CloneTemplateParams, type CloneTemplateResult, CommunityResource, type ContinueVideoProResult, type CopilotMemorySavedFrameData, type CopilotMessage, type CopilotMessagePart, type CopilotMetadataFrameData, type CopilotModelTier, CopilotResource, type CopilotRunMode, type CopilotRunProposalFrameData, type CopilotRunProposalNode, type CopilotStreamFrame, type CopilotStreamOptions, type CopilotSurface, type CopilotThread, type CopilotThreadWorkflow, type CopilotToolCallFrameData, type CopilotWiredAsset, type CopilotWorkflowCreatedFrameData, type CopilotWorkflowUpdateFrameData, type CreateCopilotThreadInput, type CreateCreatureInput, type CreateDeveloperAppInput, type CreateDeveloperAppResult, type CreateLocationInput, type CreateObjectInput, type CreateOrgInput, type CreateProjectInput, type CreateRecastInput, type CreateShotInput, type CreateWorkflowInput, type CreateWorkspaceInput, type Creature, type CreatureAssetType, type CreatureDetail, type CreatureReferencePhoto, type CreatureReferencePhotoKind, CreaturesResource, type CreditStatus, CreditsResource, type DeleteAppRunResult, type DeleteJobResult, type DeveloperApp, type DeveloperAppKind, type DeveloperAppScope, type DeveloperAppStatus, DeveloperAppsResource, type DownloadVideoProgress, type DubbingInput, type DuplicateCharacterInput, type EditScene3DParams, type EnhanceInput, type EstimateRecastInput, type EstimateRecastRescoreInput, type ExchangeCodeInput, type ExecutionStatus, type ExecutionTriggerType, ExecutionsResource, type FactoryPresetsResult, ForbiddenError, type GenerateAssetInput, type GenerateCharacterInput, type GenerateCharacterResult, type GenerateCreatureAssetInput, type GenerateCreatureAssetResult, type GenerateCreatureInput, type GenerateCreatureMotionInput, type GenerateCreatureMotionResult, type GenerateCreatureResult, type GenerateImageParams, type GenerateInput, type GenerateLocationAssetInput, type GenerateLocationInput, type GenerateLocationResult, type GenerateMotionInput, type GenerateObjectAssetInput, type GenerateObjectAssetResult, type GenerateObjectInput, type GenerateObjectMotionInput, type GenerateObjectMotionResult, type GenerateObjectResult, type GenerateScene3DParams, type GenerateSurroundContinuationInput, type GenerateVideoParams, type GetPickerCatalogOptions, type GetProductionOptions, InsufficientCreditsError, type InviteInput, type Job, JobAbortedError, JobBlockedError, type JobErrorHint, JobFailedError, JobHeldError, type JobStatus, type JobStatusResult, JobTimeoutError, JobsResource, type LibraryAsset, LibraryResource, type ListAppRunsParams, type ListAppsParams, type ListAppsResult, type ListCharactersParams, type ListCharactersResult, type ListCreaturesParams, type ListExecutionsForWorkflowParams, type ListExecutionsPage, type ListInvitationsOptions, type ListJobsPage, type ListJobsParams, type ListLibraryParams, type ListLibraryResult, type ListLocationsParams, type ListModelsOptions, type ListObjectsParams, type ListStudioProductionsOptions, type ListWorkflowsParams, LlmResource, type LlmStructuredInput, type LlmStructuredJobInput, type LlmStructuredJobOutput, type LlmStructuredResult, type Location, type LocationDetail, type LocationReferencePhoto, type LocationReferencePhotoKind, LocationsResource, type MediaProcessInput, type MediaProcessResult, MediaResource, type ModelCostsResult, type ModelSummary, type ModelsListResult, ModelsResource, NodaroClient, NodaroError, type NodeCategory, type NodeDescriptor, type NodeExecutionState, type NodeInputField, type NodeInputSchema, type NodeJobOutput, type NodePreset, type NodePresetGroup, NodesResource, NotFoundError, type OAuthAppInfo, OAuthResource, type Object$1 as Object, type ObjectCategory, type ObjectDetail, type ObjectReferencePhoto, type ObjectReferencePhotoKind, ObjectsResource, OrganizationsResource, type OutputType, type OverlayPlacement, type PickerCatalog, type PickerCatalogSummary, PickerCatalogsResource, type PickerDimension, type PickerOption, PipelinesResource, type PolicyBlockHint, PresetsResource, type Project, type ProjectedCatalog, type ProjectedCatalogDimension, type ProjectedCatalogOption, ProjectsResource, PromptHelperResource, type PromptResult, type PublishedApp, type PublishedAppDetail, RateLimitedError, type RecaptionCreatureResult, type RecaptionLocationResult, type RecaptionObjectResult, type RecaptionResult, type RecastAudioLayerName, type RecastAudioManifestV1, type RecastAudioMix, type RecastAudioMixControl, type RecastAudioSectionReplacement, type RecastEstimate, type RecastRescoreOperation, type RecastRescoreQuote, type RecastRescoreReplacement, type RecastRescoreRequestV2, type RecastRescoreResponse, RecastResource, type RecastRunSnapshot, type RecastScriptImportResult, type RecastScriptValidation, type RecastScriptValidationError, type ReduceInput, ReduceResource, type ReduceResult, type ReferencePhoto, type ReferencePhotoKind, type RenderScene3DParams, type ResolveRecastGateInput, type RetainedScene3DEditParams, type RetainedScene3DEditResult, type RotateSecretResult, type RunAndWaitOptions, type RunAppOptions, type RunManyResult, type RunNodeAdjustment, type RunNodeResult, type RunWorkflowParams, type RunWorkflowResult, SCENE3D_DELIVERY_ASSET_USAGE, type SafetyBlockHint, type Scene3DAuthoringEngine, type Scene3DCapabilities, type Scene3DDelivery, type Scene3DDeliveryAsset, type Scene3DDeliveryAssetKind, type Scene3DJobOutput, Scene3DResource, type Shot, type ShotEntityRef, type ShotMode, ShotsResource, StaticTokenAuth, type StopVideoProResult, StorageExceededError, type StructuredReferenceParams, type StudioClientRequestId, type StudioCloneRequest, type StudioCreateProductionRequest, type StudioDescribeRequest, type StudioDocumentJson, type StudioEditInput, type StudioExportPlanOptions, type StudioExportPlanResponse, type StudioExportStep, type StudioFrameRequest, type StudioGenerateEstimate, type StudioGenerateOptions, type StudioGenerateRequest, type StudioGenerateResponse, type StudioGenerateResult, type StudioGenerationReply, type StudioImportSummary, type StudioJobStartedResponse, type StudioKeyframeAcceptanceInput, type StudioKeyframeGenerationInput, type StudioKeyframeRecord, type StudioListProductionsResponse, type StudioMediaResponse, type StudioMusicRequest, type StudioOpClass, StudioOpError, type StudioOpsDryRunReceipt, type StudioOpsDryRunResponse, type StudioOpsImpact, type StudioOpsReceipt, type StudioOpsRequest, type StudioOpsResponse, type StudioPlanIssue, StudioPreviewAppliedError, StudioPreviewUnavailable, type StudioProduction, type StudioProductionCapabilities, type StudioProductionDetail, type StudioProductionRecord, type StudioProductionReply, type StudioProductionResponse, StudioProductionsResource, type StudioReconcileResponse, StudioResource, type StudioRevoiceRequest, type StudioShotGenerationInput, type StudioSkillResponse, type StudioValidatePlanResponse, type StudioVideoLane, type StudioVoiceRequest, type Template, type TemplateBrowseCard, type TemplateSort, TemplatesResource, type TextToVideoParams, type TutorialCategory, type TutorialFlowItem, type TutorialVideoItem, TutorialsResource, UnauthorizedError, type UpdateCreatureInput, type UpdateCreatureResult, type UpdateDeveloperAppInput, type UpdateLocationInput, type UpdateLocationResult, type UpdateObjectInput, type UpdateObjectResult, type UpdateProjectInput, type UpdateShotInput, type UpdateWorkflowInput, type UploadResult, UploadsResource, type UpsertCharacterInput, type UpsertCharacterResult, type UpsertCreatureInput, type UpsertCreatureResult, type UpsertObjectInput, type UpsertObjectResult, type UserBalance, type UserIdentity, type VcpAnalysis, type VcpAnalysisSpeaker, type VcpAnalyzeInput, type VcpExportInput, type VcpExportTrack, type VideoMetadata, VideoProResource, type VoiceChangerProInput, type VoiceChangerProVoice, type VoiceDesignInput, type VoiceRemixInput, VoicesResource, type Workflow, type WorkflowConflictCode, WorkflowConflictError, type WorkflowExecution, type WorkflowExecutionSummary, WorkflowsResource, WorkspacesResource, buildPersonSeedPrompt, createClient, isStudioGenerateEstimate, supabaseAuth, throwFromResponse };
8379
+ export { type AccessTokenResponse, type AddCaptionsInput, type AnalyzeInput, type AnalyzeResult, type AppRun, type AppRunResult, type ApplyChatProposalResult, type ApplyEdlInput, type ApproveCreatureMainImageResult, type ApproveMainImageResult, type ApproveObjectMainImageResult, type ApprovePortraitResult, AppsResource, AudioResource, type Auth, type BranchPipelineInput, type BranchPipelineResult, type BrowseTemplatesParams, type BrowseTemplatesResult, CREATURE_ASSET_TYPES, CallbackAuth, type CancelExecutionParams, type CancelJobResult, type CaptionEntry, type CaptionLookInput, type CaptionSegmentInput, CatalogsResource, type Character, type CharacterDetail, type CharacterUsage, CharactersResource, type ChatStageResult, type ChatTurn, type ClientOptions, type CloneTemplateParams, type CloneTemplateResult, CommunityResource, type ContinueVideoProResult, type CopilotMemorySavedFrameData, type CopilotMessage, type CopilotMessagePart, type CopilotMetadataFrameData, type CopilotModelTier, CopilotResource, type CopilotRunMode, type CopilotRunProposalFrameData, type CopilotRunProposalNode, type CopilotStreamFrame, type CopilotStreamOptions, type CopilotSurface, type CopilotThread, type CopilotThreadWorkflow, type CopilotToolCallFrameData, type CopilotWiredAsset, type CopilotWorkflowCreatedFrameData, type CopilotWorkflowUpdateFrameData, type CreateCopilotThreadInput, type CreateCreatureInput, type CreateDeveloperAppInput, type CreateDeveloperAppResult, type CreateLocationInput, type CreateObjectInput, type CreateOrgInput, type CreateProjectInput, type CreateRecastInput, type CreateShotInput, type CreateWorkflowInput, type CreateWorkspaceInput, type Creature, type CreatureAssetType, type CreatureDetail, type CreatureReferencePhoto, type CreatureReferencePhotoKind, CreaturesResource, type CreditStatus, CreditsResource, type DeleteAppRunResult, type DeleteJobResult, type DeveloperApp, type DeveloperAppKind, type DeveloperAppScope, type DeveloperAppStatus, DeveloperAppsResource, type DownloadVideoProgress, type DubbingInput, type DuplicateCharacterInput, type EditJobResult, type EditPlanInput, type EditPlanSource, EditResource, type EditScene3DParams, type EnhanceInput, type EstimateRecastInput, type EstimateRecastRescoreInput, type ExchangeCodeInput, type ExecutionStatus, type ExecutionTriggerType, ExecutionsResource, type FactoryPresetsResult, ForbiddenError, type GenerateAssetInput, type GenerateCharacterInput, type GenerateCharacterResult, type GenerateCreatureAssetInput, type GenerateCreatureAssetResult, type GenerateCreatureInput, type GenerateCreatureMotionInput, type GenerateCreatureMotionResult, type GenerateCreatureResult, type GenerateImageParams, type GenerateInput, type GenerateLocationAssetInput, type GenerateLocationInput, type GenerateLocationResult, type GenerateMotionInput, type GenerateObjectAssetInput, type GenerateObjectAssetResult, type GenerateObjectInput, type GenerateObjectMotionInput, type GenerateObjectMotionResult, type GenerateObjectResult, type GenerateScene3DParams, type GenerateSurroundContinuationInput, type GenerateVideoParams, type GetPickerCatalogOptions, type GetProductionOptions, InsufficientCreditsError, type InviteInput, type Job, JobAbortedError, JobBlockedError, type JobErrorHint, JobFailedError, JobHeldError, type JobStatus, type JobStatusResult, JobTimeoutError, JobsResource, type LibraryAsset, LibraryResource, type ListAppRunsParams, type ListAppsParams, type ListAppsResult, type ListCharactersParams, type ListCharactersResult, type ListCreaturesParams, type ListExecutionsForWorkflowParams, type ListExecutionsPage, type ListInvitationsOptions, type ListJobsPage, type ListJobsParams, type ListLibraryParams, type ListLibraryResult, type ListLocationsParams, type ListModelsOptions, type ListObjectsParams, type ListStudioProductionsOptions, type ListWorkflowsParams, LlmResource, type LlmStructuredInput, type LlmStructuredJobInput, type LlmStructuredJobOutput, type LlmStructuredResult, type Location, type LocationDetail, type LocationReferencePhoto, type LocationReferencePhotoKind, LocationsResource, type MediaProcessInput, type MediaProcessResult, MediaResource, type ModelCostsResult, type ModelSummary, type ModelsListResult, ModelsResource, NodaroClient, NodaroError, type NodeCategory, type NodeDescriptor, type NodeExecutionState, type NodeInputField, type NodeInputSchema, type NodeJobOutput, type NodePreset, type NodePresetGroup, NodesResource, NotFoundError, type OAuthAppInfo, OAuthResource, type Object$1 as Object, type ObjectCategory, type ObjectDetail, type ObjectReferencePhoto, type ObjectReferencePhotoKind, ObjectsResource, OrganizationsResource, type OutputType, type OverlayPlacement, type PickerCatalog, type PickerCatalogSummary, PickerCatalogsResource, type PickerDimension, type PickerOption, PipelinesResource, type PolicyBlockHint, PresetsResource, type Project, type ProjectedCatalog, type ProjectedCatalogDimension, type ProjectedCatalogOption, ProjectsResource, PromptHelperResource, type PromptResult, type PublishedApp, type PublishedAppDetail, RateLimitedError, type RecaptionCreatureResult, type RecaptionLocationResult, type RecaptionObjectResult, type RecaptionResult, type RecastAudioLayerName, type RecastAudioManifestV1, type RecastAudioMix, type RecastAudioMixControl, type RecastAudioSectionReplacement, type RecastEstimate, type RecastRescoreOperation, type RecastRescoreQuote, type RecastRescoreReplacement, type RecastRescoreRequestV2, type RecastRescoreResponse, RecastResource, type RecastRunSnapshot, type RecastScriptImportResult, type RecastScriptValidation, type RecastScriptValidationError, type ReduceInput, ReduceResource, type ReduceResult, type ReferencePhoto, type ReferencePhotoKind, type RenderScene3DParams, type ResolveRecastGateInput, type RetainedScene3DEditParams, type RetainedScene3DEditResult, type RotateSecretResult, type RunAndWaitOptions, type RunAppOptions, type RunManyResult, type RunNodeAdjustment, type RunNodeResult, type RunWorkflowParams, type RunWorkflowResult, SCENE3D_DELIVERY_ASSET_USAGE, type SafetyBlockHint, type Scene3DAuthoringEngine, type Scene3DCapabilities, type Scene3DDelivery, type Scene3DDeliveryAsset, type Scene3DDeliveryAssetKind, type Scene3DJobOutput, Scene3DResource, type Shot, type ShotEntityRef, type ShotMode, ShotsResource, type SilenceDetectInput, type SilenceRanges, StaticTokenAuth, type StopVideoProResult, StorageExceededError, type StructuredReferenceParams, type StudioClientRequestId, type StudioCloneRequest, type StudioCreateProductionRequest, type StudioDescribeRequest, type StudioDocumentJson, type StudioEditInput, type StudioExportPlanOptions, type StudioExportPlanResponse, type StudioExportStep, type StudioFrameRequest, type StudioGenerateEstimate, type StudioGenerateOptions, type StudioGenerateRequest, type StudioGenerateResponse, type StudioGenerateResult, type StudioGenerationReply, type StudioImportSummary, type StudioJobStartedResponse, type StudioKeyframeAcceptanceInput, type StudioKeyframeGenerationInput, type StudioKeyframeRecord, type StudioListProductionsResponse, type StudioMediaResponse, type StudioMusicRequest, type StudioOpClass, StudioOpError, type StudioOpsDryRunReceipt, type StudioOpsDryRunResponse, type StudioOpsImpact, type StudioOpsReceipt, type StudioOpsRequest, type StudioOpsResponse, type StudioPlanIssue, StudioPreviewAppliedError, StudioPreviewUnavailable, type StudioProduction, type StudioProductionCapabilities, type StudioProductionDetail, type StudioProductionRecord, type StudioProductionReply, type StudioProductionResponse, StudioProductionsResource, type StudioReconcileResponse, StudioResource, type StudioRevoiceRequest, type StudioShotGenerationInput, type StudioSkillResponse, type StudioValidatePlanResponse, type StudioVideoLane, type StudioVoiceRequest, type Template, type TemplateBrowseCard, type TemplateSort, TemplatesResource, type TextToVideoParams, type TranscribeJobOutput, type TranscribeWord, type TutorialCategory, type TutorialFlowItem, type TutorialVideoItem, TutorialsResource, UnauthorizedError, type UpdateCreatureInput, type UpdateCreatureResult, type UpdateDeveloperAppInput, type UpdateLocationInput, type UpdateLocationResult, type UpdateObjectInput, type UpdateObjectResult, type UpdateProjectInput, type UpdateShotInput, type UpdateWorkflowInput, type UploadResult, UploadsResource, type UpsertCharacterInput, type UpsertCharacterResult, type UpsertCreatureInput, type UpsertCreatureResult, type UpsertObjectInput, type UpsertObjectResult, type UserBalance, type UserIdentity, type VcpAnalysis, type VcpAnalysisSpeaker, type VcpAnalyzeInput, type VcpExportInput, type VcpExportTrack, type VideoMetadata, VideoProResource, type VoiceChangerProInput, type VoiceChangerProVoice, type VoiceDesignInput, type VoiceRemixInput, VoicesResource, type Workflow, type WorkflowConflictCode, WorkflowConflictError, type WorkflowExecution, type WorkflowExecutionSummary, WorkflowsResource, WorkspacesResource, buildPersonSeedPrompt, createClient, isStudioGenerateEstimate, supabaseAuth, throwFromResponse };