@snaptrude/plugin-core 0.9.15 → 0.9.16

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.
@@ -0,0 +1,1350 @@
1
+ import * as z from "zod";
2
+ import { PluginApiReturn } from "../../types";
3
+ import { ComponentHandle, Vec3Components } from "../../handles";
4
+ /**
5
+ * Walkthroughs: camera paths through the model, played in the viewport and
6
+ * exported as videos.
7
+ *
8
+ * A walkthrough is a list of keyframes (camera positions and where each looks)
9
+ * joined by a smooth path that the camera travels at a steady speed. Make one
10
+ * from full keyframes (`create`), from points on the floor (`createFromPoints`)
11
+ * or from a camera move around what is selected (`createFromPreset`); inspect
12
+ * it (`sample`, `listIssues`, `capture`); play it (`start`/`stop`/`getState`);
13
+ * and export it as a video onto the Present canvas (`export` plus the job
14
+ * methods). Edits are write-gated and each is one step of the walkthrough undo
15
+ * history, which is separate from the model's. Walkthroughs are not saved with
16
+ * the project yet: they last until the project is closed or reloaded, while an
17
+ * exported video stays on the Present canvas.
18
+ *
19
+ * Positions are world coordinates in internal `babylon` units (1 unit =
20
+ * 0.254 m, Y up); yaw is degrees clockwise from +z seen from above, pitch is
21
+ * degrees above level. Accessed via `snaptrude.presentation.walkthroughs`.
22
+ */
23
+ export declare abstract class PluginPresentationWalkthroughsApi {
24
+ constructor();
25
+ /**
26
+ * List the open project's walkthroughs, oldest first.
27
+ *
28
+ * @returns `{ walkthroughs }` — every {@linkcode PluginWalkthrough} (`[]` when there are none).
29
+ *
30
+ * @examplePrompt Which walkthroughs are there?
31
+ * @examplePrompt List the camera paths in this project
32
+ *
33
+ * # Example
34
+ * ```ts
35
+ * const { walkthroughs } = await snaptrude.presentation.walkthroughs.list()
36
+ * ```
37
+ */
38
+ abstract list(): PluginApiReturn<PluginWalkthroughsListResult>;
39
+ /**
40
+ * Get one walkthrough by id.
41
+ *
42
+ * @param walkthroughId - The walkthrough's id
43
+ * @returns The {@linkcode PluginWalkthrough}, or `null` when there is none with that id.
44
+ *
45
+ * @examplePrompt Show me the keyframes of the orbit walkthrough
46
+ * @examplePrompt How long does this walkthrough take?
47
+ *
48
+ * # Example
49
+ * ```ts
50
+ * const walkthrough = await snaptrude.presentation.walkthroughs.get(walkthroughId)
51
+ * console.log(walkthrough?.durationInSeconds)
52
+ * ```
53
+ */
54
+ abstract get(walkthroughId: string): PluginApiReturn<PluginWalkthrough | null>;
55
+ /**
56
+ * Create a walkthrough from full keyframes: where the camera stands at each
57
+ * and how it looks there (ahead along the path, at a target, or in a fixed
58
+ * direction). A keyframe that follows the floor stands at the walkthrough's
59
+ * eye height above the floor, stair, terrain or ground at or below its `eye`,
60
+ * and the path between two such keyframes climbs stairs and ramps. The new walkthrough opens in the
61
+ * walkthrough dock. Write-gated; one undo step.
62
+ *
63
+ * @param keyframes - At least one {@linkcode PluginWalkthroughKeyframeInput}, in order
64
+ * @param options - Name, loop, repeat, and speed or duration ({@linkcode PluginWalkthroughCreateOptions})
65
+ * @returns The new {@linkcode PluginWalkthrough}.
66
+ * @throws METHOD_NOT_PERMITTED when plugin writes are disabled. VALIDATION when
67
+ * `isLoop` is set with fewer than three keyframes. PRECONDITION_FAILED when a
68
+ * floor-following keyframe lies below the ground with nothing under it.
69
+ *
70
+ * @examplePrompt Make a walkthrough through these three viewpoints
71
+ * @examplePrompt Create a camera path that looks at the atrium the whole way
72
+ *
73
+ * # Example
74
+ * ```ts
75
+ * const walkthrough = await snaptrude.presentation.walkthroughs.create(
76
+ * [
77
+ * { eye: { x: 0, y: 30, z: 80 }, look: { mode: "target", target: { x: 0, y: 10, z: 0 } } },
78
+ * { eye: { x: 60, y: 30, z: 0 }, look: { mode: "target", target: { x: 0, y: 10, z: 0 } } },
79
+ * ],
80
+ * { name: "Approach", durationInSeconds: 10 },
81
+ * )
82
+ * ```
83
+ */
84
+ abstract create(keyframes: PluginWalkthroughKeyframeInput[], options?: PluginWalkthroughCreateOptions): PluginApiReturn<PluginWalkthrough>;
85
+ /**
86
+ * Create a walkthrough that walks through points on the floor, the way the
87
+ * Walkthrough tool draws a route: the camera stands at eye height above the
88
+ * floor, stair, terrain or ground at each point, climbs stairs and ramps between them, and looks ahead
89
+ * along the path, or at `options.lookAt` the whole way. Write-gated; one undo
90
+ * step.
91
+ *
92
+ * @param points - 2 to 200 points on or above the floor, in order
93
+ * @param options - Name, loop, repeat, speed or duration, and `lookAt` ({@linkcode PluginWalkthroughCreateFromPointsOptions})
94
+ * @returns The new {@linkcode PluginWalkthrough}.
95
+ * @throws METHOD_NOT_PERMITTED when plugin writes are disabled. VALIDATION when
96
+ * `isLoop` is set with fewer than three points. PRECONDITION_FAILED when a point
97
+ * lies below the ground with nothing under it.
98
+ *
99
+ * @examplePrompt Walk from the entrance through the lobby to the stairs
100
+ * @examplePrompt Make a walkthrough that visits every room on this floor
101
+ * @examplePrompt Create a loop around the courtyard
102
+ *
103
+ * # Example
104
+ * ```ts
105
+ * await snaptrude.presentation.walkthroughs.createFromPoints(
106
+ * [{ x: 0, y: 0, z: 0 }, { x: 40, y: 0, z: 0 }, { x: 40, y: 0, z: 30 }],
107
+ * { name: "Ground floor tour" },
108
+ * )
109
+ * ```
110
+ */
111
+ abstract createFromPoints(points: Vec3Components[], options?: PluginWalkthroughCreateFromPointsOptions): PluginApiReturn<PluginWalkthrough>;
112
+ /**
113
+ * Create a walkthrough from a camera move around a subject, as the
114
+ * Walkthrough button's menu does: `orbit` circles it facing its middle,
115
+ * `flyOver` passes above it looking ahead and down, `pushIn` and `pullBack`
116
+ * move toward and away from it, and `rise` cranes up from eye level. The
117
+ * subject is `options.subject`, else the selection, else the visible model
118
+ * without its terrain; the move is sized to fit it in view and starts on the
119
+ * side the camera is on. While the walkthrough is still a preset,
120
+ * {@linkcode PluginPresentationWalkthroughsApi.update} can change its
121
+ * distance, height and direction; editing a keyframe makes it ordinary.
122
+ * Write-gated; one undo step.
123
+ *
124
+ * @param kind - The camera move ({@linkcode PluginWalkthroughPresetKind})
125
+ * @param options - Subject, distance, height, direction, duration, name, repeat ({@linkcode PluginWalkthroughCreateFromPresetOptions})
126
+ * @returns The new {@linkcode PluginWalkthrough}.
127
+ * @throws METHOD_NOT_PERMITTED when plugin writes are disabled. HANDLE_INVALID when a
128
+ * subject handle does not resolve. PRECONDITION_FAILED when there is nothing to frame.
129
+ *
130
+ * @examplePrompt Orbit around the selected building
131
+ * @examplePrompt Make a drone fly-over of the site
132
+ * @examplePrompt Push in slowly toward the entrance
133
+ * @examplePrompt Crane up to reveal the whole campus
134
+ *
135
+ * # Example
136
+ * ```ts
137
+ * await snaptrude.presentation.walkthroughs.createFromPreset("orbit", {
138
+ * subject: [towerId],
139
+ * heightInDegrees: 35,
140
+ * durationInSeconds: 20,
141
+ * })
142
+ * ```
143
+ */
144
+ abstract createFromPreset(kind: PluginWalkthroughPresetKind, options?: PluginWalkthroughCreateFromPresetOptions): PluginApiReturn<PluginWalkthrough>;
145
+ /**
146
+ * Change a walkthrough: only the fields given change. Speed and duration are
147
+ * two ways to set one thing, so give at most one of them. `preset` changes a
148
+ * preset walkthrough's camera move and makes its keyframes again, keeping its
149
+ * duration; changing `isLoop` of a preset walkthrough makes it ordinary.
150
+ * Write-gated; one undo step.
151
+ *
152
+ * @param walkthroughId - The walkthrough's id
153
+ * @param patch - The fields to change ({@linkcode PluginWalkthroughPatch})
154
+ * @returns The updated {@linkcode PluginWalkthrough}.
155
+ * @throws METHOD_NOT_PERMITTED when plugin writes are disabled. HANDLE_INVALID when
156
+ * there is no walkthrough with that id. VALIDATION when `isLoop` is set on a
157
+ * walkthrough of fewer than three keyframes. PRECONDITION_FAILED when `preset`
158
+ * is given for a walkthrough that is not a preset.
159
+ *
160
+ * @examplePrompt Slow the walkthrough down to 30 seconds
161
+ * @examplePrompt Rename it to "Evening approach"
162
+ * @examplePrompt Make the orbit go the other way round and higher up
163
+ *
164
+ * # Example
165
+ * ```ts
166
+ * await snaptrude.presentation.walkthroughs.update(walkthroughId, {
167
+ * durationInSeconds: 30,
168
+ * isRepeating: true,
169
+ * })
170
+ * ```
171
+ */
172
+ abstract update(walkthroughId: string, patch: PluginWalkthroughPatch): PluginApiReturn<PluginWalkthrough>;
173
+ /**
174
+ * Delete a walkthrough. Write-gated; one undo step.
175
+ *
176
+ * @param walkthroughId - The walkthrough's id
177
+ * @returns `true` once it has been deleted.
178
+ * @throws METHOD_NOT_PERMITTED when plugin writes are disabled. HANDLE_INVALID when
179
+ * there is no walkthrough with that id.
180
+ *
181
+ * @examplePrompt Delete the old walkthrough
182
+ *
183
+ * # Example
184
+ * ```ts
185
+ * await snaptrude.presentation.walkthroughs.delete(walkthroughId)
186
+ * ```
187
+ */
188
+ abstract delete(walkthroughId: string): PluginApiReturn<boolean>;
189
+ /**
190
+ * Add a keyframe to a walkthrough at `index` (0 to the keyframe count;
191
+ * default: the end). A preset walkthrough becomes ordinary. Write-gated; one
192
+ * undo step.
193
+ *
194
+ * @param walkthroughId - The walkthrough's id
195
+ * @param keyframe - The {@linkcode PluginWalkthroughKeyframeInput} to add
196
+ * @param index - Where to insert it (default: after the last keyframe)
197
+ * @returns The updated {@linkcode PluginWalkthrough}; the new keyframe is at `index`.
198
+ * @throws METHOD_NOT_PERMITTED when plugin writes are disabled. HANDLE_INVALID when
199
+ * there is no walkthrough with that id. VALIDATION when `index` is out of range.
200
+ *
201
+ * @examplePrompt Add a stop in the kitchen after the second point
202
+ *
203
+ * # Example
204
+ * ```ts
205
+ * await snaptrude.presentation.walkthroughs.createKeyframe(
206
+ * walkthroughId,
207
+ * { eye: { x: 12, y: 0, z: 30 }, followsFloor: true, holdInSeconds: 2 },
208
+ * 2,
209
+ * )
210
+ * ```
211
+ */
212
+ abstract createKeyframe(walkthroughId: string, keyframe: PluginWalkthroughKeyframeInput, index?: number): PluginApiReturn<PluginWalkthrough>;
213
+ /**
214
+ * Change a keyframe: only the fields given change. A preset walkthrough
215
+ * becomes ordinary. Write-gated; one undo step.
216
+ *
217
+ * @param walkthroughId - The walkthrough's id
218
+ * @param keyframeId - The keyframe's id
219
+ * @param patch - The fields to change ({@linkcode PluginWalkthroughKeyframePatch})
220
+ * @returns The updated {@linkcode PluginWalkthrough}.
221
+ * @throws METHOD_NOT_PERMITTED when plugin writes are disabled. HANDLE_INVALID when
222
+ * the walkthrough or keyframe does not exist.
223
+ *
224
+ * @examplePrompt Pause for three seconds at the second point
225
+ * @examplePrompt Make the last point look at the fireplace
226
+ *
227
+ * # Example
228
+ * ```ts
229
+ * await snaptrude.presentation.walkthroughs.updateKeyframe(walkthroughId, keyframeId, {
230
+ * look: { mode: "target", target: { x: 5, y: 4, z: 10 } },
231
+ * })
232
+ * ```
233
+ */
234
+ abstract updateKeyframe(walkthroughId: string, keyframeId: string, patch: PluginWalkthroughKeyframePatch): PluginApiReturn<PluginWalkthrough>;
235
+ /**
236
+ * Remove a keyframe; the path then runs straight from the keyframe before it
237
+ * to the one after. Removing the last keyframe deletes the walkthrough. A
238
+ * preset walkthrough becomes ordinary. Write-gated; one undo step.
239
+ *
240
+ * @param walkthroughId - The walkthrough's id
241
+ * @param keyframeId - The keyframe's id
242
+ * @returns The updated {@linkcode PluginWalkthrough}, or `null` when removing the last keyframe deleted it.
243
+ * @throws METHOD_NOT_PERMITTED when plugin writes are disabled. HANDLE_INVALID when
244
+ * the walkthrough or keyframe does not exist.
245
+ *
246
+ * @examplePrompt Remove the third stop from the walkthrough
247
+ *
248
+ * # Example
249
+ * ```ts
250
+ * await snaptrude.presentation.walkthroughs.deleteKeyframe(walkthroughId, keyframeId)
251
+ * ```
252
+ */
253
+ abstract deleteKeyframe(walkthroughId: string, keyframeId: string): PluginApiReturn<PluginWalkthrough | null>;
254
+ /**
255
+ * Move a keyframe to position `index` in the walkthrough's order (the
256
+ * `presentation.sheets.reorder` convention). A preset walkthrough becomes
257
+ * ordinary. Write-gated; one undo step.
258
+ *
259
+ * @param walkthroughId - The walkthrough's id
260
+ * @param keyframeId - The keyframe's id
261
+ * @param index - Its new 0-based position (0 to the keyframe count - 1)
262
+ * @returns The updated {@linkcode PluginWalkthrough}.
263
+ * @throws METHOD_NOT_PERMITTED when plugin writes are disabled. HANDLE_INVALID when
264
+ * the walkthrough or keyframe does not exist. VALIDATION when `index` is out of range.
265
+ *
266
+ * @examplePrompt Visit the terrace before the living room
267
+ *
268
+ * # Example
269
+ * ```ts
270
+ * await snaptrude.presentation.walkthroughs.reorderKeyframe(walkthroughId, keyframeId, 0)
271
+ * ```
272
+ */
273
+ abstract reorderKeyframe(walkthroughId: string, keyframeId: string, index: number): PluginApiReturn<PluginWalkthrough>;
274
+ /**
275
+ * Sample where the camera is and which way it looks at given moments of a
276
+ * walkthrough's playback, without moving the camera.
277
+ *
278
+ * @param walkthroughId - The walkthrough's id
279
+ * @param timesInSeconds - 1 to 500 moments, each clamped to the walkthrough's duration
280
+ * @returns `{ samples }` — one {@linkcode PluginWalkthroughSample} per time, in order.
281
+ * @throws HANDLE_INVALID when there is no walkthrough with that id.
282
+ *
283
+ * @examplePrompt Where is the camera halfway through the walkthrough?
284
+ * @examplePrompt Check how high the camera flies over the roof
285
+ *
286
+ * # Example
287
+ * ```ts
288
+ * const walkthrough = await snaptrude.presentation.walkthroughs.get(walkthroughId)
289
+ * const { samples } = await snaptrude.presentation.walkthroughs.sample(walkthroughId, [
290
+ * 0,
291
+ * walkthrough!.durationInSeconds / 2,
292
+ * ])
293
+ * ```
294
+ */
295
+ abstract sample(walkthroughId: string, timesInSeconds: number[]): PluginApiReturn<PluginWalkthroughSampleResult>;
296
+ /**
297
+ * Find places where a walkthrough's camera passes through the model: through
298
+ * anything walking would stop at, such as a wall, glazing, a column, a slab or
299
+ * a roof, which would show the inside of the geometry on screen. Doors,
300
+ * furniture and room masses don't count, as walking passes through them. Each
301
+ * issue gives the first moment and point of one pass. The camera itself does
302
+ * not move.
303
+ *
304
+ * @param walkthroughId - The walkthrough's id
305
+ * @returns `{ issues }` — every {@linkcode PluginWalkthroughIssue} in playback order (`[]` when the path is clear).
306
+ * @throws HANDLE_INVALID when there is no walkthrough with that id.
307
+ *
308
+ * @examplePrompt Does the walkthrough go through any walls?
309
+ * @examplePrompt Check the camera path for clashes and fix them
310
+ *
311
+ * # Example
312
+ * ```ts
313
+ * const { issues } = await snaptrude.presentation.walkthroughs.listIssues(walkthroughId)
314
+ * for (const issue of issues) console.log(issue.timeInSeconds, issue.componentId)
315
+ * ```
316
+ */
317
+ abstract listIssues(walkthroughId: string): PluginApiReturn<PluginWalkthroughListIssuesResult>;
318
+ /**
319
+ * Capture frames of a walkthrough as one contact-sheet image: a grid of
320
+ * views at evenly spaced moments (or at `options.timesInSeconds`), read left
321
+ * to right and top to bottom. The camera goes back to where it was
322
+ * afterwards. Switches from 2D plan view to 3D first.
323
+ *
324
+ * @param walkthroughId - The walkthrough's id
325
+ * @param options - How many frames or which moments, image width and format ({@linkcode PluginWalkthroughCaptureOptions})
326
+ * @returns `{ image, frames }` — the contact sheet as a base64 data URL and the moment of each frame.
327
+ * @throws HANDLE_INVALID when there is no walkthrough with that id. PRECONDITION_FAILED
328
+ * when a walkthrough is playing or being exported.
329
+ *
330
+ * @examplePrompt Show me what the walkthrough looks like
331
+ * @examplePrompt Capture six frames of the fly-over
332
+ *
333
+ * # Example
334
+ * ```ts
335
+ * const { image } = await snaptrude.presentation.walkthroughs.capture(walkthroughId, {
336
+ * count: 6,
337
+ * })
338
+ * ```
339
+ */
340
+ abstract capture(walkthroughId: string, options?: PluginWalkthroughCaptureOptions): PluginApiReturn<PluginWalkthroughCaptureResult>;
341
+ /**
342
+ * Play a walkthrough in the viewport, from the start or `options.fromTimeInSeconds`.
343
+ * Arrow-key navigation pauses while it plays; {@linkcode PluginPresentationWalkthroughsApi.stop}
344
+ * puts the camera back where it was. Switches from 2D plan view to 3D first.
345
+ * Resolves once playback has started; a walkthrough that is already playing
346
+ * keeps playing.
347
+ *
348
+ * @param walkthroughId - The walkthrough's id
349
+ * @param options - `fromTimeInSeconds` (default 0)
350
+ * @returns The {@linkcode PluginWalkthroughPlaybackState} after starting.
351
+ * @throws HANDLE_INVALID when there is no walkthrough with that id. PRECONDITION_FAILED
352
+ * when a walkthrough is being exported.
353
+ *
354
+ * @examplePrompt Play the walkthrough
355
+ * @examplePrompt Show me the orbit
356
+ *
357
+ * # Example
358
+ * ```ts
359
+ * await snaptrude.presentation.walkthroughs.start(walkthroughId)
360
+ * ```
361
+ */
362
+ abstract start(walkthroughId: string, options?: PluginWalkthroughStartOptions): PluginApiReturn<PluginWalkthroughPlaybackState>;
363
+ /**
364
+ * Stop playback and put the camera back where it was before it started. A
365
+ * no-op when nothing is playing.
366
+ *
367
+ * @returns The {@linkcode PluginWalkthroughPlaybackState} after stopping.
368
+ *
369
+ * @examplePrompt Stop the walkthrough
370
+ *
371
+ * # Example
372
+ * ```ts
373
+ * await snaptrude.presentation.walkthroughs.stop()
374
+ * ```
375
+ */
376
+ abstract stop(): PluginApiReturn<PluginWalkthroughPlaybackState>;
377
+ /**
378
+ * Read the playback state: which walkthrough is playing or paused, and how
379
+ * far through it.
380
+ *
381
+ * @returns The current {@linkcode PluginWalkthroughPlaybackState}.
382
+ *
383
+ * @examplePrompt Is the walkthrough still playing?
384
+ *
385
+ * # Example
386
+ * ```ts
387
+ * const { status, timeInSeconds } = await snaptrude.presentation.walkthroughs.getState()
388
+ * ```
389
+ */
390
+ abstract getState(): PluginApiReturn<PluginWalkthroughPlaybackState>;
391
+ /**
392
+ * Record a walkthrough as a video and place it on the Present canvas, as an
393
+ * asynchronous job: this resolves at once with the queued job, and
394
+ * {@linkcode PluginPresentationWalkthroughsApi.getJob} reports it until it
395
+ * completes, fails or is cancelled. Recording plays the walkthrough in real
396
+ * time at the chosen size, so it takes about as long as the walkthrough plus
397
+ * the upload; the editor switches to Present mode to place the video, which
398
+ * keeps playing muted in a loop there. Only one export runs at a time.
399
+ * Write-gated.
400
+ *
401
+ * @param walkthroughId - The walkthrough's id
402
+ * @param options - Video quality and frame rate ({@linkcode PluginWalkthroughExportOptions})
403
+ * @returns The queued {@linkcode PluginWalkthroughExportJob}.
404
+ * @throws METHOD_NOT_PERMITTED when plugin writes are disabled. HANDLE_INVALID when
405
+ * there is no walkthrough with that id. PRECONDITION_FAILED when another export
406
+ * is running or this browser cannot record video.
407
+ *
408
+ * @examplePrompt Export the walkthrough as a video
409
+ * @examplePrompt Put a 1080p video of the orbit on a sheet
410
+ *
411
+ * # Example
412
+ * ```ts
413
+ * const walkthroughs = snaptrude.presentation.walkthroughs
414
+ * let job = await walkthroughs.export(walkthroughId, { quality: "1080p" })
415
+ * while (job.status === "queued" || job.status === "running") {
416
+ * await new Promise((resolve) => setTimeout(resolve, 2000))
417
+ * job = (await walkthroughs.getJob(job.jobId))!
418
+ * }
419
+ * console.log(job.result?.shapeId)
420
+ * ```
421
+ */
422
+ abstract export(walkthroughId: string, options?: PluginWalkthroughExportOptions): PluginApiReturn<PluginWalkthroughExportJob>;
423
+ /**
424
+ * Get an export job by id.
425
+ *
426
+ * @param jobId - The job's id, from {@linkcode PluginPresentationWalkthroughsApi.export}
427
+ * @returns The {@linkcode PluginWalkthroughExportJob}, or `null` when there is none
428
+ * with that id (finished jobs are forgotten after 30 minutes).
429
+ *
430
+ * @examplePrompt Is the video export done yet?
431
+ *
432
+ * # Example
433
+ * ```ts
434
+ * const job = await snaptrude.presentation.walkthroughs.getJob(jobId)
435
+ * ```
436
+ */
437
+ abstract getJob(jobId: string): PluginApiReturn<PluginWalkthroughExportJob | null>;
438
+ /**
439
+ * Cancel an export job. The recording stops and nothing is placed; a job that
440
+ * has already finished is returned unchanged. Write-gated.
441
+ *
442
+ * @param jobId - The job's id
443
+ * @returns The {@linkcode PluginWalkthroughExportJob} after cancelling.
444
+ * @throws METHOD_NOT_PERMITTED when plugin writes are disabled. HANDLE_INVALID when
445
+ * there is no job with that id.
446
+ *
447
+ * @examplePrompt Cancel the video export
448
+ *
449
+ * # Example
450
+ * ```ts
451
+ * await snaptrude.presentation.walkthroughs.cancelJob(jobId)
452
+ * ```
453
+ */
454
+ abstract cancelJob(jobId: string): PluginApiReturn<PluginWalkthroughExportJob>;
455
+ /**
456
+ * List export jobs, newest first: running ones and those that finished in the
457
+ * last 30 minutes.
458
+ *
459
+ * @returns `{ jobs }` — each {@linkcode PluginWalkthroughExportJob} (`[]` when there are none).
460
+ *
461
+ * @examplePrompt Which video exports are running?
462
+ *
463
+ * # Example
464
+ * ```ts
465
+ * const { jobs } = await snaptrude.presentation.walkthroughs.listJobs()
466
+ * ```
467
+ */
468
+ abstract listJobs(): PluginApiReturn<PluginWalkthroughListJobsResult>;
469
+ }
470
+ /**
471
+ * How a keyframe's camera looks — exactly one of:
472
+ *
473
+ * | Shape | Meaning |
474
+ * |---|---|
475
+ * | `{ mode: "path" }` | Ahead along the path, level |
476
+ * | `{ mode: "target", target }` | At a point in the model |
477
+ * | `{ mode: "fixed", yawInDegrees, pitchInDegrees }` | In a fixed direction (pitch within ±89°) |
478
+ */
479
+ export declare const PluginWalkthroughLook: z.ZodDiscriminatedUnion<[z.ZodObject<{
480
+ mode: z.ZodLiteral<"path">;
481
+ }, z.core.$strict>, z.ZodObject<{
482
+ mode: z.ZodLiteral<"target">;
483
+ target: z.ZodObject<{
484
+ x: z.ZodNumber;
485
+ y: z.ZodNumber;
486
+ z: z.ZodNumber;
487
+ }, z.core.$strip>;
488
+ }, z.core.$strict>, z.ZodObject<{
489
+ mode: z.ZodLiteral<"fixed">;
490
+ yawInDegrees: z.ZodNumber;
491
+ pitchInDegrees: z.ZodNumber;
492
+ }, z.core.$strict>], "mode">;
493
+ export type PluginWalkthroughLook = z.infer<typeof PluginWalkthroughLook>;
494
+ /**
495
+ * A keyframe of a {@linkcode PluginWalkthrough}.
496
+ *
497
+ * | Property | Type | Description |
498
+ * |---|---|---|
499
+ * | `keyframeId` | `string` | The keyframe's id |
500
+ * | `eye` | `{ x, y, z }` | Camera position (world, `babylon` units) |
501
+ * | `look` | {@linkcode PluginWalkthroughLook} | How the camera looks here |
502
+ * | `followsFloor` | `boolean` | Stands at eye height above the floor; paths between two such keyframes follow the floor |
503
+ * | `holdInSeconds` | `number` | Pause here before moving on |
504
+ */
505
+ export declare const PluginWalkthroughKeyframe: z.ZodObject<{
506
+ keyframeId: z.ZodString;
507
+ eye: z.ZodObject<{
508
+ x: z.ZodNumber;
509
+ y: z.ZodNumber;
510
+ z: z.ZodNumber;
511
+ }, z.core.$strip>;
512
+ look: z.ZodDiscriminatedUnion<[z.ZodObject<{
513
+ mode: z.ZodLiteral<"path">;
514
+ }, z.core.$strict>, z.ZodObject<{
515
+ mode: z.ZodLiteral<"target">;
516
+ target: z.ZodObject<{
517
+ x: z.ZodNumber;
518
+ y: z.ZodNumber;
519
+ z: z.ZodNumber;
520
+ }, z.core.$strip>;
521
+ }, z.core.$strict>, z.ZodObject<{
522
+ mode: z.ZodLiteral<"fixed">;
523
+ yawInDegrees: z.ZodNumber;
524
+ pitchInDegrees: z.ZodNumber;
525
+ }, z.core.$strict>], "mode">;
526
+ followsFloor: z.ZodBoolean;
527
+ holdInSeconds: z.ZodNumber;
528
+ }, z.core.$strip>;
529
+ export type PluginWalkthroughKeyframe = z.infer<typeof PluginWalkthroughKeyframe>;
530
+ /**
531
+ * A keyframe to add, for {@linkcode PluginPresentationWalkthroughsApi.create} and
532
+ * {@linkcode PluginPresentationWalkthroughsApi.createKeyframe}.
533
+ *
534
+ * | Property | Type | Description |
535
+ * |---|---|---|
536
+ * | `eye` | `{ x, y, z }` | Camera position; with `followsFloor`, a point on or above the floor |
537
+ * | `look` | {@linkcode PluginWalkthroughLook} `\| undefined` | How the camera looks here (default `{ mode: "path" }`) |
538
+ * | `followsFloor` | `boolean \| undefined` | Stand at eye height above the floor at or below `eye` (default `false`: `eye` as given) |
539
+ * | `holdInSeconds` | `number \| undefined` | Pause here, 0 to 60 (default 0) |
540
+ */
541
+ export declare const PluginWalkthroughKeyframeInput: z.ZodObject<{
542
+ eye: z.ZodObject<{
543
+ x: z.ZodNumber;
544
+ y: z.ZodNumber;
545
+ z: z.ZodNumber;
546
+ }, z.core.$strip>;
547
+ look: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
548
+ mode: z.ZodLiteral<"path">;
549
+ }, z.core.$strict>, z.ZodObject<{
550
+ mode: z.ZodLiteral<"target">;
551
+ target: z.ZodObject<{
552
+ x: z.ZodNumber;
553
+ y: z.ZodNumber;
554
+ z: z.ZodNumber;
555
+ }, z.core.$strip>;
556
+ }, z.core.$strict>, z.ZodObject<{
557
+ mode: z.ZodLiteral<"fixed">;
558
+ yawInDegrees: z.ZodNumber;
559
+ pitchInDegrees: z.ZodNumber;
560
+ }, z.core.$strict>], "mode">>;
561
+ followsFloor: z.ZodOptional<z.ZodBoolean>;
562
+ holdInSeconds: z.ZodOptional<z.ZodNumber>;
563
+ }, z.core.$strict>;
564
+ export type PluginWalkthroughKeyframeInput = z.infer<typeof PluginWalkthroughKeyframeInput>;
565
+ /**
566
+ * The fields to change in {@linkcode PluginPresentationWalkthroughsApi.updateKeyframe};
567
+ * omitted fields keep their value.
568
+ */
569
+ export declare const PluginWalkthroughKeyframePatch: z.ZodObject<{
570
+ eye: z.ZodOptional<z.ZodObject<{
571
+ x: z.ZodNumber;
572
+ y: z.ZodNumber;
573
+ z: z.ZodNumber;
574
+ }, z.core.$strip>>;
575
+ look: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
576
+ mode: z.ZodLiteral<"path">;
577
+ }, z.core.$strict>, z.ZodObject<{
578
+ mode: z.ZodLiteral<"target">;
579
+ target: z.ZodObject<{
580
+ x: z.ZodNumber;
581
+ y: z.ZodNumber;
582
+ z: z.ZodNumber;
583
+ }, z.core.$strip>;
584
+ }, z.core.$strict>, z.ZodObject<{
585
+ mode: z.ZodLiteral<"fixed">;
586
+ yawInDegrees: z.ZodNumber;
587
+ pitchInDegrees: z.ZodNumber;
588
+ }, z.core.$strict>], "mode">>;
589
+ followsFloor: z.ZodOptional<z.ZodBoolean>;
590
+ holdInSeconds: z.ZodOptional<z.ZodNumber>;
591
+ }, z.core.$strict>;
592
+ export type PluginWalkthroughKeyframePatch = z.infer<typeof PluginWalkthroughKeyframePatch>;
593
+ /**
594
+ * A camera move for {@linkcode PluginPresentationWalkthroughsApi.createFromPreset}:
595
+ * `orbit` (circle the subject facing its middle), `flyOver` (pass above it
596
+ * looking ahead and down), `pushIn` / `pullBack` (move toward / away from it),
597
+ * `rise` (crane up from eye level).
598
+ */
599
+ export declare const PluginWalkthroughPresetKind: z.ZodEnum<{
600
+ orbit: "orbit";
601
+ flyOver: "flyOver";
602
+ pushIn: "pushIn";
603
+ pullBack: "pullBack";
604
+ rise: "rise";
605
+ }>;
606
+ export type PluginWalkthroughPresetKind = z.infer<typeof PluginWalkthroughPresetKind>;
607
+ /**
608
+ * The camera move a preset walkthrough was made from.
609
+ *
610
+ * | Property | Type | Description |
611
+ * |---|---|---|
612
+ * | `kind` | {@linkcode PluginWalkthroughPresetKind} | The move |
613
+ * | `distance` | `number` | Camera distance, as a multiple of the distance at which the subject just fits in view |
614
+ * | `heightInDegrees` | `number` | Camera height, in degrees above level seen from the subject's middle |
615
+ * | `isClockwise` | `boolean` | Orbits only: goes round clockwise seen from above |
616
+ */
617
+ export declare const PluginWalkthroughPreset: z.ZodObject<{
618
+ kind: z.ZodEnum<{
619
+ orbit: "orbit";
620
+ flyOver: "flyOver";
621
+ pushIn: "pushIn";
622
+ pullBack: "pullBack";
623
+ rise: "rise";
624
+ }>;
625
+ distance: z.ZodNumber;
626
+ heightInDegrees: z.ZodNumber;
627
+ isClockwise: z.ZodBoolean;
628
+ }, z.core.$strip>;
629
+ export type PluginWalkthroughPreset = z.infer<typeof PluginWalkthroughPreset>;
630
+ /**
631
+ * A walkthrough.
632
+ *
633
+ * | Property | Type | Description |
634
+ * |---|---|---|
635
+ * | `walkthroughId` | `string` | The walkthrough's id |
636
+ * | `name` | `string` | Its name |
637
+ * | `keyframes` | {@linkcode PluginWalkthroughKeyframe}`[]` | Its keyframes, in order |
638
+ * | `isLoop` | `boolean` | The path returns from the last keyframe to the first |
639
+ * | `isRepeating` | `boolean` | Playback starts again when it reaches the end |
640
+ * | `speed` | `number` | Travel speed, `babylon` units per second |
641
+ * | `durationInSeconds` | `number` | How long playback takes, including easing and holds |
642
+ * | `pathLength` | `number` | Length of the path, `babylon` units |
643
+ * | `eyeHeight` | `number` | Eye height above the floor for floor-following keyframes, `babylon` units |
644
+ * | `preset` | {@linkcode PluginWalkthroughPreset} `\| null` | The camera move it was made from, while it is still a preset |
645
+ */
646
+ export declare const PluginWalkthrough: z.ZodObject<{
647
+ walkthroughId: z.ZodString;
648
+ name: z.ZodString;
649
+ keyframes: z.ZodArray<z.ZodObject<{
650
+ keyframeId: z.ZodString;
651
+ eye: z.ZodObject<{
652
+ x: z.ZodNumber;
653
+ y: z.ZodNumber;
654
+ z: z.ZodNumber;
655
+ }, z.core.$strip>;
656
+ look: z.ZodDiscriminatedUnion<[z.ZodObject<{
657
+ mode: z.ZodLiteral<"path">;
658
+ }, z.core.$strict>, z.ZodObject<{
659
+ mode: z.ZodLiteral<"target">;
660
+ target: z.ZodObject<{
661
+ x: z.ZodNumber;
662
+ y: z.ZodNumber;
663
+ z: z.ZodNumber;
664
+ }, z.core.$strip>;
665
+ }, z.core.$strict>, z.ZodObject<{
666
+ mode: z.ZodLiteral<"fixed">;
667
+ yawInDegrees: z.ZodNumber;
668
+ pitchInDegrees: z.ZodNumber;
669
+ }, z.core.$strict>], "mode">;
670
+ followsFloor: z.ZodBoolean;
671
+ holdInSeconds: z.ZodNumber;
672
+ }, z.core.$strip>>;
673
+ isLoop: z.ZodBoolean;
674
+ isRepeating: z.ZodBoolean;
675
+ speed: z.ZodNumber;
676
+ durationInSeconds: z.ZodNumber;
677
+ pathLength: z.ZodNumber;
678
+ eyeHeight: z.ZodNumber;
679
+ preset: z.ZodNullable<z.ZodObject<{
680
+ kind: z.ZodEnum<{
681
+ orbit: "orbit";
682
+ flyOver: "flyOver";
683
+ pushIn: "pushIn";
684
+ pullBack: "pullBack";
685
+ rise: "rise";
686
+ }>;
687
+ distance: z.ZodNumber;
688
+ heightInDegrees: z.ZodNumber;
689
+ isClockwise: z.ZodBoolean;
690
+ }, z.core.$strip>>;
691
+ }, z.core.$strip>;
692
+ export type PluginWalkthrough = z.infer<typeof PluginWalkthrough>;
693
+ /**
694
+ * Result of {@linkcode PluginPresentationWalkthroughsApi.list}.
695
+ */
696
+ export declare const PluginWalkthroughsListResult: z.ZodObject<{
697
+ walkthroughs: z.ZodArray<z.ZodObject<{
698
+ walkthroughId: z.ZodString;
699
+ name: z.ZodString;
700
+ keyframes: z.ZodArray<z.ZodObject<{
701
+ keyframeId: z.ZodString;
702
+ eye: z.ZodObject<{
703
+ x: z.ZodNumber;
704
+ y: z.ZodNumber;
705
+ z: z.ZodNumber;
706
+ }, z.core.$strip>;
707
+ look: z.ZodDiscriminatedUnion<[z.ZodObject<{
708
+ mode: z.ZodLiteral<"path">;
709
+ }, z.core.$strict>, z.ZodObject<{
710
+ mode: z.ZodLiteral<"target">;
711
+ target: z.ZodObject<{
712
+ x: z.ZodNumber;
713
+ y: z.ZodNumber;
714
+ z: z.ZodNumber;
715
+ }, z.core.$strip>;
716
+ }, z.core.$strict>, z.ZodObject<{
717
+ mode: z.ZodLiteral<"fixed">;
718
+ yawInDegrees: z.ZodNumber;
719
+ pitchInDegrees: z.ZodNumber;
720
+ }, z.core.$strict>], "mode">;
721
+ followsFloor: z.ZodBoolean;
722
+ holdInSeconds: z.ZodNumber;
723
+ }, z.core.$strip>>;
724
+ isLoop: z.ZodBoolean;
725
+ isRepeating: z.ZodBoolean;
726
+ speed: z.ZodNumber;
727
+ durationInSeconds: z.ZodNumber;
728
+ pathLength: z.ZodNumber;
729
+ eyeHeight: z.ZodNumber;
730
+ preset: z.ZodNullable<z.ZodObject<{
731
+ kind: z.ZodEnum<{
732
+ orbit: "orbit";
733
+ flyOver: "flyOver";
734
+ pushIn: "pushIn";
735
+ pullBack: "pullBack";
736
+ rise: "rise";
737
+ }>;
738
+ distance: z.ZodNumber;
739
+ heightInDegrees: z.ZodNumber;
740
+ isClockwise: z.ZodBoolean;
741
+ }, z.core.$strip>>;
742
+ }, z.core.$strip>>;
743
+ }, z.core.$strip>;
744
+ export type PluginWalkthroughsListResult = z.infer<typeof PluginWalkthroughsListResult>;
745
+ /**
746
+ * Options for {@linkcode PluginPresentationWalkthroughsApi.create}.
747
+ *
748
+ * | Property | Type | Description |
749
+ * |---|---|---|
750
+ * | `name` | `string \| undefined` | Its name (default "Walkthrough N") |
751
+ * | `isLoop` | `boolean \| undefined` | Return from the last keyframe to the first (default `false`; needs 3 keyframes) |
752
+ * | `isRepeating` | `boolean \| undefined` | Play again from the start at the end (default `false`) |
753
+ * | `speed` | `number \| undefined` | Travel speed, `babylon` units per second (default 1 m/s) |
754
+ * | `durationInSeconds` | `number \| undefined` | Take this long instead; sets the speed. Give `speed` or this, not both |
755
+ */
756
+ export declare const PluginWalkthroughCreateOptions: z.ZodObject<{
757
+ name: z.ZodOptional<z.ZodString>;
758
+ isLoop: z.ZodOptional<z.ZodBoolean>;
759
+ isRepeating: z.ZodOptional<z.ZodBoolean>;
760
+ speed: z.ZodOptional<z.ZodNumber>;
761
+ durationInSeconds: z.ZodOptional<z.ZodNumber>;
762
+ }, z.core.$strict>;
763
+ export type PluginWalkthroughCreateOptions = z.infer<typeof PluginWalkthroughCreateOptions>;
764
+ /**
765
+ * Arguments for {@linkcode PluginPresentationWalkthroughsApi.create}.
766
+ */
767
+ export declare const PluginWalkthroughCreateArgs: z.ZodObject<{
768
+ keyframes: z.ZodArray<z.ZodObject<{
769
+ eye: z.ZodObject<{
770
+ x: z.ZodNumber;
771
+ y: z.ZodNumber;
772
+ z: z.ZodNumber;
773
+ }, z.core.$strip>;
774
+ look: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
775
+ mode: z.ZodLiteral<"path">;
776
+ }, z.core.$strict>, z.ZodObject<{
777
+ mode: z.ZodLiteral<"target">;
778
+ target: z.ZodObject<{
779
+ x: z.ZodNumber;
780
+ y: z.ZodNumber;
781
+ z: z.ZodNumber;
782
+ }, z.core.$strip>;
783
+ }, z.core.$strict>, z.ZodObject<{
784
+ mode: z.ZodLiteral<"fixed">;
785
+ yawInDegrees: z.ZodNumber;
786
+ pitchInDegrees: z.ZodNumber;
787
+ }, z.core.$strict>], "mode">>;
788
+ followsFloor: z.ZodOptional<z.ZodBoolean>;
789
+ holdInSeconds: z.ZodOptional<z.ZodNumber>;
790
+ }, z.core.$strict>>;
791
+ options: z.ZodOptional<z.ZodObject<{
792
+ name: z.ZodOptional<z.ZodString>;
793
+ isLoop: z.ZodOptional<z.ZodBoolean>;
794
+ isRepeating: z.ZodOptional<z.ZodBoolean>;
795
+ speed: z.ZodOptional<z.ZodNumber>;
796
+ durationInSeconds: z.ZodOptional<z.ZodNumber>;
797
+ }, z.core.$strict>>;
798
+ }, z.core.$strip>;
799
+ export type PluginWalkthroughCreateArgs = z.infer<typeof PluginWalkthroughCreateArgs>;
800
+ /**
801
+ * Options for {@linkcode PluginPresentationWalkthroughsApi.createFromPoints}: those of
802
+ * {@linkcode PluginWalkthroughCreateOptions}, plus:
803
+ *
804
+ * | Property | Type | Description |
805
+ * |---|---|---|
806
+ * | `lookAt` | `{ x, y, z } \| undefined` | Look at this point the whole way (default: ahead along the path) |
807
+ */
808
+ export declare const PluginWalkthroughCreateFromPointsOptions: z.ZodObject<{
809
+ lookAt: z.ZodOptional<z.ZodObject<{
810
+ x: z.ZodNumber;
811
+ y: z.ZodNumber;
812
+ z: z.ZodNumber;
813
+ }, z.core.$strip>>;
814
+ name: z.ZodOptional<z.ZodString>;
815
+ isLoop: z.ZodOptional<z.ZodBoolean>;
816
+ isRepeating: z.ZodOptional<z.ZodBoolean>;
817
+ speed: z.ZodOptional<z.ZodNumber>;
818
+ durationInSeconds: z.ZodOptional<z.ZodNumber>;
819
+ }, z.core.$strict>;
820
+ export type PluginWalkthroughCreateFromPointsOptions = z.infer<typeof PluginWalkthroughCreateFromPointsOptions>;
821
+ /**
822
+ * Arguments for {@linkcode PluginPresentationWalkthroughsApi.createFromPoints}.
823
+ */
824
+ export declare const PluginWalkthroughCreateFromPointsArgs: z.ZodObject<{
825
+ points: z.ZodArray<z.ZodObject<{
826
+ x: z.ZodNumber;
827
+ y: z.ZodNumber;
828
+ z: z.ZodNumber;
829
+ }, z.core.$strip>>;
830
+ options: z.ZodOptional<z.ZodObject<{
831
+ lookAt: z.ZodOptional<z.ZodObject<{
832
+ x: z.ZodNumber;
833
+ y: z.ZodNumber;
834
+ z: z.ZodNumber;
835
+ }, z.core.$strip>>;
836
+ name: z.ZodOptional<z.ZodString>;
837
+ isLoop: z.ZodOptional<z.ZodBoolean>;
838
+ isRepeating: z.ZodOptional<z.ZodBoolean>;
839
+ speed: z.ZodOptional<z.ZodNumber>;
840
+ durationInSeconds: z.ZodOptional<z.ZodNumber>;
841
+ }, z.core.$strict>>;
842
+ }, z.core.$strip>;
843
+ export type PluginWalkthroughCreateFromPointsArgs = z.infer<typeof PluginWalkthroughCreateFromPointsArgs>;
844
+ /**
845
+ * Options for {@linkcode PluginPresentationWalkthroughsApi.createFromPreset}.
846
+ *
847
+ * | Property | Type | Description |
848
+ * |---|---|---|
849
+ * | `subject` | {@linkcode ComponentHandle}`[] \| undefined` | What to frame (default: the selection, else the visible model without terrain) |
850
+ * | `distance` | `number \| undefined` | 0.8 to 3 times the distance at which the subject just fits (default per move) |
851
+ * | `heightInDegrees` | `number \| undefined` | 0 to 75 degrees above level (default per move) |
852
+ * | `isClockwise` | `boolean \| undefined` | Orbits only: go round clockwise seen from above (default `false`) |
853
+ * | `durationInSeconds` | `number \| undefined` | How long the move takes (default per move: orbit 24, fly over 12, others 8) |
854
+ * | `name` | `string \| undefined` | Its name (default the move's name and a number) |
855
+ * | `isRepeating` | `boolean \| undefined` | Play again from the start at the end (default `false`) |
856
+ */
857
+ export declare const PluginWalkthroughCreateFromPresetOptions: z.ZodObject<{
858
+ subject: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<ComponentHandle, string>>>>;
859
+ distance: z.ZodOptional<z.ZodNumber>;
860
+ heightInDegrees: z.ZodOptional<z.ZodNumber>;
861
+ isClockwise: z.ZodOptional<z.ZodBoolean>;
862
+ durationInSeconds: z.ZodOptional<z.ZodNumber>;
863
+ name: z.ZodOptional<z.ZodString>;
864
+ isRepeating: z.ZodOptional<z.ZodBoolean>;
865
+ }, z.core.$strict>;
866
+ export type PluginWalkthroughCreateFromPresetOptions = z.infer<typeof PluginWalkthroughCreateFromPresetOptions>;
867
+ /**
868
+ * Arguments for {@linkcode PluginPresentationWalkthroughsApi.createFromPreset}.
869
+ */
870
+ export declare const PluginWalkthroughCreateFromPresetArgs: z.ZodObject<{
871
+ kind: z.ZodEnum<{
872
+ orbit: "orbit";
873
+ flyOver: "flyOver";
874
+ pushIn: "pushIn";
875
+ pullBack: "pullBack";
876
+ rise: "rise";
877
+ }>;
878
+ options: z.ZodOptional<z.ZodObject<{
879
+ subject: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<ComponentHandle, string>>>>;
880
+ distance: z.ZodOptional<z.ZodNumber>;
881
+ heightInDegrees: z.ZodOptional<z.ZodNumber>;
882
+ isClockwise: z.ZodOptional<z.ZodBoolean>;
883
+ durationInSeconds: z.ZodOptional<z.ZodNumber>;
884
+ name: z.ZodOptional<z.ZodString>;
885
+ isRepeating: z.ZodOptional<z.ZodBoolean>;
886
+ }, z.core.$strict>>;
887
+ }, z.core.$strip>;
888
+ export type PluginWalkthroughCreateFromPresetArgs = z.infer<typeof PluginWalkthroughCreateFromPresetArgs>;
889
+ /**
890
+ * The fields to change in {@linkcode PluginPresentationWalkthroughsApi.update};
891
+ * omitted fields keep their value.
892
+ *
893
+ * | Property | Type | Description |
894
+ * |---|---|---|
895
+ * | `name` | `string \| undefined` | New name |
896
+ * | `isLoop` | `boolean \| undefined` | Return from the last keyframe to the first (needs 3 keyframes); makes a preset ordinary |
897
+ * | `isRepeating` | `boolean \| undefined` | Play again from the start at the end |
898
+ * | `speed` | `number \| undefined` | Travel speed, `babylon` units per second |
899
+ * | `durationInSeconds` | `number \| undefined` | Take this long; sets the speed. Give `speed` or this, not both |
900
+ * | `preset` | `{ distance?, heightInDegrees?, isClockwise? } \| undefined` | A preset walkthrough's move settings; its keyframes are made again |
901
+ */
902
+ export declare const PluginWalkthroughPatch: z.ZodObject<{
903
+ name: z.ZodOptional<z.ZodString>;
904
+ isLoop: z.ZodOptional<z.ZodBoolean>;
905
+ isRepeating: z.ZodOptional<z.ZodBoolean>;
906
+ speed: z.ZodOptional<z.ZodNumber>;
907
+ durationInSeconds: z.ZodOptional<z.ZodNumber>;
908
+ preset: z.ZodOptional<z.ZodObject<{
909
+ distance: z.ZodOptional<z.ZodNumber>;
910
+ heightInDegrees: z.ZodOptional<z.ZodNumber>;
911
+ isClockwise: z.ZodOptional<z.ZodBoolean>;
912
+ }, z.core.$strict>>;
913
+ }, z.core.$strict>;
914
+ export type PluginWalkthroughPatch = z.infer<typeof PluginWalkthroughPatch>;
915
+ /**
916
+ * Arguments for {@linkcode PluginPresentationWalkthroughsApi.update}.
917
+ */
918
+ export declare const PluginWalkthroughUpdateArgs: z.ZodObject<{
919
+ walkthroughId: z.ZodString;
920
+ patch: z.ZodObject<{
921
+ name: z.ZodOptional<z.ZodString>;
922
+ isLoop: z.ZodOptional<z.ZodBoolean>;
923
+ isRepeating: z.ZodOptional<z.ZodBoolean>;
924
+ speed: z.ZodOptional<z.ZodNumber>;
925
+ durationInSeconds: z.ZodOptional<z.ZodNumber>;
926
+ preset: z.ZodOptional<z.ZodObject<{
927
+ distance: z.ZodOptional<z.ZodNumber>;
928
+ heightInDegrees: z.ZodOptional<z.ZodNumber>;
929
+ isClockwise: z.ZodOptional<z.ZodBoolean>;
930
+ }, z.core.$strict>>;
931
+ }, z.core.$strict>;
932
+ }, z.core.$strip>;
933
+ export type PluginWalkthroughUpdateArgs = z.infer<typeof PluginWalkthroughUpdateArgs>;
934
+ /**
935
+ * Arguments for {@linkcode PluginPresentationWalkthroughsApi.createKeyframe}.
936
+ */
937
+ export declare const PluginWalkthroughCreateKeyframeArgs: z.ZodObject<{
938
+ walkthroughId: z.ZodString;
939
+ keyframe: z.ZodObject<{
940
+ eye: z.ZodObject<{
941
+ x: z.ZodNumber;
942
+ y: z.ZodNumber;
943
+ z: z.ZodNumber;
944
+ }, z.core.$strip>;
945
+ look: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
946
+ mode: z.ZodLiteral<"path">;
947
+ }, z.core.$strict>, z.ZodObject<{
948
+ mode: z.ZodLiteral<"target">;
949
+ target: z.ZodObject<{
950
+ x: z.ZodNumber;
951
+ y: z.ZodNumber;
952
+ z: z.ZodNumber;
953
+ }, z.core.$strip>;
954
+ }, z.core.$strict>, z.ZodObject<{
955
+ mode: z.ZodLiteral<"fixed">;
956
+ yawInDegrees: z.ZodNumber;
957
+ pitchInDegrees: z.ZodNumber;
958
+ }, z.core.$strict>], "mode">>;
959
+ followsFloor: z.ZodOptional<z.ZodBoolean>;
960
+ holdInSeconds: z.ZodOptional<z.ZodNumber>;
961
+ }, z.core.$strict>;
962
+ index: z.ZodOptional<z.ZodNumber>;
963
+ }, z.core.$strip>;
964
+ export type PluginWalkthroughCreateKeyframeArgs = z.infer<typeof PluginWalkthroughCreateKeyframeArgs>;
965
+ /**
966
+ * Arguments for {@linkcode PluginPresentationWalkthroughsApi.updateKeyframe}.
967
+ */
968
+ export declare const PluginWalkthroughUpdateKeyframeArgs: z.ZodObject<{
969
+ walkthroughId: z.ZodString;
970
+ keyframeId: z.ZodString;
971
+ patch: z.ZodObject<{
972
+ eye: z.ZodOptional<z.ZodObject<{
973
+ x: z.ZodNumber;
974
+ y: z.ZodNumber;
975
+ z: z.ZodNumber;
976
+ }, z.core.$strip>>;
977
+ look: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
978
+ mode: z.ZodLiteral<"path">;
979
+ }, z.core.$strict>, z.ZodObject<{
980
+ mode: z.ZodLiteral<"target">;
981
+ target: z.ZodObject<{
982
+ x: z.ZodNumber;
983
+ y: z.ZodNumber;
984
+ z: z.ZodNumber;
985
+ }, z.core.$strip>;
986
+ }, z.core.$strict>, z.ZodObject<{
987
+ mode: z.ZodLiteral<"fixed">;
988
+ yawInDegrees: z.ZodNumber;
989
+ pitchInDegrees: z.ZodNumber;
990
+ }, z.core.$strict>], "mode">>;
991
+ followsFloor: z.ZodOptional<z.ZodBoolean>;
992
+ holdInSeconds: z.ZodOptional<z.ZodNumber>;
993
+ }, z.core.$strict>;
994
+ }, z.core.$strip>;
995
+ export type PluginWalkthroughUpdateKeyframeArgs = z.infer<typeof PluginWalkthroughUpdateKeyframeArgs>;
996
+ /**
997
+ * Arguments for {@linkcode PluginPresentationWalkthroughsApi.deleteKeyframe}.
998
+ */
999
+ export declare const PluginWalkthroughDeleteKeyframeArgs: z.ZodObject<{
1000
+ walkthroughId: z.ZodString;
1001
+ keyframeId: z.ZodString;
1002
+ }, z.core.$strip>;
1003
+ export type PluginWalkthroughDeleteKeyframeArgs = z.infer<typeof PluginWalkthroughDeleteKeyframeArgs>;
1004
+ /**
1005
+ * Arguments for {@linkcode PluginPresentationWalkthroughsApi.reorderKeyframe}.
1006
+ */
1007
+ export declare const PluginWalkthroughReorderKeyframeArgs: z.ZodObject<{
1008
+ walkthroughId: z.ZodString;
1009
+ keyframeId: z.ZodString;
1010
+ index: z.ZodNumber;
1011
+ }, z.core.$strip>;
1012
+ export type PluginWalkthroughReorderKeyframeArgs = z.infer<typeof PluginWalkthroughReorderKeyframeArgs>;
1013
+ /**
1014
+ * Where the camera is at one moment — an item of
1015
+ * {@linkcode PluginWalkthroughSampleResult}.
1016
+ *
1017
+ * | Property | Type | Description |
1018
+ * |---|---|---|
1019
+ * | `timeInSeconds` | `number` | The moment (clamped to the walkthrough's duration) |
1020
+ * | `eye` | `{ x, y, z }` | Camera position |
1021
+ * | `direction` | `{ x, y, z }` | Unit view direction |
1022
+ * | `yawInDegrees` | `number` | View direction, degrees clockwise from +z seen from above |
1023
+ * | `pitchInDegrees` | `number` | View direction, degrees above level |
1024
+ */
1025
+ export declare const PluginWalkthroughSample: z.ZodObject<{
1026
+ timeInSeconds: z.ZodNumber;
1027
+ eye: z.ZodObject<{
1028
+ x: z.ZodNumber;
1029
+ y: z.ZodNumber;
1030
+ z: z.ZodNumber;
1031
+ }, z.core.$strip>;
1032
+ direction: z.ZodObject<{
1033
+ x: z.ZodNumber;
1034
+ y: z.ZodNumber;
1035
+ z: z.ZodNumber;
1036
+ }, z.core.$strip>;
1037
+ yawInDegrees: z.ZodNumber;
1038
+ pitchInDegrees: z.ZodNumber;
1039
+ }, z.core.$strip>;
1040
+ export type PluginWalkthroughSample = z.infer<typeof PluginWalkthroughSample>;
1041
+ /**
1042
+ * Arguments for {@linkcode PluginPresentationWalkthroughsApi.sample}.
1043
+ */
1044
+ export declare const PluginWalkthroughSampleArgs: z.ZodObject<{
1045
+ walkthroughId: z.ZodString;
1046
+ timesInSeconds: z.ZodArray<z.ZodNumber>;
1047
+ }, z.core.$strip>;
1048
+ export type PluginWalkthroughSampleArgs = z.infer<typeof PluginWalkthroughSampleArgs>;
1049
+ /**
1050
+ * Result of {@linkcode PluginPresentationWalkthroughsApi.sample}.
1051
+ */
1052
+ export declare const PluginWalkthroughSampleResult: z.ZodObject<{
1053
+ samples: z.ZodArray<z.ZodObject<{
1054
+ timeInSeconds: z.ZodNumber;
1055
+ eye: z.ZodObject<{
1056
+ x: z.ZodNumber;
1057
+ y: z.ZodNumber;
1058
+ z: z.ZodNumber;
1059
+ }, z.core.$strip>;
1060
+ direction: z.ZodObject<{
1061
+ x: z.ZodNumber;
1062
+ y: z.ZodNumber;
1063
+ z: z.ZodNumber;
1064
+ }, z.core.$strip>;
1065
+ yawInDegrees: z.ZodNumber;
1066
+ pitchInDegrees: z.ZodNumber;
1067
+ }, z.core.$strip>>;
1068
+ }, z.core.$strip>;
1069
+ export type PluginWalkthroughSampleResult = z.infer<typeof PluginWalkthroughSampleResult>;
1070
+ /**
1071
+ * What is wrong at a walkthrough issue: `throughGeometry` — the camera passes
1072
+ * through the model (a wall, glazing, a column, a slab, a roof or other solid
1073
+ * that walking would stop at).
1074
+ */
1075
+ export declare const PluginWalkthroughIssueKind: z.ZodEnum<{
1076
+ throughGeometry: "throughGeometry";
1077
+ }>;
1078
+ export type PluginWalkthroughIssueKind = z.infer<typeof PluginWalkthroughIssueKind>;
1079
+ /**
1080
+ * A place where a walkthrough's camera passes through the model — an item of
1081
+ * {@linkcode PluginWalkthroughListIssuesResult}.
1082
+ *
1083
+ * | Property | Type | Description |
1084
+ * |---|---|---|
1085
+ * | `kind` | {@linkcode PluginWalkthroughIssueKind} | What is wrong |
1086
+ * | `timeInSeconds` | `number` | When the camera reaches it during playback |
1087
+ * | `point` | `{ x, y, z }` | Where the path enters the geometry |
1088
+ * | `componentId` | `string \| null` | The component passed through, when it is one |
1089
+ */
1090
+ export declare const PluginWalkthroughIssue: z.ZodObject<{
1091
+ kind: z.ZodEnum<{
1092
+ throughGeometry: "throughGeometry";
1093
+ }>;
1094
+ timeInSeconds: z.ZodNumber;
1095
+ point: z.ZodObject<{
1096
+ x: z.ZodNumber;
1097
+ y: z.ZodNumber;
1098
+ z: z.ZodNumber;
1099
+ }, z.core.$strip>;
1100
+ componentId: z.ZodNullable<z.ZodString>;
1101
+ }, z.core.$strip>;
1102
+ export type PluginWalkthroughIssue = z.infer<typeof PluginWalkthroughIssue>;
1103
+ /**
1104
+ * Result of {@linkcode PluginPresentationWalkthroughsApi.listIssues}.
1105
+ */
1106
+ export declare const PluginWalkthroughListIssuesResult: z.ZodObject<{
1107
+ issues: z.ZodArray<z.ZodObject<{
1108
+ kind: z.ZodEnum<{
1109
+ throughGeometry: "throughGeometry";
1110
+ }>;
1111
+ timeInSeconds: z.ZodNumber;
1112
+ point: z.ZodObject<{
1113
+ x: z.ZodNumber;
1114
+ y: z.ZodNumber;
1115
+ z: z.ZodNumber;
1116
+ }, z.core.$strip>;
1117
+ componentId: z.ZodNullable<z.ZodString>;
1118
+ }, z.core.$strip>>;
1119
+ }, z.core.$strip>;
1120
+ export type PluginWalkthroughListIssuesResult = z.infer<typeof PluginWalkthroughListIssuesResult>;
1121
+ /**
1122
+ * Options for {@linkcode PluginPresentationWalkthroughsApi.capture}.
1123
+ *
1124
+ * | Property | Type | Description |
1125
+ * |---|---|---|
1126
+ * | `count` | `number \| undefined` | Frames at evenly spaced moments, first to last, 1 to 12 (default 6) |
1127
+ * | `timesInSeconds` | `number[] \| undefined` | Capture these 1 to 12 moments instead. Give `count` or this, not both |
1128
+ * | `width` | `number \| undefined` | Width of the whole image in pixels, 256 to 2048 (default 1536) |
1129
+ * | `format` | `"png" \| "jpeg" \| undefined` | Image format (default `"jpeg"`) |
1130
+ */
1131
+ export declare const PluginWalkthroughCaptureOptions: z.ZodObject<{
1132
+ count: z.ZodOptional<z.ZodNumber>;
1133
+ timesInSeconds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
1134
+ width: z.ZodOptional<z.ZodNumber>;
1135
+ format: z.ZodOptional<z.ZodEnum<{
1136
+ png: "png";
1137
+ jpeg: "jpeg";
1138
+ }>>;
1139
+ }, z.core.$strict>;
1140
+ export type PluginWalkthroughCaptureOptions = z.infer<typeof PluginWalkthroughCaptureOptions>;
1141
+ /**
1142
+ * Arguments for {@linkcode PluginPresentationWalkthroughsApi.capture}.
1143
+ */
1144
+ export declare const PluginWalkthroughCaptureArgs: z.ZodObject<{
1145
+ walkthroughId: z.ZodString;
1146
+ options: z.ZodOptional<z.ZodObject<{
1147
+ count: z.ZodOptional<z.ZodNumber>;
1148
+ timesInSeconds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
1149
+ width: z.ZodOptional<z.ZodNumber>;
1150
+ format: z.ZodOptional<z.ZodEnum<{
1151
+ png: "png";
1152
+ jpeg: "jpeg";
1153
+ }>>;
1154
+ }, z.core.$strict>>;
1155
+ }, z.core.$strip>;
1156
+ export type PluginWalkthroughCaptureArgs = z.infer<typeof PluginWalkthroughCaptureArgs>;
1157
+ /**
1158
+ * Result of {@linkcode PluginPresentationWalkthroughsApi.capture}.
1159
+ *
1160
+ * | Property | Type | Description |
1161
+ * |---|---|---|
1162
+ * | `image` | `string` | The contact sheet as a base64 data URL |
1163
+ * | `frames` | `{ timeInSeconds }[]` | The moment of each frame, left to right and top to bottom |
1164
+ */
1165
+ export declare const PluginWalkthroughCaptureResult: z.ZodObject<{
1166
+ image: z.ZodString;
1167
+ frames: z.ZodArray<z.ZodObject<{
1168
+ timeInSeconds: z.ZodNumber;
1169
+ }, z.core.$strip>>;
1170
+ }, z.core.$strip>;
1171
+ export type PluginWalkthroughCaptureResult = z.infer<typeof PluginWalkthroughCaptureResult>;
1172
+ /**
1173
+ * Options for {@linkcode PluginPresentationWalkthroughsApi.start}.
1174
+ *
1175
+ * | Property | Type | Description |
1176
+ * |---|---|---|
1177
+ * | `fromTimeInSeconds` | `number \| undefined` | Start this far in (default 0) |
1178
+ */
1179
+ export declare const PluginWalkthroughStartOptions: z.ZodObject<{
1180
+ fromTimeInSeconds: z.ZodOptional<z.ZodNumber>;
1181
+ }, z.core.$strict>;
1182
+ export type PluginWalkthroughStartOptions = z.infer<typeof PluginWalkthroughStartOptions>;
1183
+ /**
1184
+ * Arguments for {@linkcode PluginPresentationWalkthroughsApi.start}.
1185
+ */
1186
+ export declare const PluginWalkthroughStartArgs: z.ZodObject<{
1187
+ walkthroughId: z.ZodString;
1188
+ options: z.ZodOptional<z.ZodObject<{
1189
+ fromTimeInSeconds: z.ZodOptional<z.ZodNumber>;
1190
+ }, z.core.$strict>>;
1191
+ }, z.core.$strip>;
1192
+ export type PluginWalkthroughStartArgs = z.infer<typeof PluginWalkthroughStartArgs>;
1193
+ /**
1194
+ * The playback state — result of {@linkcode PluginPresentationWalkthroughsApi.start},
1195
+ * {@linkcode PluginPresentationWalkthroughsApi.stop} and
1196
+ * {@linkcode PluginPresentationWalkthroughsApi.getState}.
1197
+ *
1198
+ * | Property | Type | Description |
1199
+ * |---|---|---|
1200
+ * | `status` | `"stopped" \| "playing" \| "paused"` | Playback status |
1201
+ * | `walkthroughId` | `string \| null` | The walkthrough playing or paused (`null` when stopped) |
1202
+ * | `timeInSeconds` | `number` | How far through it |
1203
+ * | `durationInSeconds` | `number` | Its duration (0 when stopped) |
1204
+ * | `isRecording` | `boolean` | Whether playback is being recorded by an export |
1205
+ */
1206
+ export declare const PluginWalkthroughPlaybackState: z.ZodObject<{
1207
+ status: z.ZodEnum<{
1208
+ stopped: "stopped";
1209
+ playing: "playing";
1210
+ paused: "paused";
1211
+ }>;
1212
+ walkthroughId: z.ZodNullable<z.ZodString>;
1213
+ timeInSeconds: z.ZodNumber;
1214
+ durationInSeconds: z.ZodNumber;
1215
+ isRecording: z.ZodBoolean;
1216
+ }, z.core.$strip>;
1217
+ export type PluginWalkthroughPlaybackState = z.infer<typeof PluginWalkthroughPlaybackState>;
1218
+ /**
1219
+ * Options for {@linkcode PluginPresentationWalkthroughsApi.export}.
1220
+ *
1221
+ * | Property | Type | Description |
1222
+ * |---|---|---|
1223
+ * | `quality` | `"720p" \| "1080p" \| "4k" \| undefined` | Video size (default `"1080p"`) |
1224
+ * | `framesPerSecond` | `30 \| 60 \| undefined` | Frame rate (default 30) |
1225
+ */
1226
+ export declare const PluginWalkthroughExportOptions: z.ZodObject<{
1227
+ quality: z.ZodOptional<z.ZodEnum<{
1228
+ "720p": "720p";
1229
+ "1080p": "1080p";
1230
+ "4k": "4k";
1231
+ }>>;
1232
+ framesPerSecond: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<30>, z.ZodLiteral<60>]>>;
1233
+ }, z.core.$strict>;
1234
+ export type PluginWalkthroughExportOptions = z.infer<typeof PluginWalkthroughExportOptions>;
1235
+ /**
1236
+ * Arguments for {@linkcode PluginPresentationWalkthroughsApi.export}.
1237
+ */
1238
+ export declare const PluginWalkthroughExportArgs: z.ZodObject<{
1239
+ walkthroughId: z.ZodString;
1240
+ options: z.ZodOptional<z.ZodObject<{
1241
+ quality: z.ZodOptional<z.ZodEnum<{
1242
+ "720p": "720p";
1243
+ "1080p": "1080p";
1244
+ "4k": "4k";
1245
+ }>>;
1246
+ framesPerSecond: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<30>, z.ZodLiteral<60>]>>;
1247
+ }, z.core.$strict>>;
1248
+ }, z.core.$strip>;
1249
+ export type PluginWalkthroughExportArgs = z.infer<typeof PluginWalkthroughExportArgs>;
1250
+ /**
1251
+ * The status of a {@linkcode PluginWalkthroughExportJob}.
1252
+ */
1253
+ export declare const PluginWalkthroughExportJobStatus: z.ZodEnum<{
1254
+ failed: "failed";
1255
+ running: "running";
1256
+ queued: "queued";
1257
+ completed: "completed";
1258
+ cancelled: "cancelled";
1259
+ }>;
1260
+ export type PluginWalkthroughExportJobStatus = z.infer<typeof PluginWalkthroughExportJobStatus>;
1261
+ /**
1262
+ * What a completed export made.
1263
+ *
1264
+ * | Property | Type | Description |
1265
+ * |---|---|---|
1266
+ * | `shapeId` | `string` | The video shape on the Present canvas |
1267
+ * | `videoUrl` | `string \| null` | Where the uploaded video is stored |
1268
+ * | `width` / `height` | `number` | Video size in pixels |
1269
+ * | `mimeType` | `string` | Video type, e.g. `video/mp4` |
1270
+ * | `durationInSeconds` | `number` | Video length |
1271
+ */
1272
+ export declare const PluginWalkthroughExportResult: z.ZodObject<{
1273
+ shapeId: z.ZodString;
1274
+ videoUrl: z.ZodNullable<z.ZodString>;
1275
+ width: z.ZodNumber;
1276
+ height: z.ZodNumber;
1277
+ mimeType: z.ZodString;
1278
+ durationInSeconds: z.ZodNumber;
1279
+ }, z.core.$strip>;
1280
+ export type PluginWalkthroughExportResult = z.infer<typeof PluginWalkthroughExportResult>;
1281
+ /**
1282
+ * A walkthrough video export job.
1283
+ *
1284
+ * | Property | Type | Description |
1285
+ * |---|---|---|
1286
+ * | `jobId` | `string` | The job's id |
1287
+ * | `walkthroughId` | `string` | The walkthrough being exported |
1288
+ * | `status` | {@linkcode PluginWalkthroughExportJobStatus} | Where the job is |
1289
+ * | `createdAt` / `updatedAt` | `number` | Epoch milliseconds |
1290
+ * | `completedAt` | `number \| undefined` | When it completed, failed or was cancelled |
1291
+ * | `progress` | `number \| undefined` | 0 to 1 while running |
1292
+ * | `result` | {@linkcode PluginWalkthroughExportResult} `\| undefined` | What it made, once completed |
1293
+ * | `error` | `string \| undefined` | Why it failed |
1294
+ */
1295
+ export declare const PluginWalkthroughExportJob: z.ZodObject<{
1296
+ jobId: z.ZodString;
1297
+ walkthroughId: z.ZodString;
1298
+ status: z.ZodEnum<{
1299
+ failed: "failed";
1300
+ running: "running";
1301
+ queued: "queued";
1302
+ completed: "completed";
1303
+ cancelled: "cancelled";
1304
+ }>;
1305
+ createdAt: z.ZodNumber;
1306
+ updatedAt: z.ZodNumber;
1307
+ completedAt: z.ZodOptional<z.ZodNumber>;
1308
+ progress: z.ZodOptional<z.ZodNumber>;
1309
+ result: z.ZodOptional<z.ZodObject<{
1310
+ shapeId: z.ZodString;
1311
+ videoUrl: z.ZodNullable<z.ZodString>;
1312
+ width: z.ZodNumber;
1313
+ height: z.ZodNumber;
1314
+ mimeType: z.ZodString;
1315
+ durationInSeconds: z.ZodNumber;
1316
+ }, z.core.$strip>>;
1317
+ error: z.ZodOptional<z.ZodString>;
1318
+ }, z.core.$strip>;
1319
+ export type PluginWalkthroughExportJob = z.infer<typeof PluginWalkthroughExportJob>;
1320
+ /**
1321
+ * Result of {@linkcode PluginPresentationWalkthroughsApi.listJobs}.
1322
+ */
1323
+ export declare const PluginWalkthroughListJobsResult: z.ZodObject<{
1324
+ jobs: z.ZodArray<z.ZodObject<{
1325
+ jobId: z.ZodString;
1326
+ walkthroughId: z.ZodString;
1327
+ status: z.ZodEnum<{
1328
+ failed: "failed";
1329
+ running: "running";
1330
+ queued: "queued";
1331
+ completed: "completed";
1332
+ cancelled: "cancelled";
1333
+ }>;
1334
+ createdAt: z.ZodNumber;
1335
+ updatedAt: z.ZodNumber;
1336
+ completedAt: z.ZodOptional<z.ZodNumber>;
1337
+ progress: z.ZodOptional<z.ZodNumber>;
1338
+ result: z.ZodOptional<z.ZodObject<{
1339
+ shapeId: z.ZodString;
1340
+ videoUrl: z.ZodNullable<z.ZodString>;
1341
+ width: z.ZodNumber;
1342
+ height: z.ZodNumber;
1343
+ mimeType: z.ZodString;
1344
+ durationInSeconds: z.ZodNumber;
1345
+ }, z.core.$strip>>;
1346
+ error: z.ZodOptional<z.ZodString>;
1347
+ }, z.core.$strip>>;
1348
+ }, z.core.$strip>;
1349
+ export type PluginWalkthroughListJobsResult = z.infer<typeof PluginWalkthroughListJobsResult>;
1350
+ //# sourceMappingURL=walkthroughs.d.ts.map