@variantic/player 0.0.24 → 0.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/README.md +35 -3
  2. package/assembly.d.ts +4762 -0
  3. package/index.d.ts +2198 -0
  4. package/package.json +17 -10
  5. package/libs/packages/player/src/index.d.ts +0 -8
  6. package/libs/schemas/engine/src/index.d.ts +0 -4
  7. package/libs/schemas/engine/src/lib/documentation.d.ts +0 -9
  8. package/libs/schemas/engine/src/lib/engine.d.ts +0 -215
  9. package/libs/schemas/engine/src/lib/publication.d.ts +0 -82
  10. package/libs/schemas/engine/src/lib/studio.d.ts +0 -81
  11. package/libs/schemas/file-types/export-configuration/src/index.d.ts +0 -1
  12. package/libs/schemas/file-types/export-configuration/src/lib/export-configuration.d.ts +0 -10
  13. package/libs/schemas/file-types/vas/src/index.d.ts +0 -3
  14. package/libs/schemas/file-types/vas/src/lib/interaction.d.ts +0 -3
  15. package/libs/schemas/file-types/vas/src/lib/object-configuration.d.ts +0 -25
  16. package/libs/schemas/file-types/vas/src/lib/vas.d.ts +0 -612
  17. package/libs/schemas/library-api/src/index.d.ts +0 -1
  18. package/libs/schemas/library-api/src/lib/library-api.d.ts +0 -27
  19. package/libs/schemas/web-component/api/player/ar/src/index.d.ts +0 -1
  20. package/libs/schemas/web-component/api/player/ar/src/lib/ar.d.ts +0 -22
  21. package/libs/schemas/web-component/api/player/configuration/src/index.d.ts +0 -1
  22. package/libs/schemas/web-component/api/player/configuration/src/lib/configuration.d.ts +0 -27
  23. package/libs/schemas/web-component/api/player/documentation/src/index.d.ts +0 -1
  24. package/libs/schemas/web-component/api/player/documentation/src/lib/documentation.d.ts +0 -26
  25. package/libs/schemas/web-component/api/player/events/src/index.d.ts +0 -1
  26. package/libs/schemas/web-component/api/player/events/src/lib/events.d.ts +0 -19
  27. package/libs/schemas/web-component/api/player/integration-connector/src/index.d.ts +0 -1
  28. package/libs/schemas/web-component/api/player/integration-connector/src/lib/integration-connector.d.ts +0 -30
  29. package/libs/schemas/web-component/api/player/layout/src/index.d.ts +0 -1
  30. package/libs/schemas/web-component/api/player/layout/src/lib/layout.d.ts +0 -18
  31. package/libs/schemas/web-component/api/player/player/src/index.d.ts +0 -1
  32. package/libs/schemas/web-component/api/player/player/src/lib/player.d.ts +0 -46
  33. package/libs/schemas/web-component/api/player/snapshot/src/index.d.ts +0 -1
  34. package/libs/schemas/web-component/api/player/snapshot/src/lib/snapshot.d.ts +0 -29
  35. package/libs/schemas/web-component/api/player/viewer/src/index.d.ts +0 -1
  36. package/libs/schemas/web-component/api/player/viewer/src/lib/viewer.d.ts +0 -471
package/assembly.d.ts ADDED
@@ -0,0 +1,4762 @@
1
+ // Generated by dts-bundle-generator v9.5.1
2
+
3
+ type EventName = PropertyKey;
4
+ type DatalessEventNames<EventData> = {
5
+ [Key in keyof EventData]: EventData[Key] extends undefined ? Key : never;
6
+ }[keyof EventData];
7
+ declare const listenerAdded: unique symbol;
8
+ declare const listenerRemoved: unique symbol;
9
+ type OmnipresentEventData = {
10
+ [listenerAdded]: ListenerChangedData;
11
+ [listenerRemoved]: ListenerChangedData;
12
+ };
13
+ type DebugLogger<EventData, Name extends keyof EventData> = (type: string, debugName: string, eventName?: Name, eventData?: EventData[Name]) => void;
14
+ type DebugOptions<EventData> = {
15
+ /**
16
+ Define a name for the instance of Emittery to use when outputting debug data.
17
+
18
+ @default undefined
19
+
20
+ @example
21
+ ```
22
+ import Emittery from 'emittery';
23
+
24
+ Emittery.isDebugEnabled = true;
25
+
26
+ const emitter = new Emittery({debug: {name: 'myEmitter'}});
27
+
28
+ emitter.on('test', data => {
29
+ // …
30
+ });
31
+
32
+ emitter.emit('test');
33
+ //=> [16:43:20.417][emittery:subscribe][myEmitter] Event Name: test
34
+ // data: undefined
35
+ ```
36
+ */
37
+ readonly name: string;
38
+ /**
39
+ Toggle debug logging just for this instance.
40
+
41
+ @default false
42
+
43
+ @example
44
+ ```
45
+ import Emittery from 'emittery';
46
+
47
+ const emitter1 = new Emittery({debug: {name: 'emitter1', enabled: true}});
48
+ const emitter2 = new Emittery({debug: {name: 'emitter2'}});
49
+
50
+ emitter1.on('test', data => {
51
+ // …
52
+ });
53
+
54
+ emitter2.on('test', data => {
55
+ // …
56
+ });
57
+
58
+ emitter1.emit('test');
59
+ //=> [16:43:20.417][emittery:subscribe][emitter1] Event Name: test
60
+ // data: undefined
61
+
62
+ emitter2.emit('test');
63
+ ```
64
+ */
65
+ readonly enabled?: boolean;
66
+ /**
67
+ Function that handles debug data.
68
+
69
+ @default
70
+ ```
71
+ (type, debugName, eventName, eventData) => {
72
+ eventData = JSON.stringify(eventData);
73
+
74
+ if (typeof eventName === 'symbol' || typeof eventName === 'number') {
75
+ eventName = eventName.toString();
76
+ }
77
+
78
+ const currentTime = new Date();
79
+ const logTime = `${currentTime.getHours()}:${currentTime.getMinutes()}:${currentTime.getSeconds()}.${currentTime.getMilliseconds()}`;
80
+ console.log(`[${logTime}][emittery:${type}][${debugName}] Event Name: ${eventName}\n\tdata: ${eventData}`);
81
+ }
82
+ ```
83
+
84
+ @example
85
+ ```
86
+ import Emittery from 'emittery';
87
+
88
+ const myLogger = (type, debugName, eventName, eventData) => {
89
+ console.log(`[${type}]: ${eventName}`);
90
+ };
91
+
92
+ const emitter = new Emittery({
93
+ debug: {
94
+ name: 'myEmitter',
95
+ enabled: true,
96
+ logger: myLogger
97
+ }
98
+ });
99
+
100
+ emitter.on('test', data => {
101
+ // …
102
+ });
103
+
104
+ emitter.emit('test');
105
+ //=> [subscribe]: test
106
+ ```
107
+ */
108
+ readonly logger?: DebugLogger<EventData, keyof EventData>;
109
+ };
110
+ type Options<EventData> = {
111
+ readonly debug?: DebugOptions<EventData>;
112
+ };
113
+ type EmitteryOncePromise<T> = {
114
+ off(): void;
115
+ } & Promise<T>;
116
+ type UnsubscribeFunction = () => void;
117
+ type ListenerChangedData = {
118
+ /**
119
+ The listener that was added or removed.
120
+ */
121
+ listener: (eventData?: unknown) => (void | Promise<void>);
122
+ /**
123
+ The name of the event that was added or removed if `.on()` or `.off()` was used, or `undefined` if `.onAny()` or `.offAny()` was used.
124
+ */
125
+ eventName?: EventName;
126
+ };
127
+ declare class Emittery<EventData = Record<EventName, any>, // TODO: Use `unknown` instead of `any`.
128
+ AllEventData = EventData & OmnipresentEventData, DatalessEvents = DatalessEventNames<EventData>> {
129
+ /**
130
+ Toggle debug mode for all instances.
131
+
132
+ Default: `true` if the `DEBUG` environment variable is set to `emittery` or `*`, otherwise `false`.
133
+
134
+ @example
135
+ ```
136
+ import Emittery from 'emittery';
137
+
138
+ Emittery.isDebugEnabled = true;
139
+
140
+ const emitter1 = new Emittery({debug: {name: 'myEmitter1'}});
141
+ const emitter2 = new Emittery({debug: {name: 'myEmitter2'}});
142
+
143
+ emitter1.on('test', data => {
144
+ // …
145
+ });
146
+
147
+ emitter2.on('otherTest', data => {
148
+ // …
149
+ });
150
+
151
+ emitter1.emit('test');
152
+ //=> [16:43:20.417][emittery:subscribe][myEmitter1] Event Name: test
153
+ // data: undefined
154
+
155
+ emitter2.emit('otherTest');
156
+ //=> [16:43:20.417][emittery:subscribe][myEmitter2] Event Name: otherTest
157
+ // data: undefined
158
+ ```
159
+ */
160
+ static isDebugEnabled: boolean;
161
+ /**
162
+ Fires when an event listener was added.
163
+
164
+ An object with `listener` and `eventName` (if `on` or `off` was used) is provided as event data.
165
+
166
+ @example
167
+ ```
168
+ import Emittery from 'emittery';
169
+
170
+ const emitter = new Emittery();
171
+
172
+ emitter.on(Emittery.listenerAdded, ({listener, eventName}) => {
173
+ console.log(listener);
174
+ //=> data => {}
175
+
176
+ console.log(eventName);
177
+ //=> '🦄'
178
+ });
179
+
180
+ emitter.on('🦄', data => {
181
+ // Handle data
182
+ });
183
+ ```
184
+ */
185
+ static readonly listenerAdded: typeof listenerAdded;
186
+ /**
187
+ Fires when an event listener was removed.
188
+
189
+ An object with `listener` and `eventName` (if `on` or `off` was used) is provided as event data.
190
+
191
+ @example
192
+ ```
193
+ import Emittery from 'emittery';
194
+
195
+ const emitter = new Emittery();
196
+
197
+ const off = emitter.on('🦄', data => {
198
+ // Handle data
199
+ });
200
+
201
+ emitter.on(Emittery.listenerRemoved, ({listener, eventName}) => {
202
+ console.log(listener);
203
+ //=> data => {}
204
+
205
+ console.log(eventName);
206
+ //=> '🦄'
207
+ });
208
+
209
+ off();
210
+ ```
211
+ */
212
+ static readonly listenerRemoved: typeof listenerRemoved;
213
+ /**
214
+ In TypeScript, it returns a decorator which mixins `Emittery` as property `emitteryPropertyName` and `methodNames`, or all `Emittery` methods if `methodNames` is not defined, into the target class.
215
+
216
+ @example
217
+ ```
218
+ import Emittery from 'emittery';
219
+
220
+ @Emittery.mixin('emittery')
221
+ class MyClass {}
222
+
223
+ const instance = new MyClass();
224
+
225
+ instance.emit('event');
226
+ ```
227
+ */
228
+ static mixin(emitteryPropertyName: string | symbol, methodNames?: readonly string[]): <T extends {
229
+ new (...arguments_: readonly any[]): any;
230
+ }>(klass: T) => T; // eslint-disable-line @typescript-eslint/prefer-function-type
231
+ /**
232
+ Debugging options for the current instance.
233
+ */
234
+ debug: DebugOptions<EventData>;
235
+ /**
236
+ Create a new Emittery instance with the specified options.
237
+
238
+ @returns An instance of Emittery that you can use to listen for and emit events.
239
+ */
240
+ constructor(options?: Options<EventData>);
241
+ /**
242
+ Subscribe to one or more events.
243
+
244
+ Using the same listener multiple times for the same event will result in only one method call per emitted event.
245
+
246
+ @returns An unsubscribe method.
247
+
248
+ @example
249
+ ```
250
+ import Emittery from 'emittery';
251
+
252
+ const emitter = new Emittery();
253
+
254
+ emitter.on('🦄', data => {
255
+ console.log(data);
256
+ });
257
+
258
+ emitter.on(['🦄', '🐶'], data => {
259
+ console.log(data);
260
+ });
261
+
262
+ emitter.emit('🦄', '🌈'); // log => '🌈' x2
263
+ emitter.emit('🐶', '🍖'); // log => '🍖'
264
+ ```
265
+ */
266
+ on<Name extends keyof AllEventData>(eventName: Name | readonly Name[], listener: (eventData: AllEventData[Name]) => void | Promise<void>, options?: {
267
+ signal?: AbortSignal;
268
+ }): UnsubscribeFunction;
269
+ /**
270
+ Get an async iterator which buffers data each time an event is emitted.
271
+
272
+ Call `return()` on the iterator to remove the subscription.
273
+
274
+ @example
275
+ ```
276
+ import Emittery from 'emittery';
277
+
278
+ const emitter = new Emittery();
279
+ const iterator = emitter.events('🦄');
280
+
281
+ emitter.emit('🦄', '🌈1'); // Buffered
282
+ emitter.emit('🦄', '🌈2'); // Buffered
283
+
284
+ iterator
285
+ .next()
286
+ .then(({value, done}) => {
287
+ // done === false
288
+ // value === '🌈1'
289
+ return iterator.next();
290
+ })
291
+ .then(({value, done}) => {
292
+ // done === false
293
+ // value === '🌈2'
294
+ // Revoke subscription
295
+ return iterator.return();
296
+ })
297
+ .then(({done}) => {
298
+ // done === true
299
+ });
300
+ ```
301
+
302
+ In practice you would usually consume the events using the [for await](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of) statement. In that case, to revoke the subscription simply break the loop.
303
+
304
+ @example
305
+ ```
306
+ import Emittery from 'emittery';
307
+
308
+ const emitter = new Emittery();
309
+ const iterator = emitter.events('🦄');
310
+
311
+ emitter.emit('🦄', '🌈1'); // Buffered
312
+ emitter.emit('🦄', '🌈2'); // Buffered
313
+
314
+ // In an async context.
315
+ for await (const data of iterator) {
316
+ if (data === '🌈2') {
317
+ break; // Revoke the subscription when we see the value `🌈2`.
318
+ }
319
+ }
320
+ ```
321
+
322
+ It accepts multiple event names.
323
+
324
+ @example
325
+ ```
326
+ import Emittery from 'emittery';
327
+
328
+ const emitter = new Emittery();
329
+ const iterator = emitter.events(['🦄', '🦊']);
330
+
331
+ emitter.emit('🦄', '🌈1'); // Buffered
332
+ emitter.emit('🦊', '🌈2'); // Buffered
333
+
334
+ iterator
335
+ .next()
336
+ .then(({value, done}) => {
337
+ // done === false
338
+ // value === '🌈1'
339
+ return iterator.next();
340
+ })
341
+ .then(({value, done}) => {
342
+ // done === false
343
+ // value === '🌈2'
344
+ // Revoke subscription
345
+ return iterator.return();
346
+ })
347
+ .then(({done}) => {
348
+ // done === true
349
+ });
350
+ ```
351
+ */
352
+ events<Name extends keyof EventData>(eventName: Name | readonly Name[]): AsyncIterableIterator<EventData[Name]>;
353
+ /**
354
+ Remove one or more event subscriptions.
355
+
356
+ @example
357
+ ```
358
+ import Emittery from 'emittery';
359
+
360
+ const emitter = new Emittery();
361
+
362
+ const listener = data => {
363
+ console.log(data);
364
+ };
365
+
366
+ emitter.on(['🦄', '🐶', '🦊'], listener);
367
+ await emitter.emit('🦄', 'a');
368
+ await emitter.emit('🐶', 'b');
369
+ await emitter.emit('🦊', 'c');
370
+ emitter.off('🦄', listener);
371
+ emitter.off(['🐶', '🦊'], listener);
372
+ await emitter.emit('🦄', 'a'); // nothing happens
373
+ await emitter.emit('🐶', 'b'); // nothing happens
374
+ await emitter.emit('🦊', 'c'); // nothing happens
375
+ ```
376
+ */
377
+ off<Name extends keyof AllEventData>(eventName: Name | readonly Name[], listener: (eventData: AllEventData[Name]) => void | Promise<void>): void;
378
+ /**
379
+ Subscribe to one or more events only once. It will be unsubscribed after the first event that matches the predicate (if provided).
380
+
381
+ @param eventName - The event name(s) to subscribe to.
382
+ @param predicate - Optional predicate function to filter event data. The event will only be emitted if the predicate returns true.
383
+
384
+ @returns The promise of event data when `eventName` is emitted and predicate matches (if provided). This promise is extended with an `off` method.
385
+
386
+ @example
387
+ ```
388
+ import Emittery from 'emittery';
389
+
390
+ const emitter = new Emittery();
391
+
392
+ emitter.once('🦄').then(data => {
393
+ console.log(data);
394
+ //=> '🌈'
395
+ });
396
+
397
+ emitter.once(['🦄', '🐶']).then(data => {
398
+ console.log(data);
399
+ });
400
+
401
+ // With predicate
402
+ emitter.once('data', data => data.ok === true).then(data => {
403
+ console.log(data);
404
+ //=> {ok: true, value: 42}
405
+ });
406
+
407
+ emitter.emit('🦄', '🌈'); // Logs `🌈` twice
408
+ emitter.emit('🐶', '🍖'); // Nothing happens
409
+ emitter.emit('data', {ok: false}); // Nothing happens
410
+ emitter.emit('data', {ok: true, value: 42}); // Logs {ok: true, value: 42}
411
+ ```
412
+ */
413
+ once<Name extends keyof AllEventData>(eventName: Name | readonly Name[], predicate?: (eventData: AllEventData[Name]) => boolean): EmitteryOncePromise<AllEventData[Name]>;
414
+ /**
415
+ Trigger an event asynchronously, optionally with some data. Listeners are called in the order they were added, but executed concurrently.
416
+
417
+ @returns A promise that resolves when all the event listeners are done. *Done* meaning executed if synchronous or resolved when an async/promise-returning function. You usually wouldn't want to wait for this, but you could for example catch possible errors. If any of the listeners throw/reject, the returned promise will be rejected with the error, but the other listeners will not be affected.
418
+ */
419
+ emit<Name extends DatalessEvents>(eventName: Name): Promise<void>;
420
+ emit<Name extends keyof EventData>(eventName: Name, eventData: EventData[Name]): Promise<void>;
421
+ /**
422
+ Same as `emit()`, but it waits for each listener to resolve before triggering the next one. This can be useful if your events depend on each other. Although ideally they should not. Prefer `emit()` whenever possible.
423
+
424
+ If any of the listeners throw/reject, the returned promise will be rejected with the error and the remaining listeners will *not* be called.
425
+
426
+ @returns A promise that resolves when all the event listeners are done.
427
+ */
428
+ emitSerial<Name extends DatalessEvents>(eventName: Name): Promise<void>;
429
+ emitSerial<Name extends keyof EventData>(eventName: Name, eventData: EventData[Name]): Promise<void>;
430
+ /**
431
+ Subscribe to be notified about any event.
432
+
433
+ @returns A method to unsubscribe.
434
+ */
435
+ onAny(listener: (eventName: keyof EventData, eventData: EventData[keyof EventData]) => void | Promise<void>, options?: {
436
+ signal?: AbortSignal;
437
+ }): UnsubscribeFunction;
438
+ /**
439
+ Get an async iterator which buffers a tuple of an event name and data each time an event is emitted.
440
+
441
+ Call `return()` on the iterator to remove the subscription.
442
+
443
+ In the same way as for `events`, you can subscribe by using the `for await` statement.
444
+
445
+ @example
446
+ ```
447
+ import Emittery from 'emittery';
448
+
449
+ const emitter = new Emittery();
450
+ const iterator = emitter.anyEvent();
451
+
452
+ emitter.emit('🦄', '🌈1'); // Buffered
453
+ emitter.emit('🌟', '🌈2'); // Buffered
454
+
455
+ iterator.next()
456
+ .then(({value, done}) => {
457
+ // done is false
458
+ // value is ['🦄', '🌈1']
459
+ return iterator.next();
460
+ })
461
+ .then(({value, done}) => {
462
+ // done is false
463
+ // value is ['🌟', '🌈2']
464
+ // revoke subscription
465
+ return iterator.return();
466
+ })
467
+ .then(({done}) => {
468
+ // done is true
469
+ });
470
+ ```
471
+ */
472
+ anyEvent(): AsyncIterableIterator<[
473
+ keyof EventData,
474
+ EventData[keyof EventData]
475
+ ]>;
476
+ /**
477
+ Remove an `onAny` subscription.
478
+ */
479
+ offAny(listener: (eventName: keyof EventData, eventData: EventData[keyof EventData]) => void | Promise<void>): void;
480
+ /**
481
+ Clear all event listeners on the instance.
482
+
483
+ If `eventName` is given, only the listeners for that event are cleared.
484
+ */
485
+ clearListeners<Name extends keyof EventData>(eventName?: Name | readonly Name[]): void;
486
+ /**
487
+ The number of listeners for the `eventName` or all events if not specified.
488
+ */
489
+ listenerCount<Name extends keyof EventData>(eventName?: Name | readonly Name[]): number;
490
+ /**
491
+ Bind the given `methodNames`, or all `Emittery` methods if `methodNames` is not defined, into the `target` object.
492
+
493
+ @example
494
+ ```
495
+ import Emittery from 'emittery';
496
+
497
+ const object = {};
498
+
499
+ new Emittery().bindMethods(object);
500
+
501
+ object.emit('event');
502
+ ```
503
+ */
504
+ bindMethods(target: Record<string, unknown>, methodNames?: readonly string[]): void;
505
+ }
506
+ declare const ReadonlyKind: unique symbol;
507
+ declare const OptionalKind: unique symbol;
508
+ declare const Hint: unique symbol;
509
+ declare const Kind: unique symbol;
510
+ interface TAny extends TSchema {
511
+ [Kind]: "Any";
512
+ static: any;
513
+ }
514
+ type TReadonly<T extends TSchema> = T & {
515
+ [ReadonlyKind]: "Readonly";
516
+ };
517
+ type TLiteralValue = boolean | number | string;
518
+ interface TLiteral<T extends TLiteralValue = TLiteralValue> extends TSchema {
519
+ [Kind]: "Literal";
520
+ static: T;
521
+ const: T;
522
+ }
523
+ type TIntersectStatic<T extends TSchema[], P extends unknown[], Acc extends unknown = unknown> = T extends [
524
+ infer L extends TSchema,
525
+ ...infer R extends TSchema[]
526
+ ] ? TIntersectStatic<R, P, Acc & Static<L, P>> : Acc;
527
+ type TUnevaluatedProperties = undefined | TSchema | boolean;
528
+ interface IntersectOptions extends SchemaOptions {
529
+ unevaluatedProperties?: TUnevaluatedProperties;
530
+ }
531
+ interface TIntersect<T extends TSchema[] = TSchema[]> extends TSchema, IntersectOptions {
532
+ [Kind]: "Intersect";
533
+ static: TIntersectStatic<T, this["params"]>;
534
+ type?: "object";
535
+ allOf: [
536
+ ...T
537
+ ];
538
+ }
539
+ type UnionStatic<T extends TSchema[], P extends unknown[]> = {
540
+ [K in keyof T]: T[K] extends TSchema ? Static<T[K], P> : never;
541
+ }[number];
542
+ interface TUnion<T extends TSchema[] = TSchema[]> extends TSchema {
543
+ [Kind]: "Union";
544
+ static: UnionStatic<T, this["params"]>;
545
+ anyOf: T;
546
+ }
547
+ type StringFormatOption = "date-time" | "time" | "date" | "email" | "idn-email" | "hostname" | "idn-hostname" | "ipv4" | "ipv6" | "uri" | "uri-reference" | "iri" | "uuid" | "iri-reference" | "uri-template" | "json-pointer" | "relative-json-pointer" | "regex" | ({} & string);
548
+ type StringContentEncodingOption = "7bit" | "8bit" | "binary" | "quoted-printable" | "base64" | ({} & string);
549
+ interface StringOptions extends SchemaOptions {
550
+ /** The maximum string length */
551
+ maxLength?: number;
552
+ /** The minimum string length */
553
+ minLength?: number;
554
+ /** A regular expression pattern this string should match */
555
+ pattern?: string;
556
+ /** A format this string should match */
557
+ format?: StringFormatOption;
558
+ /** The content encoding for this string */
559
+ contentEncoding?: StringContentEncodingOption;
560
+ /** The content media type for this string */
561
+ contentMediaType?: string;
562
+ }
563
+ interface TString extends TSchema, StringOptions {
564
+ [Kind]: "String";
565
+ static: string;
566
+ type: "string";
567
+ }
568
+ interface TBoolean extends TSchema {
569
+ [Kind]: "Boolean";
570
+ static: boolean;
571
+ type: "boolean";
572
+ }
573
+ interface NumberOptions extends SchemaOptions {
574
+ exclusiveMaximum?: number;
575
+ exclusiveMinimum?: number;
576
+ maximum?: number;
577
+ minimum?: number;
578
+ multipleOf?: number;
579
+ }
580
+ interface TNumber extends TSchema, NumberOptions {
581
+ [Kind]: "Number";
582
+ static: number;
583
+ type: "number";
584
+ }
585
+ interface IntegerOptions extends SchemaOptions {
586
+ exclusiveMaximum?: number;
587
+ exclusiveMinimum?: number;
588
+ maximum?: number;
589
+ minimum?: number;
590
+ multipleOf?: number;
591
+ }
592
+ interface TInteger extends TSchema, IntegerOptions {
593
+ [Kind]: "Integer";
594
+ static: number;
595
+ type: "integer";
596
+ }
597
+ type TOptional<T extends TSchema> = T & {
598
+ [OptionalKind]: "Optional";
599
+ };
600
+ interface TNull extends TSchema {
601
+ [Kind]: "Null";
602
+ static: null;
603
+ type: "null";
604
+ }
605
+ type RecordStatic<Key extends TSchema, Type extends TSchema, P extends unknown[]> = (Evaluate<{
606
+ [_ in Assert<Static<Key>, PropertyKey>]: Static<Type, P>;
607
+ }>);
608
+ interface TRecord<Key extends TSchema = TSchema, Type extends TSchema = TSchema> extends TSchema {
609
+ [Kind]: "Record";
610
+ static: RecordStatic<Key, Type, this["params"]>;
611
+ type: "object";
612
+ patternProperties: {
613
+ [pattern: string]: Type;
614
+ };
615
+ additionalProperties: TAdditionalProperties;
616
+ }
617
+ type Static<Type extends TSchema, Params extends unknown[] = [
618
+ ], Result = (Type & {
619
+ params: Params;
620
+ })["static"]> = Result;
621
+ type ReadonlyOptionalPropertyKeys<T extends TProperties> = {
622
+ [K in keyof T]: T[K] extends TReadonly<TSchema> ? (T[K] extends TOptional<T[K]> ? K : never) : never;
623
+ }[keyof T];
624
+ type ReadonlyPropertyKeys<T extends TProperties> = {
625
+ [K in keyof T]: T[K] extends TReadonly<TSchema> ? (T[K] extends TOptional<T[K]> ? never : K) : never;
626
+ }[keyof T];
627
+ type OptionalPropertyKeys<T extends TProperties> = {
628
+ [K in keyof T]: T[K] extends TOptional<TSchema> ? (T[K] extends TReadonly<T[K]> ? never : K) : never;
629
+ }[keyof T];
630
+ type RequiredPropertyKeys<T extends TProperties> = keyof Omit<T, ReadonlyOptionalPropertyKeys<T> | ReadonlyPropertyKeys<T> | OptionalPropertyKeys<T>>;
631
+ type ObjectStaticProperties<T extends TProperties, R extends Record<keyof any, unknown>> = Evaluate<(Readonly<Partial<Pick<R, ReadonlyOptionalPropertyKeys<T>>>> & Readonly<Pick<R, ReadonlyPropertyKeys<T>>> & Partial<Pick<R, OptionalPropertyKeys<T>>> & Required<Pick<R, RequiredPropertyKeys<T>>>)>;
632
+ type ObjectStatic<T extends TProperties, P extends unknown[]> = ObjectStaticProperties<T, {
633
+ [K in keyof T]: Static<T[K], P>;
634
+ }>;
635
+ type TPropertyKey = string | number;
636
+ type TProperties = Record<TPropertyKey, TSchema>;
637
+ type TIsLiteralString<Type extends string> = ([
638
+ Type
639
+ ] extends [
640
+ string
641
+ ] ? [
642
+ string
643
+ ] extends [
644
+ Type
645
+ ] ? false : true : false);
646
+ type IsRequiredArrayLiteralConstant<RequiredTuple extends string[]> = (RequiredTuple extends [
647
+ infer Left extends string,
648
+ ...infer _ extends string[]
649
+ ] ? TIsLiteralString<Left> : false);
650
+ type TRequiredArray<Properties extends TProperties, RequiredProperties extends TProperties = {
651
+ [Key in keyof Properties as Properties[Key] extends TOptional<Properties[Key]> ? never : Key]: Properties[Key];
652
+ }, RequiredUnion extends string = Extract<keyof RequiredProperties, string>, RequiredTuple extends string[] = UnionToTuple<RequiredUnion>, Result extends string[] | undefined = (IsRequiredArrayLiteralConstant<RequiredTuple> extends true ? RequiredTuple : string[] | undefined)> = Result;
653
+ type TAdditionalProperties = undefined | TSchema | boolean;
654
+ interface ObjectOptions extends SchemaOptions {
655
+ /** Additional property constraints for this object */
656
+ additionalProperties?: TAdditionalProperties;
657
+ /** The minimum number of properties allowed on this object */
658
+ minProperties?: number;
659
+ /** The maximum number of properties allowed on this object */
660
+ maxProperties?: number;
661
+ }
662
+ interface TObject<T extends TProperties = TProperties> extends TSchema, ObjectOptions {
663
+ [Kind]: "Object";
664
+ static: ObjectStatic<T, this["params"]>;
665
+ additionalProperties?: TAdditionalProperties;
666
+ type: "object";
667
+ properties: T;
668
+ required: TRequiredArray<T>;
669
+ }
670
+ type UnionToIntersect<U> = (U extends unknown ? (arg: U) => 0 : never) extends (arg: infer I) => 0 ? I : never;
671
+ type UnionLast<U> = UnionToIntersect<U extends unknown ? (x: U) => 0 : never> extends (x: infer L) => 0 ? L : never;
672
+ type UnionToTuple<U, Acc extends unknown[] = [
673
+ ], R = UnionLast<U>> = [
674
+ U
675
+ ] extends [
676
+ never
677
+ ] ? Acc : UnionToTuple<Exclude<U, R>, [
678
+ Extract<U, R>,
679
+ ...Acc
680
+ ]>;
681
+ type Assert<T, E> = T extends E ? T : never;
682
+ type Evaluate<T> = T extends infer O ? {
683
+ [K in keyof O]: O[K];
684
+ } : never;
685
+ type Ensure<T> = T extends infer U ? U : never;
686
+ interface ArrayOptions extends SchemaOptions {
687
+ /** The minimum number of items in this array */
688
+ minItems?: number;
689
+ /** The maximum number of items in this array */
690
+ maxItems?: number;
691
+ /** Should this schema contain unique items */
692
+ uniqueItems?: boolean;
693
+ /** A schema for which some elements should match */
694
+ contains?: TSchema;
695
+ /** A minimum number of contains schema matches */
696
+ minContains?: number;
697
+ /** A maximum number of contains schema matches */
698
+ maxContains?: number;
699
+ }
700
+ type ArrayStatic<T extends TSchema, P extends unknown[]> = Ensure<Static<T, P>[]>;
701
+ interface TArray<T extends TSchema = TSchema> extends TSchema, ArrayOptions {
702
+ [Kind]: "Array";
703
+ static: ArrayStatic<T, this["params"]>;
704
+ type: "array";
705
+ items: T;
706
+ }
707
+ interface TUnknown extends TSchema {
708
+ [Kind]: "Unknown";
709
+ static: unknown;
710
+ }
711
+ interface SchemaOptions {
712
+ $schema?: string;
713
+ /** Id for this schema */
714
+ $id?: string;
715
+ /** Title of this schema */
716
+ title?: string;
717
+ /** Description of this schema */
718
+ description?: string;
719
+ /** Default value for this schema */
720
+ default?: any;
721
+ /** Example values matching this schema */
722
+ examples?: any;
723
+ /** Optional annotation for readOnly */
724
+ readOnly?: boolean;
725
+ /** Optional annotation for writeOnly */
726
+ writeOnly?: boolean;
727
+ [prop: string]: any;
728
+ }
729
+ interface TKind {
730
+ [Kind]: string;
731
+ }
732
+ interface TSchema extends TKind, SchemaOptions {
733
+ [ReadonlyKind]?: string;
734
+ [OptionalKind]?: string;
735
+ [Hint]?: string;
736
+ params: unknown[];
737
+ static: unknown;
738
+ }
739
+ declare const vasFileSchema: TObject<{
740
+ id: TString;
741
+ set: TObject<{
742
+ configuration: TObject<{
743
+ settings: TOptional<TObject<{
744
+ general: TOptional<TObject<{
745
+ assemblyMode: TOptional<TUnion<[
746
+ TLiteral<"multi-object">,
747
+ TLiteral<"single-object">
748
+ ]>>;
749
+ editorMode: TOptional<TUnion<[
750
+ TLiteral<"default">,
751
+ TLiteral<"assembly">,
752
+ TNull
753
+ ]>>;
754
+ }>>;
755
+ assetsPalette: TOptional<TObject<{
756
+ nodes: TOptional<TArray<TObject<{
757
+ id: TNumber;
758
+ name: TString;
759
+ tags: TArray<TNumber>;
760
+ icon: TOptional<TUnion<[
761
+ TString,
762
+ TNull
763
+ ]>>;
764
+ }>>>;
765
+ roots: TOptional<TArray<TNumber>>;
766
+ tree: TOptional<TRecord<TNumber, TArray<TNumber>>>;
767
+ linkedProperties: TOptional<TObject<{
768
+ name: TOptional<TNumber>;
769
+ description: TOptional<TNumber>;
770
+ image: TOptional<TNumber>;
771
+ }>>;
772
+ styleSettings: TOptional<TObject<{
773
+ image: TOptional<TObject<{
774
+ size: TUnion<[
775
+ TLiteral<"sm">,
776
+ TLiteral<"md">,
777
+ TLiteral<"lg">
778
+ ]>;
779
+ orientation: TUnion<[
780
+ TLiteral<"square">,
781
+ TLiteral<"portrait">,
782
+ TLiteral<"landscape">
783
+ ]>;
784
+ }>>;
785
+ name: TOptional<TObject<{
786
+ visible: TOptional<TBoolean>;
787
+ }>>;
788
+ description: TOptional<TObject<{
789
+ visible: TOptional<TBoolean>;
790
+ }>>;
791
+ }>>;
792
+ defaultNodeId: TOptional<TNumber>;
793
+ patternType: TOptional<TUnion<[
794
+ TLiteral<"hierarchical">,
795
+ TLiteral<"breadcrumbs">
796
+ ]>>;
797
+ addingAssetsMethod: TOptional<TUnion<[
798
+ TLiteral<"dragAndDrop">,
799
+ TLiteral<"clickToAdd">
800
+ ]>>;
801
+ sortingSettings: TOptional<TObject<{
802
+ field: TUnion<[
803
+ TLiteral<"name">,
804
+ TLiteral<"property">
805
+ ]>;
806
+ order: TUnion<[
807
+ TLiteral<"asc">,
808
+ TLiteral<"desc">
809
+ ]>;
810
+ }>>;
811
+ }>>;
812
+ outline: TOptional<TObject<{
813
+ enabled: TOptional<TBoolean>;
814
+ selected: TOptional<TObject<{
815
+ enabled: TOptional<TBoolean>;
816
+ thicknessPx: TOptional<TNumber>;
817
+ visible: TOptional<TObject<{
818
+ color: TOptional<TNumber>;
819
+ alpha: TOptional<TNumber>;
820
+ }>>;
821
+ hidden: TOptional<TObject<{
822
+ color: TOptional<TNumber>;
823
+ alpha: TOptional<TNumber>;
824
+ }>>;
825
+ }>>;
826
+ hover: TOptional<TObject<{
827
+ enabled: TOptional<TBoolean>;
828
+ thicknessPx: TOptional<TNumber>;
829
+ visible: TOptional<TObject<{
830
+ color: TOptional<TNumber>;
831
+ alpha: TOptional<TNumber>;
832
+ fillAlpha: TOptional<TNumber>;
833
+ }>>;
834
+ hidden: TOptional<TObject<{
835
+ color: TOptional<TNumber>;
836
+ alpha: TOptional<TNumber>;
837
+ fillAlpha: TOptional<TNumber>;
838
+ }>>;
839
+ }>>;
840
+ edgeStrength: TOptional<TNumber>;
841
+ edgeGlow: TOptional<TNumber>;
842
+ edgeThickness: TOptional<TNumber>;
843
+ pulsePeriod: TOptional<TNumber>;
844
+ visibleEdgeColor: TOptional<TNumber>;
845
+ hiddenEdgeColor: TOptional<TNumber>;
846
+ }>>;
847
+ highlight: TOptional<TObject<{
848
+ enabled: TOptional<TBoolean>;
849
+ color: TOptional<TNumber>;
850
+ blinkDurationMs: TOptional<TNumber>;
851
+ pulseCount: TOptional<TNumber>;
852
+ lineOpacityStart: TOptional<TNumber>;
853
+ lineOpacityEnd: TOptional<TNumber>;
854
+ boxOpacityStart: TOptional<TNumber>;
855
+ boxOpacityEnd: TOptional<TNumber>;
856
+ }>>;
857
+ dimensions: TOptional<TObject<{
858
+ offsetX: TOptional<TNumber>;
859
+ offsetY: TOptional<TNumber>;
860
+ offsetZ: TOptional<TNumber>;
861
+ rangefinder: TOptional<TObject<{
862
+ lineColor: TOptional<TString>;
863
+ textColor: TOptional<TString>;
864
+ textBackgroundColor: TOptional<TString>;
865
+ }>>;
866
+ }>>;
867
+ autoSnap: TOptional<TObject<{
868
+ enabled: TOptional<TBoolean>;
869
+ requireConnection: TOptional<TBoolean>;
870
+ showSnapPoints: TOptional<TBoolean>;
871
+ delay: TOptional<TNumber>;
872
+ distance: TOptional<TNumber>;
873
+ distanceTolerance: TOptional<TNumber>;
874
+ lookupRadiusPx: TOptional<TNumber>;
875
+ rotationPreviewRadiusPx: TOptional<TNumber>;
876
+ previewStrategy: TOptional<TUnion<[
877
+ TLiteral<"replace-dragged">,
878
+ TLiteral<"highlight-preview">
879
+ ]>>;
880
+ externalDragMovement: TOptional<TUnion<[
881
+ TLiteral<"camera-plane">,
882
+ TLiteral<"floor-slide">,
883
+ TLiteral<"keep-visible">
884
+ ]>>;
885
+ }>>;
886
+ drag: TOptional<TObject<{
887
+ minimumDropDistance: TOptional<TNumber>;
888
+ showGridHelper: TOptional<TBoolean>;
889
+ interactionStrategy: TOptional<TUnion<[
890
+ TLiteral<"directDrag">,
891
+ TLiteral<"pressMoveThreshold">,
892
+ TLiteral<"holdToDrag">
893
+ ]>>;
894
+ desktopHoldDelayMs: TOptional<TNumber>;
895
+ touchHoldDelayMs: TOptional<TNumber>;
896
+ dragStartThresholdPx: TOptional<TNumber>;
897
+ clickTolerancePx: TOptional<TNumber>;
898
+ selectDraggedObjectOnDrop: TOptional<TBoolean>;
899
+ }>>;
900
+ postprocessing: TOptional<TObject<{
901
+ gtao: TOptional<TObject<{
902
+ enabled: TOptional<TBoolean>;
903
+ blendIntensity: TOptional<TNumber>;
904
+ radius: TOptional<TNumber>;
905
+ samples: TOptional<TNumber>;
906
+ distanceFallOff: TOptional<TNumber>;
907
+ screenSpaceRadius: TOptional<TBoolean>;
908
+ denoiseRadius: TOptional<TNumber>;
909
+ denoiseSamples: TOptional<TNumber>;
910
+ }>>;
911
+ outlineEffect: TOptional<TObject<{
912
+ enabled: TOptional<TBoolean>;
913
+ thickness: TOptional<TNumber>;
914
+ color: TOptional<TNumber>;
915
+ alpha: TOptional<TNumber>;
916
+ }>>;
917
+ }>>;
918
+ materials: TOptional<TObject<{
919
+ linkedProperties: TOptional<TObject<{
920
+ name: TOptional<TNumber>;
921
+ thumbnail: TOptional<TNumber>;
922
+ }>>;
923
+ styleSettings: TOptional<TObject<{
924
+ image: TOptional<TObject<{
925
+ size: TUnion<[
926
+ TLiteral<"sm">,
927
+ TLiteral<"md">,
928
+ TLiteral<"lg">
929
+ ]>;
930
+ orientation: TUnion<[
931
+ TLiteral<"square">,
932
+ TLiteral<"portrait">,
933
+ TLiteral<"landscape">
934
+ ]>;
935
+ }>>;
936
+ name: TOptional<TObject<{
937
+ visible: TOptional<TBoolean>;
938
+ }>>;
939
+ description: TOptional<TObject<{
940
+ visible: TOptional<TBoolean>;
941
+ }>>;
942
+ }>>;
943
+ materialsSortingSettings: TOptional<TObject<{
944
+ field: TUnion<[
945
+ TLiteral<"name">,
946
+ TLiteral<"property">
947
+ ]>;
948
+ order: TUnion<[
949
+ TLiteral<"asc">,
950
+ TLiteral<"desc">
951
+ ]>;
952
+ }>>;
953
+ materialGroupsSortingSettings: TOptional<TObject<{
954
+ field: TUnion<[
955
+ TLiteral<"name">,
956
+ TLiteral<"property">
957
+ ]>;
958
+ order: TUnion<[
959
+ TLiteral<"asc">,
960
+ TLiteral<"desc">
961
+ ]>;
962
+ }>>;
963
+ behavior: TOptional<TObject<{
964
+ onInsert: TOptional<TUnion<[
965
+ TLiteral<"default">,
966
+ TLiteral<"last">
967
+ ]>>;
968
+ applicationStrategy: TOptional<TUnion<[
969
+ TLiteral<"selected">,
970
+ TLiteral<"all">
971
+ ]>>;
972
+ }>>;
973
+ }>>;
974
+ subcomponents: TOptional<TObject<{
975
+ linkedProperties: TOptional<TObject<{
976
+ name: TOptional<TNumber>;
977
+ thumbnail: TOptional<TNumber>;
978
+ }>>;
979
+ styleSettings: TOptional<TObject<{
980
+ image: TOptional<TObject<{
981
+ size: TUnion<[
982
+ TLiteral<"sm">,
983
+ TLiteral<"md">,
984
+ TLiteral<"lg">
985
+ ]>;
986
+ orientation: TUnion<[
987
+ TLiteral<"square">,
988
+ TLiteral<"portrait">,
989
+ TLiteral<"landscape">
990
+ ]>;
991
+ }>>;
992
+ name: TOptional<TObject<{
993
+ visible: TOptional<TBoolean>;
994
+ }>>;
995
+ description: TOptional<TObject<{
996
+ visible: TOptional<TBoolean>;
997
+ }>>;
998
+ }>>;
999
+ subcomponentsSortingSettings: TOptional<TObject<{
1000
+ field: TUnion<[
1001
+ TLiteral<"name">,
1002
+ TLiteral<"property">
1003
+ ]>;
1004
+ order: TUnion<[
1005
+ TLiteral<"asc">,
1006
+ TLiteral<"desc">
1007
+ ]>;
1008
+ }>>;
1009
+ subcomponentGroupsSortingSettings: TOptional<TObject<{
1010
+ field: TUnion<[
1011
+ TLiteral<"name">,
1012
+ TLiteral<"property">
1013
+ ]>;
1014
+ order: TUnion<[
1015
+ TLiteral<"asc">,
1016
+ TLiteral<"desc">
1017
+ ]>;
1018
+ }>>;
1019
+ behavior: TOptional<TObject<{
1020
+ onInsert: TOptional<TUnion<[
1021
+ TLiteral<"default">,
1022
+ TLiteral<"last">
1023
+ ]>>;
1024
+ applicationStrategy: TOptional<TUnion<[
1025
+ TLiteral<"selected">,
1026
+ TLiteral<"all">
1027
+ ]>>;
1028
+ }>>;
1029
+ }>>;
1030
+ }>>;
1031
+ sceneSettings: TOptional<TObject<{
1032
+ studioId: TOptional<TUnion<[
1033
+ TNumber,
1034
+ TNull
1035
+ ]>>;
1036
+ studios: TOptional<TRecord<TString, TObject<{
1037
+ scene: TOptional<TObject<{
1038
+ backgroundColor: TOptional<TUnion<[
1039
+ TString,
1040
+ TNull
1041
+ ]>>;
1042
+ envMap: TOptional<TUnion<[
1043
+ TString,
1044
+ TNull
1045
+ ]>>;
1046
+ backgroundMode: TOptional<TUnion<[
1047
+ TLiteral<"color">,
1048
+ TLiteral<"environment">
1049
+ ]>>;
1050
+ backgroundBlurriness: TOptional<TNumber>;
1051
+ backgroundIntensity: TOptional<TNumber>;
1052
+ environmentIntensity: TOptional<TNumber>;
1053
+ environmentRotationY: TOptional<TNumber>;
1054
+ shadowMap: TOptional<TObject<{
1055
+ type: TOptional<TUnion<[
1056
+ TLiteral<"Basic">,
1057
+ TLiteral<"PCF">,
1058
+ TLiteral<"VSM">
1059
+ ]>>;
1060
+ vsmQuality: TOptional<TUnion<[
1061
+ TLiteral<"Performance">,
1062
+ TLiteral<"Balanced">,
1063
+ TLiteral<"Quality">
1064
+ ]>>;
1065
+ }>>;
1066
+ toneMapping: TOptional<TObject<{
1067
+ mode: TOptional<TUnion<[
1068
+ TLiteral<"None">,
1069
+ TLiteral<"Linear">,
1070
+ TLiteral<"Reinhard">,
1071
+ TLiteral<"Cineon">,
1072
+ TLiteral<"ACESFilmic">,
1073
+ TLiteral<"AgX">,
1074
+ TLiteral<"Neutral">
1075
+ ]>>;
1076
+ exposure: TOptional<TNumber>;
1077
+ }>>;
1078
+ }>>;
1079
+ lights: TOptional<TObject<{
1080
+ preset: TOptional<TUnion<[
1081
+ TLiteral<"directional">,
1082
+ TLiteral<"area">,
1083
+ TLiteral<"environment">
1084
+ ]>>;
1085
+ }>>;
1086
+ floor: TOptional<TObject<{
1087
+ activeFloor: TOptional<TBoolean>;
1088
+ activeFloorShadow: TOptional<TBoolean>;
1089
+ useFloorInAR: TOptional<TBoolean>;
1090
+ reflection: TOptional<TObject<{
1091
+ enabled: TOptional<TBoolean>;
1092
+ opacity: TOptional<TNumber>;
1093
+ fadeDistance: TOptional<TNumber>;
1094
+ }>>;
1095
+ floorSize: TOptional<TObject<{
1096
+ x: TOptional<TNumber>;
1097
+ y: TOptional<TNumber>;
1098
+ }>>;
1099
+ floorSizeType: TOptional<TUnion<[
1100
+ TLiteral<"infinity">,
1101
+ TLiteral<"likeObject">,
1102
+ TLiteral<"custom">
1103
+ ]>>;
1104
+ selectedMaterialGroup: TOptional<TUnion<[
1105
+ TNumber,
1106
+ TNull
1107
+ ]>>;
1108
+ selectedDefaultMaterial: TOptional<TUnion<[
1109
+ TNumber,
1110
+ TNull
1111
+ ]>>;
1112
+ }>>;
1113
+ }>>>;
1114
+ backgroundColor: TOptional<TUnion<[
1115
+ TString,
1116
+ TNull
1117
+ ]>>;
1118
+ envMap: TOptional<TUnion<[
1119
+ TString,
1120
+ TNull
1121
+ ]>>;
1122
+ backgroundMode: TOptional<TUnion<[
1123
+ TLiteral<"color">,
1124
+ TLiteral<"environment">
1125
+ ]>>;
1126
+ backgroundBlurriness: TOptional<TNumber>;
1127
+ backgroundIntensity: TOptional<TNumber>;
1128
+ environmentIntensity: TOptional<TNumber>;
1129
+ environmentRotationY: TOptional<TNumber>;
1130
+ shadowMap: TOptional<TObject<{
1131
+ type: TOptional<TUnion<[
1132
+ TLiteral<"Basic">,
1133
+ TLiteral<"PCF">,
1134
+ TLiteral<"VSM">
1135
+ ]>>;
1136
+ vsmQuality: TOptional<TUnion<[
1137
+ TLiteral<"Performance">,
1138
+ TLiteral<"Balanced">,
1139
+ TLiteral<"Quality">
1140
+ ]>>;
1141
+ }>>;
1142
+ toneMapping: TOptional<TObject<{
1143
+ mode: TOptional<TUnion<[
1144
+ TLiteral<"None">,
1145
+ TLiteral<"Linear">,
1146
+ TLiteral<"Reinhard">,
1147
+ TLiteral<"Cineon">,
1148
+ TLiteral<"ACESFilmic">,
1149
+ TLiteral<"AgX">,
1150
+ TLiteral<"Neutral">
1151
+ ]>>;
1152
+ exposure: TOptional<TNumber>;
1153
+ }>>;
1154
+ floor: TOptional<TObject<{
1155
+ activeFloor: TOptional<TBoolean>;
1156
+ activeFloorShadow: TOptional<TBoolean>;
1157
+ useFloorInAR: TOptional<TBoolean>;
1158
+ reflection: TOptional<TObject<{
1159
+ enabled: TOptional<TBoolean>;
1160
+ opacity: TOptional<TNumber>;
1161
+ fadeDistance: TOptional<TNumber>;
1162
+ }>>;
1163
+ floorSize: TOptional<TObject<{
1164
+ x: TNumber;
1165
+ y: TNumber;
1166
+ }>>;
1167
+ floorSizeType: TOptional<TUnion<[
1168
+ TLiteral<"infinity">,
1169
+ TLiteral<"likeObject">,
1170
+ TLiteral<"custom">
1171
+ ]>>;
1172
+ selectedMaterialGroup: TOptional<TUnion<[
1173
+ TNumber,
1174
+ TNull
1175
+ ]>>;
1176
+ selectedDefaultMaterial: TOptional<TUnion<[
1177
+ TNumber,
1178
+ TNull
1179
+ ]>>;
1180
+ }>>;
1181
+ layout: TOptional<TObject<{
1182
+ colors: TOptional<TObject<{
1183
+ primaryColor: TString;
1184
+ secondaryColor: TString;
1185
+ }>>;
1186
+ defaultLayoutMode: TOptional<TUnion<[
1187
+ TLiteral<"configuration">,
1188
+ TLiteral<"materials">
1189
+ ]>>;
1190
+ layersButtons: TOptional<TArray<TObject<{
1191
+ label: TString;
1192
+ layers: TArray<TInteger>;
1193
+ defaultState: TBoolean;
1194
+ }>>>;
1195
+ }>>;
1196
+ }>>;
1197
+ pricingSettings: TOptional<TObject<{
1198
+ enabled: TOptional<TBoolean>;
1199
+ configId: TOptional<TNumber>;
1200
+ }>>;
1201
+ customRulesSettings: TOptional<TObject<{
1202
+ configIds: TOptional<TArray<TNumber>>;
1203
+ }>>;
1204
+ layoutResult: TOptional<TUnion<[
1205
+ TObject<{
1206
+ type: TLiteral<"none">;
1207
+ }>,
1208
+ TObject<{
1209
+ type: TLiteral<"pricing">;
1210
+ }>,
1211
+ TObject<{
1212
+ type: TLiteral<"custom-rule">;
1213
+ configId: TNumber;
1214
+ }>
1215
+ ]>>;
1216
+ unitsSettings: TOptional<TObject<{
1217
+ price: TOptional<TObject<{
1218
+ roundType: TOptional<TUnion<[
1219
+ TLiteral<"round">,
1220
+ TLiteral<"ceil">,
1221
+ TLiteral<"floor">
1222
+ ]>>;
1223
+ precision: TOptional<TNumber>;
1224
+ step: TOptional<TNumber>;
1225
+ }>>;
1226
+ }>>;
1227
+ documentation: TOptional<TObject<{
1228
+ fileUuid: TOptional<TUnion<[
1229
+ TString,
1230
+ TNull
1231
+ ]>>;
1232
+ parameters: TOptional<TArray<TObject<{
1233
+ name: TString;
1234
+ type: TUnion<[
1235
+ TLiteral<"TEXT">,
1236
+ TLiteral<"PROJECTION">,
1237
+ TLiteral<"BOOL">,
1238
+ TLiteral<"SOURCE_DATA">
1239
+ ]>;
1240
+ uuid: TString;
1241
+ value: TString;
1242
+ }>>>;
1243
+ }>>;
1244
+ presetsSettings: TOptional<TObject<{
1245
+ presets: TOptional<TObject<{
1246
+ enabled: TOptional<TBoolean>;
1247
+ items: TOptional<TArray<TObject<{
1248
+ id: TString;
1249
+ name: TString;
1250
+ description: TOptional<TString>;
1251
+ configuration: TAny;
1252
+ ignore: TOptional<TArray<TString>>;
1253
+ icon: TOptional<TUnion<[
1254
+ TString,
1255
+ TNull
1256
+ ]>>;
1257
+ visible: TOptional<TBoolean>;
1258
+ }>>>;
1259
+ selectedId: TOptional<TString>;
1260
+ styleSettings: TOptional<TObject<{
1261
+ image: TOptional<TObject<{
1262
+ size: TUnion<[
1263
+ TLiteral<"sm">,
1264
+ TLiteral<"md">,
1265
+ TLiteral<"lg">
1266
+ ]>;
1267
+ orientation: TUnion<[
1268
+ TLiteral<"square">,
1269
+ TLiteral<"portrait">,
1270
+ TLiteral<"landscape">
1271
+ ]>;
1272
+ }>>;
1273
+ name: TOptional<TObject<{
1274
+ visible: TOptional<TBoolean>;
1275
+ }>>;
1276
+ description: TOptional<TObject<{
1277
+ visible: TOptional<TBoolean>;
1278
+ }>>;
1279
+ }>>;
1280
+ }>>;
1281
+ assemblyPresets: TOptional<TObject<{
1282
+ enabled: TOptional<TBoolean>;
1283
+ items: TOptional<TArray<TObject<{
1284
+ id: TString;
1285
+ name: TString;
1286
+ description: TOptional<TString>;
1287
+ configuration: TUnion<[
1288
+ TNull,
1289
+ TObject<{
1290
+ roots: TArray<TObject<{
1291
+ id: TString;
1292
+ fileId: TString;
1293
+ name: TOptional<TString>;
1294
+ transform: TArray<TNumber>;
1295
+ interaction: TOptional<TUnion<[
1296
+ TLiteral<"none">,
1297
+ TLiteral<"select-only">,
1298
+ TLiteral<"select-and-drag">
1299
+ ]>>;
1300
+ configuration: TOptional<TRecord<TString, TObject<{
1301
+ transform: TOptional<TArray<TNumber>>;
1302
+ publication: TOptional<TObject<{
1303
+ blocks: TRecord<TString, TAny>;
1304
+ }>>;
1305
+ materials: TOptional<TRecord<TString, TObject<{
1306
+ selected: TString;
1307
+ }>>>;
1308
+ subcomponent: TOptional<TRecord<TString, TObject<{
1309
+ selected: TString;
1310
+ }>>>;
1311
+ interaction: TOptional<TUnion<[
1312
+ TLiteral<"none">,
1313
+ TLiteral<"select-only">,
1314
+ TLiteral<"select-and-drag">
1315
+ ]>>;
1316
+ draggable: TOptional<TBoolean>;
1317
+ movementPlane: TOptional<TArray<TNumber>>;
1318
+ gridPlane: TOptional<TObject<{
1319
+ snaps: TRecord<TString, TObject<{
1320
+ snappedObjects: TArray<TString>;
1321
+ }>>;
1322
+ }>>;
1323
+ keyPoint: TOptional<TObject<{
1324
+ snappedObject: TString;
1325
+ }>>;
1326
+ }>>>;
1327
+ structureConfiguration: TOptional<TObject<{
1328
+ cameraAutoFitOn: TOptional<TBoolean>;
1329
+ showInProductsList: TOptional<TBoolean>;
1330
+ interaction: TOptional<TUnion<[
1331
+ TLiteral<"none">,
1332
+ TLiteral<"select-only">,
1333
+ TLiteral<"select-and-drag">
1334
+ ]>>;
1335
+ }>>;
1336
+ }>>;
1337
+ singleObjectRootId: TOptional<TString>;
1338
+ }>
1339
+ ]>;
1340
+ ignore: TOptional<TArray<TString>>;
1341
+ icon: TOptional<TUnion<[
1342
+ TString,
1343
+ TNull
1344
+ ]>>;
1345
+ visible: TOptional<TBoolean>;
1346
+ }>>>;
1347
+ selectedId: TOptional<TString>;
1348
+ styleSettings: TOptional<TObject<{
1349
+ image: TOptional<TObject<{
1350
+ size: TUnion<[
1351
+ TLiteral<"sm">,
1352
+ TLiteral<"md">,
1353
+ TLiteral<"lg">
1354
+ ]>;
1355
+ orientation: TUnion<[
1356
+ TLiteral<"square">,
1357
+ TLiteral<"portrait">,
1358
+ TLiteral<"landscape">
1359
+ ]>;
1360
+ }>>;
1361
+ name: TOptional<TObject<{
1362
+ visible: TOptional<TBoolean>;
1363
+ }>>;
1364
+ description: TOptional<TObject<{
1365
+ visible: TOptional<TBoolean>;
1366
+ }>>;
1367
+ }>>;
1368
+ }>>;
1369
+ }>>;
1370
+ cameraSettings: TOptional<TObject<{
1371
+ cameraType: TOptional<TUnion<[
1372
+ TLiteral<"perspective">,
1373
+ TLiteral<"orthographic">
1374
+ ]>>;
1375
+ enabledLayers: TOptional<TArray<TInteger>>;
1376
+ enablePan: TOptional<TBoolean>;
1377
+ enableRotate: TOptional<TBoolean>;
1378
+ blockRotationAxes: TOptional<TObject<{
1379
+ x: TOptional<TBoolean>;
1380
+ y: TOptional<TBoolean>;
1381
+ z: TOptional<TBoolean>;
1382
+ }>>;
1383
+ infinityRotationAxes: TOptional<TObject<{
1384
+ x: TOptional<TBoolean>;
1385
+ y: TOptional<TBoolean>;
1386
+ }>>;
1387
+ blockMoveUnderFloor: TOptional<TBoolean>;
1388
+ zoomBoundaries: TOptional<TObject<{
1389
+ min: TOptional<TNumber>;
1390
+ max: TOptional<TNumber>;
1391
+ }>>;
1392
+ rotateBoundaries: TOptional<TObject<{
1393
+ x: TOptional<TObject<{
1394
+ min: TNumber;
1395
+ max: TNumber;
1396
+ }>>;
1397
+ y: TOptional<TObject<{
1398
+ min: TNumber;
1399
+ max: TNumber;
1400
+ }>>;
1401
+ }>>;
1402
+ enableAutoRotate: TOptional<TBoolean>;
1403
+ autoRotateActivationTime: TOptional<TNumber>;
1404
+ autoRotateSpeed: TOptional<TNumber>;
1405
+ cameraProperties: TOptional<TObject<{
1406
+ near: TOptional<TNumber>;
1407
+ far: TOptional<TNumber>;
1408
+ }>>;
1409
+ }>>;
1410
+ flowsSettings: TOptional<TObject<{
1411
+ selectedFlowIds: TOptional<TArray<TString>>;
1412
+ }>>;
1413
+ }>;
1414
+ structure: TArray<TObject<{
1415
+ type: TLiteral<"set-item">;
1416
+ uuid: TString;
1417
+ name: TString;
1418
+ model: TUnion<[
1419
+ TObject<{
1420
+ type: TLiteral<"cabinet">;
1421
+ fileId: TString;
1422
+ configuration: TObject<{
1423
+ cameraAutoFitOn: TOptional<TBoolean>;
1424
+ showInProductsList: TOptional<TBoolean>;
1425
+ draggable: TOptional<TBoolean>;
1426
+ interaction: TOptional<TUnion<[
1427
+ TLiteral<"none">,
1428
+ TLiteral<"select-only">,
1429
+ TLiteral<"select-and-drag">
1430
+ ]>>;
1431
+ transform: TOptional<TArray<TNumber>>;
1432
+ }>;
1433
+ objectsConfiguration: TOptional<TRecord<TString, TObject<{
1434
+ transform: TOptional<TArray<TNumber>>;
1435
+ publication: TOptional<TObject<{
1436
+ blocks: TRecord<TString, TAny>;
1437
+ }>>;
1438
+ materials: TOptional<TRecord<TString, TObject<{
1439
+ selected: TString;
1440
+ }>>>;
1441
+ subcomponent: TOptional<TRecord<TString, TObject<{
1442
+ selected: TString;
1443
+ }>>>;
1444
+ interaction: TOptional<TUnion<[
1445
+ TLiteral<"none">,
1446
+ TLiteral<"select-only">,
1447
+ TLiteral<"select-and-drag">
1448
+ ]>>;
1449
+ draggable: TOptional<TBoolean>;
1450
+ movementPlane: TOptional<TArray<TNumber>>;
1451
+ gridPlane: TOptional<TObject<{
1452
+ snaps: TRecord<TString, TObject<{
1453
+ snappedObjects: TArray<TString>;
1454
+ }>>;
1455
+ }>>;
1456
+ keyPoint: TOptional<TObject<{
1457
+ snappedObject: TString;
1458
+ }>>;
1459
+ }>>>;
1460
+ }>,
1461
+ TObject<{
1462
+ type: TLiteral<"scene">;
1463
+ fileId: TString;
1464
+ }>,
1465
+ TObject<{
1466
+ type: TLiteral<"space-root">;
1467
+ }>
1468
+ ]>;
1469
+ }>>;
1470
+ }>;
1471
+ }>;
1472
+ type TVasFile = Static<typeof vasFileSchema>;
1473
+ declare const objectConfigurationSchema: TObject<{
1474
+ transform: TOptional<TArray<TNumber>>;
1475
+ publication: TOptional<TObject<{
1476
+ blocks: TRecord<TString, TAny>;
1477
+ }>>;
1478
+ materials: TOptional<TRecord<TString, TObject<{
1479
+ selected: TString;
1480
+ }>>>;
1481
+ subcomponent: TOptional<TRecord<TString, TObject<{
1482
+ selected: TString;
1483
+ }>>>;
1484
+ interaction: TOptional<TUnion<[
1485
+ TLiteral<"none">,
1486
+ TLiteral<"select-only">,
1487
+ TLiteral<"select-and-drag">
1488
+ ]>>;
1489
+ draggable: TOptional<TBoolean>;
1490
+ movementPlane: TOptional<TArray<TNumber>>;
1491
+ gridPlane: TOptional<TObject<{
1492
+ snaps: TRecord<TString, TObject<{
1493
+ snappedObjects: TArray<TString>;
1494
+ }>>;
1495
+ }>>;
1496
+ keyPoint: TOptional<TObject<{
1497
+ snappedObject: TString;
1498
+ }>>;
1499
+ }>;
1500
+ type TObjectConfiguration = Static<typeof objectConfigurationSchema>;
1501
+ declare const interactionModeSchema: TUnion<[
1502
+ TLiteral<"none">,
1503
+ TLiteral<"select-only">,
1504
+ TLiteral<"select-and-drag">
1505
+ ]>;
1506
+ type TInteractionMode = Static<typeof interactionModeSchema>;
1507
+ type TPublication = {
1508
+ containers: TPublicationContainer[];
1509
+ };
1510
+ type TPublicationContainer = {
1511
+ id: string;
1512
+ panels: TPublicationPanel[];
1513
+ };
1514
+ type TPublicationPanel = {
1515
+ id: string;
1516
+ label: string;
1517
+ events: TEvents;
1518
+ blocks: TPublicationBlock[];
1519
+ };
1520
+ type TPublicationBlock = {
1521
+ id: string;
1522
+ label: string;
1523
+ events: TEvents;
1524
+ kind: TBlockNumberRange | TBlockNumberPredefined | TBlockText | TBlockTextInput | TBlockBoolean | TBlockList;
1525
+ };
1526
+ type TBlockNumberRange = {
1527
+ type: "number-range";
1528
+ value: number;
1529
+ range: {
1530
+ min: number;
1531
+ max: number;
1532
+ };
1533
+ preferred: number[];
1534
+ step: number;
1535
+ };
1536
+ type TBlockNumberPredefined = {
1537
+ type: "number-predefined";
1538
+ value: number;
1539
+ options: number[];
1540
+ };
1541
+ type TBlockText = {
1542
+ type: "text";
1543
+ value: string;
1544
+ };
1545
+ type TBlockTextInput = {
1546
+ type: "text-input";
1547
+ value: string;
1548
+ maxLength: number;
1549
+ placeholder: string;
1550
+ };
1551
+ type TBlockBoolean = {
1552
+ type: "boolean";
1553
+ value: boolean;
1554
+ };
1555
+ type TBlockList = {
1556
+ type: "list";
1557
+ style: TBlockListDropdownStyle | TBlockListButtonsStyle | TBlockListDropdownImageStyle | TBlockListButtonsImageStyle;
1558
+ selected: string;
1559
+ options: Array<{
1560
+ value: string;
1561
+ label: string;
1562
+ imageId?: string;
1563
+ }>;
1564
+ };
1565
+ type TBlockListDropdownStyle = {
1566
+ type: "dropdown";
1567
+ };
1568
+ type TBlockListButtonsStyle = {
1569
+ type: "buttons";
1570
+ align: "content" | "responsive";
1571
+ };
1572
+ type TBlockListDropdownImageStyle = {
1573
+ type: "dropdownImage";
1574
+ size: "sm" | "md" | "lg";
1575
+ };
1576
+ type TBlockListButtonsImageStyle = {
1577
+ type: "buttonsImage";
1578
+ size: "sm" | "md" | "lg";
1579
+ shape: "square" | "portrait" | "landscape";
1580
+ };
1581
+ type TEvents = {
1582
+ hover?: Array<{
1583
+ type: "layer";
1584
+ layers: number[];
1585
+ } | {
1586
+ type: "dimension";
1587
+ ids: string[];
1588
+ }>;
1589
+ } | undefined;
1590
+ type TDocumentation = {
1591
+ id: string;
1592
+ parameters: {
1593
+ name: string;
1594
+ type: "TEXT" | "PROJECTION" | "BOOL" | "SOURCE_DATA";
1595
+ uuid: string;
1596
+ value: string;
1597
+ }[];
1598
+ };
1599
+ type TStudioId = 0 | 1 | 2;
1600
+ type TStudioToneMappingMode = "None" | "Linear" | "Reinhard" | "Cineon" | "ACESFilmic" | "AgX" | "Neutral";
1601
+ type TStudioShadowMapType = "Basic" | "PCF" | "VSM";
1602
+ type TVsmShadowQuality = "Performance" | "Balanced" | "Quality";
1603
+ type TStudioShadowMapConfig = {
1604
+ type: TStudioShadowMapType;
1605
+ vsmQuality: TVsmShadowQuality;
1606
+ };
1607
+ type TStudioSceneConfig = {
1608
+ backgroundColor: string | null;
1609
+ envMap: string | null;
1610
+ backgroundMode: "color" | "environment";
1611
+ backgroundBlurriness: number;
1612
+ backgroundIntensity: number;
1613
+ environmentIntensity: number;
1614
+ environmentRotationY: number;
1615
+ shadowMap: TStudioShadowMapConfig;
1616
+ toneMapping: {
1617
+ mode: TStudioToneMappingMode;
1618
+ exposure: number;
1619
+ };
1620
+ };
1621
+ type TStudioFloorConfig = {
1622
+ activeFloor: boolean;
1623
+ activeFloorShadow: boolean;
1624
+ useFloorInAR: boolean;
1625
+ reflection: {
1626
+ enabled: boolean;
1627
+ opacity: number;
1628
+ fadeDistance: number;
1629
+ };
1630
+ floorSize: {
1631
+ x: number;
1632
+ y: number;
1633
+ };
1634
+ floorSizeType: "infinity" | "likeObject" | "custom";
1635
+ selectedMaterialGroup: number | null;
1636
+ selectedDefaultMaterial: number | null;
1637
+ };
1638
+ type TStudioSceneSettings = Partial<Omit<TStudioSceneConfig, "toneMapping" | "shadowMap">> & {
1639
+ toneMapping?: Partial<TStudioSceneConfig["toneMapping"]>;
1640
+ shadowMap?: Partial<TStudioSceneConfig["shadowMap"]>;
1641
+ };
1642
+ type TStudioFloorSettings = Partial<Omit<TStudioFloorConfig, "reflection" | "floorSize">> & {
1643
+ reflection?: Partial<TStudioFloorConfig["reflection"]>;
1644
+ floorSize?: Partial<TStudioFloorConfig["floorSize"]>;
1645
+ };
1646
+ type TStudioSettings = {
1647
+ scene?: TStudioSceneSettings;
1648
+ floor?: TStudioFloorSettings;
1649
+ };
1650
+ type TStudioResolvedSettings = {
1651
+ scene: TStudioSceneConfig;
1652
+ floor: TStudioFloorConfig;
1653
+ };
1654
+ type TStudioDefinition<TBuilderContext = unknown, TLightGroup = unknown> = {
1655
+ id: TStudioId;
1656
+ name: string;
1657
+ settings: TStudioSettings;
1658
+ configuration: {
1659
+ createLights: (context: TBuilderContext) => TLightGroup;
1660
+ };
1661
+ };
1662
+ type TStudioLightsSettings = {
1663
+ preset: "directional" | "area" | "environment";
1664
+ };
1665
+ type TStudioOverrides = {
1666
+ scene?: TStudioSceneSettings;
1667
+ lights?: Partial<TStudioLightsSettings>;
1668
+ floor?: TStudioFloorSettings;
1669
+ };
1670
+ type TValue = string | number | boolean;
1671
+ type TSettings = TVasFile["set"]["configuration"]["settings"] & {
1672
+ sceneSettings?: TVasFile["set"]["configuration"]["sceneSettings"] & {
1673
+ backgroundColor?: string | null;
1674
+ studioId?: number | null;
1675
+ envMap?: string | null;
1676
+ toneMapping?: {
1677
+ mode?: "None" | "Linear" | "Reinhard" | "Cineon" | "ACESFilmic" | "AgX" | "Neutral";
1678
+ exposure?: number;
1679
+ };
1680
+ shadowMap?: {
1681
+ type?: TStudioShadowMapType;
1682
+ vsmQuality?: TVsmShadowQuality;
1683
+ };
1684
+ };
1685
+ cameraSettings?: TVasFile["set"]["configuration"]["cameraSettings"];
1686
+ flowsSettings?: TVasFile["set"]["configuration"]["flowsSettings"];
1687
+ };
1688
+ type TRootObjectData = {
1689
+ id: string;
1690
+ fileId: string;
1691
+ transform: number[];
1692
+ showInProductsList?: boolean;
1693
+ singleObjectSelected?: boolean;
1694
+ };
1695
+ type TRootObjectConfiguration = {
1696
+ id: string;
1697
+ fileId: string;
1698
+ name?: string;
1699
+ transform: number[];
1700
+ interaction?: TInteractionMode;
1701
+ configuration?: Record<string, TObjectConfiguration>;
1702
+ };
1703
+ type TObjectDocumentation = {
1704
+ objectId: string;
1705
+ documentation: TDocumentation;
1706
+ };
1707
+ type TRootData = Partial<{
1708
+ publication: TPublication;
1709
+ documentations: TObjectDocumentation[];
1710
+ }>;
1711
+ type TRenderDataObjectTag = `subcomponent:${string}`;
1712
+ type TAnimationRenderData = {
1713
+ key: string;
1714
+ clips: {
1715
+ name: string;
1716
+ duration: number;
1717
+ channels: {
1718
+ target: {
1719
+ path: "translation" | "rotation";
1720
+ };
1721
+ sampler: {
1722
+ start: "current";
1723
+ times: number[];
1724
+ easings: string[];
1725
+ values: TValue[][];
1726
+ };
1727
+ }[];
1728
+ }[];
1729
+ };
1730
+ type TRenderDataObject = Partial<{
1731
+ controlledVisibility: boolean;
1732
+ inAvailableSpace: boolean;
1733
+ count: number;
1734
+ positioning: number[];
1735
+ transform: number[];
1736
+ propagation: number[];
1737
+ geometry: [
1738
+ string,
1739
+ Record<string, TValue>
1740
+ ];
1741
+ dimensionGeometry: [
1742
+ string,
1743
+ Record<string, TValue>
1744
+ ];
1745
+ importedGeometry: [
1746
+ string,
1747
+ Record<string, TValue>
1748
+ ];
1749
+ isGroup: boolean;
1750
+ isImport: boolean;
1751
+ interaction: TInteractionMode;
1752
+ movementPlane: number[];
1753
+ keyPoint: {
1754
+ tags: string[];
1755
+ snappedGridPlaneId?: string;
1756
+ };
1757
+ gridPlane: {
1758
+ mode: "static" | "sticky";
1759
+ priority: TValue;
1760
+ tags: string[];
1761
+ snaps: TSnap[];
1762
+ };
1763
+ boxCollider: {
1764
+ tags: string[];
1765
+ collision: boolean;
1766
+ interact: boolean;
1767
+ occluder: boolean;
1768
+ rangefinder: boolean;
1769
+ };
1770
+ rangefinder: {
1771
+ tags: string[];
1772
+ axis: Array<"x" | "y" | "z">;
1773
+ near: number;
1774
+ far: number;
1775
+ };
1776
+ dynamicConfiguration: Record<string, number>;
1777
+ layers: {
1778
+ ids: number[];
1779
+ descendants: boolean;
1780
+ };
1781
+ dimensioning: Record<string, never>;
1782
+ material: Record<string, {
1783
+ blobUrl: string;
1784
+ overrides?: Record<string, unknown>;
1785
+ }>;
1786
+ modifier: "subtract" | "intersect";
1787
+ textureFit: {
1788
+ offset: {
1789
+ x: number | "random";
1790
+ y: number | "random";
1791
+ };
1792
+ rotation: number | "random";
1793
+ scale: number;
1794
+ flip: {
1795
+ x: boolean;
1796
+ y: boolean;
1797
+ };
1798
+ };
1799
+ rendering: {
1800
+ shadow: [
1801
+ boolean,
1802
+ boolean
1803
+ ];
1804
+ order: number;
1805
+ };
1806
+ animation: TAnimationRenderData;
1807
+ tags: TRenderDataObjectTag[];
1808
+ }>;
1809
+ type TUniqueRenderDataObject = {
1810
+ id: string;
1811
+ ref: string;
1812
+ } & TRenderDataObject;
1813
+ type TRenderData = {
1814
+ entryObjects: number[];
1815
+ tree: Record<string, number[]>;
1816
+ objects: TUniqueRenderDataObject[];
1817
+ activeDrag?: number;
1818
+ };
1819
+ type TPricingSection = {
1820
+ name: string;
1821
+ table: string[][];
1822
+ price: number;
1823
+ priceColumnIndex: number;
1824
+ };
1825
+ type TPricingData = {
1826
+ sections: TPricingSection[];
1827
+ finalPrice: number;
1828
+ status?: "available" | "unavailable";
1829
+ };
1830
+ type TCustomRuleData = TPricingData & {
1831
+ status: "available" | "unavailable";
1832
+ label: string;
1833
+ unit: string;
1834
+ spaceBeforeUnit: boolean;
1835
+ };
1836
+ type TCustomRulesData = Record<string, TCustomRuleData>;
1837
+ type TTreeObjectOverrides = Partial<{
1838
+ transform: number[];
1839
+ movementPlane: number[];
1840
+ interaction: TInteractionMode;
1841
+ }>;
1842
+ type TSnapType = "point" | "grid";
1843
+ type TSnapTypeMaker<T extends TSnapType, U extends Record<string, unknown>> = {
1844
+ id: string;
1845
+ type: T;
1846
+ data: U;
1847
+ snappedKeyPointIds: string[];
1848
+ };
1849
+ type TSnapPoint = TSnapTypeMaker<"point", {
1850
+ x: TValue;
1851
+ y: TValue;
1852
+ }>;
1853
+ type TSnapGrid = TSnapTypeMaker<"grid", {
1854
+ cols: TValue;
1855
+ rows: TValue;
1856
+ }>;
1857
+ type TSnap = TSnapPoint | TSnapGrid;
1858
+ type TSnapIdentifierMaker<T extends TSnapType, U extends Record<string, unknown>> = {
1859
+ id: string;
1860
+ type: T;
1861
+ data: U;
1862
+ };
1863
+ type TSnapPointIdentifier = TSnapIdentifierMaker<"point", {
1864
+ x: number;
1865
+ y: number;
1866
+ }>;
1867
+ type TSnapGridIdentifier = TSnapIdentifierMaker<"grid", {
1868
+ col: number;
1869
+ row: number;
1870
+ }>;
1871
+ type TSnapIdentifier = TSnapPointIdentifier | TSnapGridIdentifier;
1872
+ type TCommonMaterialGroupProperties = {
1873
+ hash: string;
1874
+ selected: string;
1875
+ alias: string;
1876
+ };
1877
+ type TMaterialGroup = ({
1878
+ type: "list";
1879
+ materials: string[];
1880
+ } | {
1881
+ type: "query";
1882
+ query: Record<string, any>;
1883
+ }) & TCommonMaterialGroupProperties;
1884
+ type TCommonSubcomponentGroupProperties = {
1885
+ hash: string;
1886
+ selected: string;
1887
+ alias: string;
1888
+ };
1889
+ type TSubcomponentGroup = ({
1890
+ type: "list";
1891
+ assets: string[];
1892
+ } | {
1893
+ type: "query";
1894
+ query: Record<string, any>;
1895
+ }) & TCommonSubcomponentGroupProperties;
1896
+ declare const exportConfigurationSchema: TObject<{
1897
+ exports: TArray<TObject<{
1898
+ name: TString;
1899
+ bomTemplateId: TNumber;
1900
+ bomFilterId: TNumber;
1901
+ }>>;
1902
+ v: TLiteral<1>;
1903
+ }>;
1904
+ type TExportConfigurationFile = Static<typeof exportConfigurationSchema>;
1905
+ type TCommonWebComponentEvents = {
1906
+ ready: TTimestampEventPayload;
1907
+ scriptsLoaded: TTimestampEventPayload;
1908
+ };
1909
+ type TWebComponentEvents<T extends Record<string, unknown> = TCommonWebComponentEvents> = TCommonWebComponentEvents & T;
1910
+ type TTimestampEventPayload = {
1911
+ timestamp: number;
1912
+ };
1913
+ declare const configurationNgSchema: TObject<{
1914
+ assetId: TString;
1915
+ createdAt: TNumber;
1916
+ libraryVersion: TString;
1917
+ roots: TArray<TObject<{
1918
+ id: TOptional<TString>;
1919
+ fileId: TString;
1920
+ configuration: TOptional<TRecord<TString, TObject<{
1921
+ transform: TOptional<TArray<TNumber>>;
1922
+ publication: TOptional<TObject<{
1923
+ blocks: TRecord<TString, TAny>;
1924
+ }>>;
1925
+ materials: TOptional<TRecord<TString, TObject<{
1926
+ selected: TString;
1927
+ }>>>;
1928
+ subcomponent: TOptional<TRecord<TString, TObject<{
1929
+ selected: TString;
1930
+ }>>>;
1931
+ interaction: TOptional<TUnion<[
1932
+ TLiteral<"none">,
1933
+ TLiteral<"select-only">,
1934
+ TLiteral<"select-and-drag">
1935
+ ]>>;
1936
+ draggable: TOptional<TBoolean>;
1937
+ movementPlane: TOptional<TArray<TNumber>>;
1938
+ gridPlane: TOptional<TObject<{
1939
+ snaps: TRecord<TString, TObject<{
1940
+ snappedObjects: TArray<TString>;
1941
+ }>>;
1942
+ }>>;
1943
+ keyPoint: TOptional<TObject<{
1944
+ snappedObject: TString;
1945
+ }>>;
1946
+ }>>>;
1947
+ }>>;
1948
+ v: TLiteral<1>;
1949
+ }>;
1950
+ type TConfigurationNg = Static<typeof configurationNgSchema>;
1951
+ type TConfigurationBaseNg = Pick<TConfigurationNg, "roots">;
1952
+ declare const configurationExportDataNgSchema: TObject<{
1953
+ creationDate: TString;
1954
+ sourceUrl: TString;
1955
+ roots: TArray<TObject<{
1956
+ id: TString;
1957
+ fileId: TString;
1958
+ name: TOptional<TString>;
1959
+ transform: TArray<TNumber>;
1960
+ mainParameters: TArray<TObject<{
1961
+ name: TString;
1962
+ value: TUnion<[
1963
+ TString,
1964
+ TNumber,
1965
+ TBoolean,
1966
+ TNull
1967
+ ]>;
1968
+ }>>;
1969
+ customParameters: TArray<TObject<{
1970
+ name: TString;
1971
+ value: TUnion<[
1972
+ TString,
1973
+ TNumber,
1974
+ TBoolean,
1975
+ TNull
1976
+ ]>;
1977
+ }>>;
1978
+ bom: TArray<TObject<{
1979
+ name: TString;
1980
+ head: TArray<TString>;
1981
+ body: TArray<TArray<TUnknown>>;
1982
+ }>>;
1983
+ }>>;
1984
+ }>;
1985
+ type TConfigurationExportDataNg = Static<typeof configurationExportDataNgSchema>;
1986
+ type TRenderStreamStarted = {
1987
+ renderStreamId: number;
1988
+ settings: TSettings;
1989
+ };
1990
+ type TRenderChunk = {
1991
+ renderStreamId: number;
1992
+ data: TRenderData;
1993
+ };
1994
+ type TRenderStreamFailed = {
1995
+ renderStreamId: number;
1996
+ error: string;
1997
+ };
1998
+ type TRenderStreamEvents = {
1999
+ renderStreamStarted: TRenderStreamStarted;
2000
+ renderChunkReady: TRenderChunk;
2001
+ renderStreamFailed: TRenderStreamFailed;
2002
+ };
2003
+ type TPlacementBounds = {
2004
+ size: {
2005
+ x: number;
2006
+ y: number;
2007
+ z: number;
2008
+ };
2009
+ };
2010
+ export type TEngineApi = {
2011
+ /** @ignore */
2012
+ internal: {
2013
+ updateConfiguration(configuration: TVasFile["set"]["configuration"]): Promise<void>;
2014
+ };
2015
+ events: Emittery<TEngineApiEvents>;
2016
+ updateDataById(id: string, data: TTreeObjectOverrides): void;
2017
+ snap(payload: {
2018
+ keyPointId: string;
2019
+ gridPlaneId: string;
2020
+ data: TSnapIdentifier;
2021
+ }): void;
2022
+ addVac(id: string, options?: {
2023
+ startInExternalPlacementDrag?: boolean;
2024
+ inAvailableSpace?: boolean;
2025
+ objectId?: string;
2026
+ }): Promise<void>;
2027
+ preloadVac(id: string): Promise<void>;
2028
+ unsnap(payload: {
2029
+ objectId: string;
2030
+ }): void;
2031
+ getAssetsPaletteConfiguration(): Promise<TAssetsPaletteConfiguration | null>;
2032
+ getDocumentationConfiguration(): Promise<TDocumentation | null>;
2033
+ getCameraConfiguration(): Promise<TCameraConfiguration | null>;
2034
+ getLayoutConfiguration(): Promise<TLayoutSettings | null>;
2035
+ getAssemblyMode(): "multi-object" | "single-object";
2036
+ getLayoutResult(): Promise<TVasFile["set"]["configuration"]["layoutResult"] | undefined>;
2037
+ getPresetsConfiguration(): Promise<TPresetsConfiguration | null>;
2038
+ getRootObjects(): Promise<TRootObjectData[]>;
2039
+ getRootObjectsConfiguration(): Promise<TRootObjectConfiguration[]>;
2040
+ getRootObjectsExportData(exports: TExportConfigurationFile["exports"]): Promise<TConfigurationExportDataNg["roots"]>;
2041
+ deleteRootObject(id: string | string[]): Promise<void>;
2042
+ getMaterialsConfiguration(): Promise<TMaterialsConfiguration | null>;
2043
+ changeMaterial(data: {
2044
+ objectId: string;
2045
+ materialGroupId: string;
2046
+ materialId: string;
2047
+ }): Promise<void>;
2048
+ propagateMaterialGroup(data: {
2049
+ objectId: string;
2050
+ materialGroupId: string;
2051
+ }): Promise<void>;
2052
+ getMaterialGroups(objectId: string): Promise<TMaterialGroup$1[]>;
2053
+ getMaterialGroupMaterials(materialGroupId: string): Promise<TMaterialData[]>;
2054
+ getSubcomponentsConfiguration(): Promise<TSubcomponentsConfiguration | null>;
2055
+ changeSubcomponent(data: {
2056
+ objectId: string;
2057
+ subcomponentGroupId: string;
2058
+ subcomponentId: string;
2059
+ }): Promise<void>;
2060
+ propagateSubcomponentGroup(data: {
2061
+ objectId: string;
2062
+ subcomponentGroupId: string;
2063
+ }): Promise<void>;
2064
+ getSubcomponentGroups(objectId: string): Promise<TSubcomponentGroup$1[]>;
2065
+ getSubcomponentGroupSubcomponents(subcomponentGroupId: string): Promise<TSubcomponentData[]>;
2066
+ generateBom(data: {
2067
+ templateId: number;
2068
+ filterId: number;
2069
+ rootId?: string;
2070
+ }): Promise<{
2071
+ head: string[];
2072
+ body: unknown[][];
2073
+ }>;
2074
+ loadConfiguration(id: string | null): Promise<void>;
2075
+ loadPreset(id: string | TPreset | null): Promise<void>;
2076
+ calculate(props: {
2077
+ overrides: {
2078
+ blocks?: Record<string, Record<string, unknown>>;
2079
+ material?: Record<string, {
2080
+ hash: string;
2081
+ value: string;
2082
+ }>;
2083
+ subcomponent?: Record<string, {
2084
+ hash: string;
2085
+ value: string;
2086
+ }>;
2087
+ };
2088
+ }): Promise<{
2089
+ data: TRenderData;
2090
+ partial?: boolean;
2091
+ }>;
2092
+ };
2093
+ type TCameraConfiguration = {
2094
+ enabledLayers?: number[];
2095
+ };
2096
+ type TAssetsPaletteConfiguration = {
2097
+ linkedProperties?: TAssetsPaletteLinkedPropertiesIds;
2098
+ styleSettings?: TStyleSettings;
2099
+ defaultNodeId?: number;
2100
+ categories: TAssetsPaletteUnparsedCategory[];
2101
+ tagIds: number[];
2102
+ patternType?: TAssetsPalettePatternType;
2103
+ addingAssetsMethod?: TAddingAssetsMethod;
2104
+ sortingSettings?: TSortingSettings;
2105
+ };
2106
+ type TMaterialsConfiguration = {
2107
+ linkedProperties?: TMaterialsLinkedPropertiesIds;
2108
+ styleSettings?: TStyleSettings;
2109
+ materialsSortingSettings?: TSortingSettings;
2110
+ materialGroupsSortingSettings?: TSortingSettings;
2111
+ behavior?: {
2112
+ applicationStrategy?: TApplicationStrategy;
2113
+ };
2114
+ };
2115
+ type TSubcomponentsConfiguration = {
2116
+ linkedProperties?: TSubcomponentsLinkedPropertiesIds;
2117
+ styleSettings?: TStyleSettings;
2118
+ subcomponentsSortingSettings?: TSortingSettings;
2119
+ subcomponentGroupsSortingSettings?: TSortingSettings;
2120
+ behavior?: {
2121
+ applicationStrategy?: TApplicationStrategy;
2122
+ };
2123
+ };
2124
+ type TApplicationStrategy = "selected" | "all";
2125
+ type TEngineApiEvents = TWebComponentEvents<{
2126
+ loading: void;
2127
+ loaded: void;
2128
+ updating: void;
2129
+ updated: TUpdatedPayload;
2130
+ placementBoundsReady: {
2131
+ placementSessionId: string;
2132
+ placementBounds: TPlacementBounds;
2133
+ };
2134
+ pricingUpdated: TPricingData;
2135
+ customRulesUpdated: TCustomRulesData;
2136
+ } & TRenderStreamEvents>;
2137
+ type TRenderUpdate = {
2138
+ type: "render";
2139
+ cause?: "preset";
2140
+ data: TRenderData;
2141
+ dataByRootId?: Record<string, TRootData>;
2142
+ partial?: boolean;
2143
+ settings?: TSettings;
2144
+ renderStreamId?: number;
2145
+ /** Render entry IDs changed after their chunks were emitted; required for stream completion. */
2146
+ dirtyRootIds?: string[];
2147
+ };
2148
+ type TDeleteUpdate = {
2149
+ type: "delete";
2150
+ ids: string[];
2151
+ };
2152
+ type TUpdatedPayload = TRenderUpdate | TDeleteUpdate;
2153
+ type TItemData = {
2154
+ id: string;
2155
+ name: string;
2156
+ properties: TPropertyItem[];
2157
+ };
2158
+ type TMaterialGroup$1 = {
2159
+ id: string;
2160
+ name: string;
2161
+ selectedMaterialId: string;
2162
+ };
2163
+ type TMaterialData = TItemData;
2164
+ type TSubcomponentGroup$1 = {
2165
+ id: string;
2166
+ name: string;
2167
+ selectedSubcomponentId: string;
2168
+ };
2169
+ type TSubcomponentData = TItemData;
2170
+ type TAssetsPaletteUnparsedCategory = {
2171
+ id: number;
2172
+ name: string;
2173
+ tags: number[];
2174
+ children?: TAssetsPaletteUnparsedCategory[];
2175
+ icon?: string | null;
2176
+ };
2177
+ type TAssetsPaletteLinkedPropertiesIds = {
2178
+ name?: number;
2179
+ description?: number;
2180
+ image?: number;
2181
+ };
2182
+ type TMaterialsLinkedPropertiesIds = {
2183
+ name?: number;
2184
+ thumbnail?: number;
2185
+ };
2186
+ type TSubcomponentsLinkedPropertiesIds = {
2187
+ name?: number;
2188
+ thumbnail?: number;
2189
+ };
2190
+ type TLinkedPropertiesIds = TAssetsPaletteLinkedPropertiesIds | TMaterialsLinkedPropertiesIds;
2191
+ type TAssetsPalettePatternType = "hierarchical" | "breadcrumbs";
2192
+ type TAddingAssetsMethod = "dragAndDrop" | "clickToAdd";
2193
+ type TSortingSettings = {
2194
+ field: "name" | "property" | "id";
2195
+ order: "asc" | "desc";
2196
+ };
2197
+ type TImageStyleSettings = {
2198
+ size: "sm" | "md" | "lg";
2199
+ orientation: "square" | "portrait" | "landscape";
2200
+ };
2201
+ type TStyleSettings = {
2202
+ image?: TImageStyleSettings;
2203
+ name?: {
2204
+ visible?: boolean;
2205
+ };
2206
+ description?: {
2207
+ visible?: boolean;
2208
+ };
2209
+ };
2210
+ type TPropertyItem = {
2211
+ id: number;
2212
+ value: string;
2213
+ };
2214
+ type TLayoutSettings = {
2215
+ colors: {
2216
+ primaryColor: string;
2217
+ secondaryColor: string;
2218
+ };
2219
+ defaultLayoutMode?: "configuration" | "materials";
2220
+ layersButtons?: Array<{
2221
+ label: string;
2222
+ layers: number[];
2223
+ defaultState: boolean;
2224
+ }>;
2225
+ presetsEnabled?: boolean;
2226
+ };
2227
+ type TPreset = {
2228
+ id: string;
2229
+ name: string;
2230
+ configuration: TConfigurationBaseNg | null;
2231
+ description?: string;
2232
+ icon?: string | null;
2233
+ visible?: boolean;
2234
+ };
2235
+ type TPresetsConfiguration = {
2236
+ enabled: boolean;
2237
+ selectedId?: string;
2238
+ styleSettings?: TStyleSettings;
2239
+ items: TPreset[];
2240
+ };
2241
+ declare const assetCacheBlobSchema: TObject<{
2242
+ blob: TUnknown;
2243
+ url: TString;
2244
+ }>;
2245
+ type TAssetCacheBlob = Static<typeof assetCacheBlobSchema>;
2246
+ declare const vacFileSchema: TUnion<[
2247
+ TObject<{
2248
+ component: TObject<{
2249
+ version: TString;
2250
+ id: TString;
2251
+ name: TString;
2252
+ }>;
2253
+ extensions: TArray<TString>;
2254
+ tree: TRecord<TNumber, TArray<TNumber>>;
2255
+ scene: TNumber;
2256
+ dataSource: TObject<{
2257
+ headers: TArray<TString>;
2258
+ rowId: TArray<TString>;
2259
+ colOrder: TArray<TString>;
2260
+ rowOrder: TArray<TString>;
2261
+ dataSource: TArray<TRecord<TString, TString>>;
2262
+ links: TOptional<TRecord<TString, TArray<TRecord<TString, TString>>>>;
2263
+ filters: TArray<TObject<{
2264
+ p: TString;
2265
+ f: TString;
2266
+ w: TString;
2267
+ pr: TString;
2268
+ }>>;
2269
+ select: TString;
2270
+ }>;
2271
+ objects: TArray<TObject<{
2272
+ ref: TOptional<TString>;
2273
+ descriptor: TOptional<TObject<{
2274
+ name: TString;
2275
+ code: TOptional<TString>;
2276
+ }>>;
2277
+ transform: TOptional<TNumber>;
2278
+ positioning: TOptional<TNumber>;
2279
+ boxSize: TOptional<TObject<{
2280
+ entities: TArray<TNumber>;
2281
+ values: TArray<TNumber>;
2282
+ }>>;
2283
+ propagation: TOptional<TNumber>;
2284
+ count: TOptional<TObject<{
2285
+ value: TString;
2286
+ }>>;
2287
+ geometry: TOptional<TNumber>;
2288
+ ar: TOptional<TObject<{
2289
+ enabled: TString;
2290
+ }>>;
2291
+ documentation: TOptional<TObject<{
2292
+ enabled: TString;
2293
+ }>>;
2294
+ attributes: TOptional<TArray<TNumber>>;
2295
+ uv: TOptional<TNumber>;
2296
+ structure: TOptional<TArray<TNumber>>;
2297
+ importedGeometry: TOptional<TNumber>;
2298
+ panel: TOptional<TNumber>;
2299
+ dimensionGeometry: TOptional<TNumber>;
2300
+ modifierAction: TOptional<TObject<{
2301
+ type: TString;
2302
+ }>>;
2303
+ id: TOptional<TObject<{
2304
+ value: TUnion<[
2305
+ TString,
2306
+ TNumber
2307
+ ]>;
2308
+ }>>;
2309
+ component: TOptional<TNumber>;
2310
+ leaf: TOptional<TObject<{
2311
+ state: TBoolean;
2312
+ }>>;
2313
+ extensions: TOptional<TRecord<TString, TNumber>>;
2314
+ gridPlane: TOptional<TObject<{
2315
+ mode: TOptional<TUnion<[
2316
+ TLiteral<"static">,
2317
+ TLiteral<"sticky">
2318
+ ]>>;
2319
+ tags: TArray<TNumber>;
2320
+ snaps: TArray<TUnion<[
2321
+ TObject<{
2322
+ type: TNumber;
2323
+ rows: TNumber;
2324
+ cols: TNumber;
2325
+ }>,
2326
+ TObject<{
2327
+ type: TNumber;
2328
+ x: TNumber;
2329
+ y: TNumber;
2330
+ }>
2331
+ ]>>;
2332
+ priority: TOptional<TNumber>;
2333
+ }>>;
2334
+ keyPoint: TOptional<TObject<{
2335
+ tags: TArray<TNumber>;
2336
+ }>>;
2337
+ boxCollider: TOptional<TObject<{
2338
+ tags: TArray<TNumber>;
2339
+ collision: TBoolean;
2340
+ interact: TBoolean;
2341
+ occluder: TOptional<TBoolean>;
2342
+ rangefinder: TOptional<TBoolean>;
2343
+ }>>;
2344
+ dynamicConfiguration: TOptional<TRecord<TString, TNumber>>;
2345
+ layers: TOptional<TObject<{
2346
+ ids: TArray<TNumber>;
2347
+ descendants: TOptional<TBoolean>;
2348
+ }>>;
2349
+ dimensioning: TOptional<TObject<{}>>;
2350
+ material: TOptional<TObject<{
2351
+ id: TNumber;
2352
+ }>>;
2353
+ materials: TOptional<TObject<{
2354
+ groups: TArray<TIntersect<[
2355
+ TObject<{
2356
+ availability: TNumber;
2357
+ alias: TOptional<TNumber>;
2358
+ tag: TNumber;
2359
+ }>,
2360
+ TUnion<[
2361
+ TObject<{
2362
+ type: TLiteral<"list">;
2363
+ materials: TArray<TNumber>;
2364
+ selected: TNumber;
2365
+ }>,
2366
+ TObject<{
2367
+ type: TLiteral<"query">;
2368
+ query: TNumber;
2369
+ selected: TNumber;
2370
+ }>
2371
+ ]>
2372
+ ]>>;
2373
+ }>>;
2374
+ textureFit: TOptional<TObject<{
2375
+ offset: TObject<{
2376
+ x: TNumber;
2377
+ y: TNumber;
2378
+ }>;
2379
+ rotation: TNumber;
2380
+ scale: TNumber;
2381
+ flip: TObject<{
2382
+ x: TBoolean;
2383
+ y: TBoolean;
2384
+ }>;
2385
+ random: TObject<{
2386
+ offsetX: TBoolean;
2387
+ offsetY: TBoolean;
2388
+ rotation: TBoolean;
2389
+ }>;
2390
+ }>>;
2391
+ rendering: TOptional<TObject<{
2392
+ shadow: TObject<{
2393
+ receive: TBoolean;
2394
+ cast: TBoolean;
2395
+ }>;
2396
+ order: TNumber;
2397
+ }>>;
2398
+ subcomponent: TOptional<TObject<{
2399
+ groups: TArray<TIntersect<[
2400
+ TObject<{
2401
+ availability: TNumber;
2402
+ alias: TOptional<TNumber>;
2403
+ tag: TNumber;
2404
+ }>,
2405
+ TUnion<[
2406
+ TObject<{
2407
+ type: TLiteral<"list">;
2408
+ assets: TArray<TNumber>;
2409
+ selected: TNumber;
2410
+ }>,
2411
+ TObject<{
2412
+ type: TLiteral<"query">;
2413
+ query: TNumber;
2414
+ selected: TNumber;
2415
+ }>
2416
+ ]>
2417
+ ]>>;
2418
+ }>>;
2419
+ rangefinder: TOptional<TObject<{
2420
+ tags: TArray<TNumber>;
2421
+ axis: TArray<TUnion<[
2422
+ TLiteral<"x">,
2423
+ TLiteral<"y">,
2424
+ TLiteral<"z">
2425
+ ]>>;
2426
+ near: TOptional<TNumber>;
2427
+ far: TOptional<TNumber>;
2428
+ }>>;
2429
+ animationSet: TOptional<TNumber>;
2430
+ }>>;
2431
+ variables: TObject<{
2432
+ entities: TArray<TNumber>;
2433
+ values: TArray<TUnion<[
2434
+ TNumber,
2435
+ TObject<{
2436
+ lookup: TNumber;
2437
+ }>
2438
+ ]>>;
2439
+ drivers: TArray<TNumber>;
2440
+ designations: TArray<TString>;
2441
+ helpers: TArray<TNumber>;
2442
+ }>;
2443
+ extensionsRequired: TArray<TString>;
2444
+ scenes: TArray<TObject<{
2445
+ objects: TArray<TNumber>;
2446
+ }>>;
2447
+ attributes: TOptional<TArray<TRecord<TString, TString>>>;
2448
+ entities: TOptional<TArray<TString>>;
2449
+ values: TOptional<TArray<TUnion<[
2450
+ TNumber,
2451
+ TString,
2452
+ TBoolean
2453
+ ]>>>;
2454
+ assets: TOptional<TArray<TString>>;
2455
+ $schema: TOptional<TString>;
2456
+ transforms: TOptional<TArray<TArray<TString>>>;
2457
+ positionings: TOptional<TArray<TArray<TNumber>>>;
2458
+ geometryTypes: TOptional<TArray<TUnion<[
2459
+ TLiteral<"ARROW">,
2460
+ TLiteral<"BEZIERT1">,
2461
+ TLiteral<"BEZIERT2">,
2462
+ TLiteral<"BEZIERT3">,
2463
+ TLiteral<"BOX">,
2464
+ TLiteral<"BOX2">,
2465
+ TLiteral<"BOX2X45">,
2466
+ TLiteral<"BOXHOLE">,
2467
+ TLiteral<"CIRCLE">,
2468
+ TLiteral<"CIRCLET1">,
2469
+ TLiteral<"EMPTY">,
2470
+ TLiteral<"FILE">,
2471
+ TLiteral<"K45">,
2472
+ TLiteral<"K90">,
2473
+ TLiteral<"PLANE">,
2474
+ TLiteral<"WDXF">
2475
+ ]>>>;
2476
+ geometries: TOptional<TArray<TObject<{
2477
+ type: TNumber;
2478
+ entities: TArray<TNumber>;
2479
+ values: TArray<TNumber>;
2480
+ }>>>;
2481
+ templates: TOptional<TArray<TUnion<[
2482
+ TLiteral<"ROOT">,
2483
+ TLiteral<"GROUP">,
2484
+ TLiteral<"FILE">,
2485
+ TLiteral<"IMPORT">,
2486
+ TLiteral<"ELEMENT">,
2487
+ TLiteral<"DIMENSIONS">,
2488
+ TLiteral<"MODIFIER">
2489
+ ]>>>;
2490
+ propagations: TOptional<TArray<TArray<TString>>>;
2491
+ uvs: TOptional<TArray<TObject<{
2492
+ result: TObject<{
2493
+ offset: TUnion<[
2494
+ TObject<{
2495
+ type: TString;
2496
+ parameters: TOptional<TRecord<TString, TString>>;
2497
+ }>,
2498
+ TBoolean
2499
+ ]>;
2500
+ rotate: TString;
2501
+ }>;
2502
+ }>>>;
2503
+ structures: TOptional<TArray<TObject<{
2504
+ id: TOptional<TUnion<[
2505
+ TString,
2506
+ TNumber
2507
+ ]>>;
2508
+ filterId: TOptional<TUnion<[
2509
+ TString,
2510
+ TNumber
2511
+ ]>>;
2512
+ valueFx: TOptional<TString>;
2513
+ availabilityFx: TOptional<TString>;
2514
+ }>>>;
2515
+ shadows: TOptional<TArray<TObject<{
2516
+ cast: TBoolean;
2517
+ receive: TBoolean;
2518
+ }>>>;
2519
+ panels: TOptional<TArray<TObject<{
2520
+ materialGroup: TArray<TObject<{
2521
+ id: TOptional<TUnion<[
2522
+ TString,
2523
+ TNumber
2524
+ ]>>;
2525
+ filterId: TOptional<TUnion<[
2526
+ TString,
2527
+ TNumber
2528
+ ]>>;
2529
+ valueFx: TOptional<TString>;
2530
+ availabilityFx: TOptional<TString>;
2531
+ }>>;
2532
+ finish: TArray<TObject<{
2533
+ id: TOptional<TUnion<[
2534
+ TString,
2535
+ TNumber
2536
+ ]>>;
2537
+ filterId: TOptional<TUnion<[
2538
+ TString,
2539
+ TNumber
2540
+ ]>>;
2541
+ valueFx: TOptional<TString>;
2542
+ availabilityFx: TOptional<TString>;
2543
+ matTexture: TBoolean;
2544
+ edgeSide: TArray<TUnion<[
2545
+ TLiteral<"X-">,
2546
+ TLiteral<"X+">,
2547
+ TLiteral<"Y-">,
2548
+ TLiteral<"Y+">
2549
+ ]>>;
2550
+ }>>;
2551
+ services: TArray<TObject<{
2552
+ id: TOptional<TUnion<[
2553
+ TString,
2554
+ TNumber
2555
+ ]>>;
2556
+ filterId: TOptional<TUnion<[
2557
+ TString,
2558
+ TNumber
2559
+ ]>>;
2560
+ valueFx: TOptional<TString>;
2561
+ availabilityFx: TOptional<TString>;
2562
+ }>>;
2563
+ }>>>;
2564
+ components: TOptional<TArray<TObject<{
2565
+ asset: TNumber;
2566
+ entities: TArray<TNumber>;
2567
+ values: TArray<TNumber>;
2568
+ }>>>;
2569
+ maps: TOptional<TArray<TObject<{
2570
+ asset: TNumber;
2571
+ mapType: TString;
2572
+ enabled: TBoolean;
2573
+ }>>>;
2574
+ importedGeometries: TOptional<TArray<TObject<{
2575
+ asset: TNumber;
2576
+ entities: TArray<TNumber>;
2577
+ values: TArray<TNumber>;
2578
+ map: TArray<TNumber>;
2579
+ }>>>;
2580
+ animations: TOptional<TObject<{
2581
+ sets: TArray<TObject<{
2582
+ clips: TArray<TNumber>;
2583
+ }>>;
2584
+ clips: TArray<TObject<{
2585
+ name: TNumber;
2586
+ duration: TNumber;
2587
+ channels: TArray<TNumber>;
2588
+ }>>;
2589
+ channels: TArray<TObject<{
2590
+ target: TObject<{
2591
+ node: TNumber;
2592
+ path: TNumber;
2593
+ }>;
2594
+ sampler: TNumber;
2595
+ }>>;
2596
+ samplers: TArray<TObject<{
2597
+ start: TLiteral<"current">;
2598
+ times: TArray<TNumber>;
2599
+ easings: TArray<TNumber>;
2600
+ values: TArray<TArray<TUnion<[
2601
+ TNumber,
2602
+ TString
2603
+ ]>>>;
2604
+ }>>;
2605
+ names: TArray<TString>;
2606
+ easings: TArray<TString>;
2607
+ paths: TArray<TUnion<[
2608
+ TLiteral<"translation">,
2609
+ TLiteral<"rotation">
2610
+ ]>>;
2611
+ }>>;
2612
+ }>,
2613
+ TObject<{
2614
+ meta: TObject<{
2615
+ version: TLiteral<2>;
2616
+ type: TLiteral<"vac">;
2617
+ date: TString;
2618
+ }>;
2619
+ data: TObject<{
2620
+ tree: TRecord<TNumber, TArray<TNumber>>;
2621
+ scene: TNumber;
2622
+ entities: TOptional<TArray<TString>>;
2623
+ values: TOptional<TArray<TUnion<[
2624
+ TNumber,
2625
+ TString,
2626
+ TBoolean
2627
+ ]>>>;
2628
+ dataSource: TObject<{
2629
+ headers: TArray<TString>;
2630
+ rowId: TArray<TString>;
2631
+ colOrder: TArray<TString>;
2632
+ rowOrder: TArray<TString>;
2633
+ dataSource: TArray<TRecord<TString, TString>>;
2634
+ links: TOptional<TRecord<TString, TArray<TRecord<TString, TString>>>>;
2635
+ filters: TArray<TObject<{
2636
+ p: TString;
2637
+ f: TString;
2638
+ w: TString;
2639
+ pr: TString;
2640
+ }>>;
2641
+ select: TString;
2642
+ }>;
2643
+ objects: TArray<TObject<{
2644
+ ref: TOptional<TString>;
2645
+ descriptor: TOptional<TObject<{
2646
+ name: TString;
2647
+ code: TOptional<TString>;
2648
+ }>>;
2649
+ transform: TOptional<TNumber>;
2650
+ positioning: TOptional<TNumber>;
2651
+ boxSize: TOptional<TObject<{
2652
+ entities: TArray<TNumber>;
2653
+ values: TArray<TNumber>;
2654
+ }>>;
2655
+ propagation: TOptional<TNumber>;
2656
+ count: TOptional<TObject<{
2657
+ value: TString;
2658
+ }>>;
2659
+ geometry: TOptional<TNumber>;
2660
+ ar: TOptional<TObject<{
2661
+ enabled: TString;
2662
+ }>>;
2663
+ documentation: TOptional<TObject<{
2664
+ enabled: TString;
2665
+ }>>;
2666
+ attributes: TOptional<TArray<TNumber>>;
2667
+ uv: TOptional<TNumber>;
2668
+ structure: TOptional<TArray<TNumber>>;
2669
+ importedGeometry: TOptional<TNumber>;
2670
+ panel: TOptional<TNumber>;
2671
+ dimensionGeometry: TOptional<TNumber>;
2672
+ modifierAction: TOptional<TObject<{
2673
+ type: TString;
2674
+ }>>;
2675
+ id: TOptional<TObject<{
2676
+ value: TUnion<[
2677
+ TString,
2678
+ TNumber
2679
+ ]>;
2680
+ }>>;
2681
+ component: TOptional<TNumber>;
2682
+ leaf: TOptional<TObject<{
2683
+ state: TBoolean;
2684
+ }>>;
2685
+ extensions: TOptional<TRecord<TString, TNumber>>;
2686
+ gridPlane: TOptional<TObject<{
2687
+ mode: TOptional<TUnion<[
2688
+ TLiteral<"static">,
2689
+ TLiteral<"sticky">
2690
+ ]>>;
2691
+ tags: TArray<TNumber>;
2692
+ snaps: TArray<TUnion<[
2693
+ TObject<{
2694
+ type: TNumber;
2695
+ rows: TNumber;
2696
+ cols: TNumber;
2697
+ }>,
2698
+ TObject<{
2699
+ type: TNumber;
2700
+ x: TNumber;
2701
+ y: TNumber;
2702
+ }>
2703
+ ]>>;
2704
+ priority: TOptional<TNumber>;
2705
+ }>>;
2706
+ keyPoint: TOptional<TObject<{
2707
+ tags: TArray<TNumber>;
2708
+ }>>;
2709
+ boxCollider: TOptional<TObject<{
2710
+ tags: TArray<TNumber>;
2711
+ collision: TBoolean;
2712
+ interact: TBoolean;
2713
+ occluder: TOptional<TBoolean>;
2714
+ rangefinder: TOptional<TBoolean>;
2715
+ }>>;
2716
+ dynamicConfiguration: TOptional<TRecord<TString, TNumber>>;
2717
+ layers: TOptional<TObject<{
2718
+ ids: TArray<TNumber>;
2719
+ descendants: TOptional<TBoolean>;
2720
+ }>>;
2721
+ dimensioning: TOptional<TObject<{}>>;
2722
+ material: TOptional<TObject<{
2723
+ id: TNumber;
2724
+ }>>;
2725
+ materials: TOptional<TObject<{
2726
+ groups: TArray<TIntersect<[
2727
+ TObject<{
2728
+ availability: TNumber;
2729
+ alias: TOptional<TNumber>;
2730
+ tag: TNumber;
2731
+ }>,
2732
+ TUnion<[
2733
+ TObject<{
2734
+ type: TLiteral<"list">;
2735
+ materials: TArray<TNumber>;
2736
+ selected: TNumber;
2737
+ }>,
2738
+ TObject<{
2739
+ type: TLiteral<"query">;
2740
+ query: TNumber;
2741
+ selected: TNumber;
2742
+ }>
2743
+ ]>
2744
+ ]>>;
2745
+ }>>;
2746
+ textureFit: TOptional<TObject<{
2747
+ offset: TObject<{
2748
+ x: TNumber;
2749
+ y: TNumber;
2750
+ }>;
2751
+ rotation: TNumber;
2752
+ scale: TNumber;
2753
+ flip: TObject<{
2754
+ x: TBoolean;
2755
+ y: TBoolean;
2756
+ }>;
2757
+ random: TObject<{
2758
+ offsetX: TBoolean;
2759
+ offsetY: TBoolean;
2760
+ rotation: TBoolean;
2761
+ }>;
2762
+ }>>;
2763
+ rendering: TOptional<TObject<{
2764
+ shadow: TObject<{
2765
+ receive: TBoolean;
2766
+ cast: TBoolean;
2767
+ }>;
2768
+ order: TNumber;
2769
+ }>>;
2770
+ subcomponent: TOptional<TObject<{
2771
+ groups: TArray<TIntersect<[
2772
+ TObject<{
2773
+ availability: TNumber;
2774
+ alias: TOptional<TNumber>;
2775
+ tag: TNumber;
2776
+ }>,
2777
+ TUnion<[
2778
+ TObject<{
2779
+ type: TLiteral<"list">;
2780
+ assets: TArray<TNumber>;
2781
+ selected: TNumber;
2782
+ }>,
2783
+ TObject<{
2784
+ type: TLiteral<"query">;
2785
+ query: TNumber;
2786
+ selected: TNumber;
2787
+ }>
2788
+ ]>
2789
+ ]>>;
2790
+ }>>;
2791
+ rangefinder: TOptional<TObject<{
2792
+ tags: TArray<TNumber>;
2793
+ axis: TArray<TUnion<[
2794
+ TLiteral<"x">,
2795
+ TLiteral<"y">,
2796
+ TLiteral<"z">
2797
+ ]>>;
2798
+ near: TOptional<TNumber>;
2799
+ far: TOptional<TNumber>;
2800
+ }>>;
2801
+ animationSet: TOptional<TNumber>;
2802
+ }>>;
2803
+ attributes: TOptional<TArray<TRecord<TString, TString>>>;
2804
+ extensions: TArray<TString>;
2805
+ assets: TOptional<TArray<TString>>;
2806
+ variables: TObject<{
2807
+ entities: TArray<TNumber>;
2808
+ values: TArray<TUnion<[
2809
+ TNumber,
2810
+ TObject<{
2811
+ lookup: TNumber;
2812
+ }>
2813
+ ]>>;
2814
+ drivers: TArray<TNumber>;
2815
+ designations: TArray<TString>;
2816
+ helpers: TArray<TNumber>;
2817
+ }>;
2818
+ extensionsRequired: TArray<TString>;
2819
+ scenes: TArray<TObject<{
2820
+ objects: TArray<TNumber>;
2821
+ }>>;
2822
+ $schema: TOptional<TString>;
2823
+ transforms: TOptional<TArray<TArray<TString>>>;
2824
+ positionings: TOptional<TArray<TArray<TNumber>>>;
2825
+ geometryTypes: TOptional<TArray<TUnion<[
2826
+ TLiteral<"ARROW">,
2827
+ TLiteral<"BEZIERT1">,
2828
+ TLiteral<"BEZIERT2">,
2829
+ TLiteral<"BEZIERT3">,
2830
+ TLiteral<"BOX">,
2831
+ TLiteral<"BOX2">,
2832
+ TLiteral<"BOX2X45">,
2833
+ TLiteral<"BOXHOLE">,
2834
+ TLiteral<"CIRCLE">,
2835
+ TLiteral<"CIRCLET1">,
2836
+ TLiteral<"EMPTY">,
2837
+ TLiteral<"FILE">,
2838
+ TLiteral<"K45">,
2839
+ TLiteral<"K90">,
2840
+ TLiteral<"PLANE">,
2841
+ TLiteral<"WDXF">
2842
+ ]>>>;
2843
+ geometries: TOptional<TArray<TObject<{
2844
+ type: TNumber;
2845
+ entities: TArray<TNumber>;
2846
+ values: TArray<TNumber>;
2847
+ }>>>;
2848
+ templates: TOptional<TArray<TUnion<[
2849
+ TLiteral<"ROOT">,
2850
+ TLiteral<"GROUP">,
2851
+ TLiteral<"FILE">,
2852
+ TLiteral<"IMPORT">,
2853
+ TLiteral<"ELEMENT">,
2854
+ TLiteral<"DIMENSIONS">,
2855
+ TLiteral<"MODIFIER">
2856
+ ]>>>;
2857
+ propagations: TOptional<TArray<TArray<TString>>>;
2858
+ uvs: TOptional<TArray<TObject<{
2859
+ result: TObject<{
2860
+ offset: TUnion<[
2861
+ TObject<{
2862
+ type: TString;
2863
+ parameters: TOptional<TRecord<TString, TString>>;
2864
+ }>,
2865
+ TBoolean
2866
+ ]>;
2867
+ rotate: TString;
2868
+ }>;
2869
+ }>>>;
2870
+ structures: TOptional<TArray<TObject<{
2871
+ id: TOptional<TUnion<[
2872
+ TString,
2873
+ TNumber
2874
+ ]>>;
2875
+ filterId: TOptional<TUnion<[
2876
+ TString,
2877
+ TNumber
2878
+ ]>>;
2879
+ valueFx: TOptional<TString>;
2880
+ availabilityFx: TOptional<TString>;
2881
+ }>>>;
2882
+ shadows: TOptional<TArray<TObject<{
2883
+ cast: TBoolean;
2884
+ receive: TBoolean;
2885
+ }>>>;
2886
+ panels: TOptional<TArray<TObject<{
2887
+ materialGroup: TArray<TObject<{
2888
+ id: TOptional<TUnion<[
2889
+ TString,
2890
+ TNumber
2891
+ ]>>;
2892
+ filterId: TOptional<TUnion<[
2893
+ TString,
2894
+ TNumber
2895
+ ]>>;
2896
+ valueFx: TOptional<TString>;
2897
+ availabilityFx: TOptional<TString>;
2898
+ }>>;
2899
+ finish: TArray<TObject<{
2900
+ id: TOptional<TUnion<[
2901
+ TString,
2902
+ TNumber
2903
+ ]>>;
2904
+ filterId: TOptional<TUnion<[
2905
+ TString,
2906
+ TNumber
2907
+ ]>>;
2908
+ valueFx: TOptional<TString>;
2909
+ availabilityFx: TOptional<TString>;
2910
+ matTexture: TBoolean;
2911
+ edgeSide: TArray<TUnion<[
2912
+ TLiteral<"X-">,
2913
+ TLiteral<"X+">,
2914
+ TLiteral<"Y-">,
2915
+ TLiteral<"Y+">
2916
+ ]>>;
2917
+ }>>;
2918
+ services: TArray<TObject<{
2919
+ id: TOptional<TUnion<[
2920
+ TString,
2921
+ TNumber
2922
+ ]>>;
2923
+ filterId: TOptional<TUnion<[
2924
+ TString,
2925
+ TNumber
2926
+ ]>>;
2927
+ valueFx: TOptional<TString>;
2928
+ availabilityFx: TOptional<TString>;
2929
+ }>>;
2930
+ }>>>;
2931
+ components: TOptional<TArray<TObject<{
2932
+ asset: TNumber;
2933
+ entities: TArray<TNumber>;
2934
+ values: TArray<TNumber>;
2935
+ }>>>;
2936
+ maps: TOptional<TArray<TObject<{
2937
+ asset: TNumber;
2938
+ mapType: TString;
2939
+ enabled: TBoolean;
2940
+ }>>>;
2941
+ importedGeometries: TOptional<TArray<TObject<{
2942
+ asset: TNumber;
2943
+ entities: TArray<TNumber>;
2944
+ values: TArray<TNumber>;
2945
+ map: TArray<TNumber>;
2946
+ }>>>;
2947
+ animations: TOptional<TObject<{
2948
+ sets: TArray<TObject<{
2949
+ clips: TArray<TNumber>;
2950
+ }>>;
2951
+ clips: TArray<TObject<{
2952
+ name: TNumber;
2953
+ duration: TNumber;
2954
+ channels: TArray<TNumber>;
2955
+ }>>;
2956
+ channels: TArray<TObject<{
2957
+ target: TObject<{
2958
+ node: TNumber;
2959
+ path: TNumber;
2960
+ }>;
2961
+ sampler: TNumber;
2962
+ }>>;
2963
+ samplers: TArray<TObject<{
2964
+ start: TLiteral<"current">;
2965
+ times: TArray<TNumber>;
2966
+ easings: TArray<TNumber>;
2967
+ values: TArray<TArray<TUnion<[
2968
+ TNumber,
2969
+ TString
2970
+ ]>>>;
2971
+ }>>;
2972
+ names: TArray<TString>;
2973
+ easings: TArray<TString>;
2974
+ paths: TArray<TUnion<[
2975
+ TLiteral<"translation">,
2976
+ TLiteral<"rotation">
2977
+ ]>>;
2978
+ }>>;
2979
+ }>;
2980
+ }>,
2981
+ TObject<{
2982
+ meta: TObject<{
2983
+ version: TLiteral<3>;
2984
+ type: TLiteral<"vac">;
2985
+ date: TString;
2986
+ }>;
2987
+ data: TObject<{
2988
+ attributes: TOptional<TArray<TRecord<TString, TString>>>;
2989
+ extensions: TArray<TString>;
2990
+ tree: TRecord<TNumber, TArray<TNumber>>;
2991
+ scene: TNumber;
2992
+ dataSource: TObject<{
2993
+ headers: TArray<TString>;
2994
+ rowId: TArray<TString>;
2995
+ colOrder: TArray<TString>;
2996
+ rowOrder: TArray<TString>;
2997
+ dataSource: TArray<TRecord<TString, TString>>;
2998
+ links: TOptional<TRecord<TString, TArray<TRecord<TString, TString>>>>;
2999
+ filters: TArray<TObject<{
3000
+ p: TString;
3001
+ f: TString;
3002
+ w: TString;
3003
+ pr: TString;
3004
+ }>>;
3005
+ select: TString;
3006
+ }>;
3007
+ objects: TArray<TObject<{
3008
+ ref: TOptional<TString>;
3009
+ descriptor: TOptional<TObject<{
3010
+ name: TString;
3011
+ code: TOptional<TString>;
3012
+ }>>;
3013
+ transform: TOptional<TNumber>;
3014
+ positioning: TOptional<TNumber>;
3015
+ boxSize: TOptional<TObject<{
3016
+ entities: TArray<TNumber>;
3017
+ values: TArray<TNumber>;
3018
+ }>>;
3019
+ propagation: TOptional<TNumber>;
3020
+ count: TOptional<TObject<{
3021
+ value: TString;
3022
+ }>>;
3023
+ geometry: TOptional<TNumber>;
3024
+ ar: TOptional<TObject<{
3025
+ enabled: TString;
3026
+ }>>;
3027
+ documentation: TOptional<TObject<{
3028
+ enabled: TString;
3029
+ }>>;
3030
+ attributes: TOptional<TArray<TNumber>>;
3031
+ uv: TOptional<TNumber>;
3032
+ structure: TOptional<TArray<TNumber>>;
3033
+ importedGeometry: TOptional<TNumber>;
3034
+ panel: TOptional<TNumber>;
3035
+ dimensionGeometry: TOptional<TNumber>;
3036
+ modifierAction: TOptional<TObject<{
3037
+ type: TString;
3038
+ }>>;
3039
+ id: TOptional<TObject<{
3040
+ value: TUnion<[
3041
+ TString,
3042
+ TNumber
3043
+ ]>;
3044
+ }>>;
3045
+ component: TOptional<TNumber>;
3046
+ leaf: TOptional<TObject<{
3047
+ state: TBoolean;
3048
+ }>>;
3049
+ extensions: TOptional<TRecord<TString, TNumber>>;
3050
+ gridPlane: TOptional<TObject<{
3051
+ mode: TOptional<TUnion<[
3052
+ TLiteral<"static">,
3053
+ TLiteral<"sticky">
3054
+ ]>>;
3055
+ tags: TArray<TNumber>;
3056
+ snaps: TArray<TUnion<[
3057
+ TObject<{
3058
+ type: TNumber;
3059
+ rows: TNumber;
3060
+ cols: TNumber;
3061
+ }>,
3062
+ TObject<{
3063
+ type: TNumber;
3064
+ x: TNumber;
3065
+ y: TNumber;
3066
+ }>
3067
+ ]>>;
3068
+ priority: TOptional<TNumber>;
3069
+ }>>;
3070
+ keyPoint: TOptional<TObject<{
3071
+ tags: TArray<TNumber>;
3072
+ }>>;
3073
+ boxCollider: TOptional<TObject<{
3074
+ tags: TArray<TNumber>;
3075
+ collision: TBoolean;
3076
+ interact: TBoolean;
3077
+ occluder: TOptional<TBoolean>;
3078
+ rangefinder: TOptional<TBoolean>;
3079
+ }>>;
3080
+ dynamicConfiguration: TOptional<TRecord<TString, TNumber>>;
3081
+ layers: TOptional<TObject<{
3082
+ ids: TArray<TNumber>;
3083
+ descendants: TOptional<TBoolean>;
3084
+ }>>;
3085
+ dimensioning: TOptional<TObject<{}>>;
3086
+ material: TOptional<TObject<{
3087
+ id: TNumber;
3088
+ }>>;
3089
+ materials: TOptional<TObject<{
3090
+ groups: TArray<TIntersect<[
3091
+ TObject<{
3092
+ availability: TNumber;
3093
+ alias: TOptional<TNumber>;
3094
+ tag: TNumber;
3095
+ }>,
3096
+ TUnion<[
3097
+ TObject<{
3098
+ type: TLiteral<"list">;
3099
+ materials: TArray<TNumber>;
3100
+ selected: TNumber;
3101
+ }>,
3102
+ TObject<{
3103
+ type: TLiteral<"query">;
3104
+ query: TNumber;
3105
+ selected: TNumber;
3106
+ }>
3107
+ ]>
3108
+ ]>>;
3109
+ }>>;
3110
+ textureFit: TOptional<TObject<{
3111
+ offset: TObject<{
3112
+ x: TNumber;
3113
+ y: TNumber;
3114
+ }>;
3115
+ rotation: TNumber;
3116
+ scale: TNumber;
3117
+ flip: TObject<{
3118
+ x: TBoolean;
3119
+ y: TBoolean;
3120
+ }>;
3121
+ random: TObject<{
3122
+ offsetX: TBoolean;
3123
+ offsetY: TBoolean;
3124
+ rotation: TBoolean;
3125
+ }>;
3126
+ }>>;
3127
+ rendering: TOptional<TObject<{
3128
+ shadow: TObject<{
3129
+ receive: TBoolean;
3130
+ cast: TBoolean;
3131
+ }>;
3132
+ order: TNumber;
3133
+ }>>;
3134
+ subcomponent: TOptional<TObject<{
3135
+ groups: TArray<TIntersect<[
3136
+ TObject<{
3137
+ availability: TNumber;
3138
+ alias: TOptional<TNumber>;
3139
+ tag: TNumber;
3140
+ }>,
3141
+ TUnion<[
3142
+ TObject<{
3143
+ type: TLiteral<"list">;
3144
+ assets: TArray<TNumber>;
3145
+ selected: TNumber;
3146
+ }>,
3147
+ TObject<{
3148
+ type: TLiteral<"query">;
3149
+ query: TNumber;
3150
+ selected: TNumber;
3151
+ }>
3152
+ ]>
3153
+ ]>>;
3154
+ }>>;
3155
+ rangefinder: TOptional<TObject<{
3156
+ tags: TArray<TNumber>;
3157
+ axis: TArray<TUnion<[
3158
+ TLiteral<"x">,
3159
+ TLiteral<"y">,
3160
+ TLiteral<"z">
3161
+ ]>>;
3162
+ near: TOptional<TNumber>;
3163
+ far: TOptional<TNumber>;
3164
+ }>>;
3165
+ animationSet: TOptional<TNumber>;
3166
+ }>>;
3167
+ variables: TObject<{
3168
+ entities: TArray<TNumber>;
3169
+ values: TArray<TUnion<[
3170
+ TNumber,
3171
+ TObject<{
3172
+ lookup: TNumber;
3173
+ }>
3174
+ ]>>;
3175
+ drivers: TArray<TNumber>;
3176
+ designations: TArray<TString>;
3177
+ helpers: TArray<TNumber>;
3178
+ }>;
3179
+ extensionsRequired: TArray<TString>;
3180
+ scenes: TArray<TObject<{
3181
+ objects: TArray<TNumber>;
3182
+ }>>;
3183
+ entities: TOptional<TArray<TString>>;
3184
+ values: TOptional<TArray<TUnion<[
3185
+ TNumber,
3186
+ TString,
3187
+ TBoolean
3188
+ ]>>>;
3189
+ assets: TOptional<TArray<TString>>;
3190
+ $schema: TOptional<TString>;
3191
+ transforms: TOptional<TArray<TArray<TString>>>;
3192
+ positionings: TOptional<TArray<TArray<TNumber>>>;
3193
+ geometryTypes: TOptional<TArray<TUnion<[
3194
+ TLiteral<"ARROW">,
3195
+ TLiteral<"BEZIERT1">,
3196
+ TLiteral<"BEZIERT2">,
3197
+ TLiteral<"BEZIERT3">,
3198
+ TLiteral<"BOX">,
3199
+ TLiteral<"BOX2">,
3200
+ TLiteral<"BOX2X45">,
3201
+ TLiteral<"BOXHOLE">,
3202
+ TLiteral<"CIRCLE">,
3203
+ TLiteral<"CIRCLET1">,
3204
+ TLiteral<"EMPTY">,
3205
+ TLiteral<"FILE">,
3206
+ TLiteral<"K45">,
3207
+ TLiteral<"K90">,
3208
+ TLiteral<"PLANE">,
3209
+ TLiteral<"WDXF">
3210
+ ]>>>;
3211
+ geometries: TOptional<TArray<TObject<{
3212
+ type: TNumber;
3213
+ entities: TArray<TNumber>;
3214
+ values: TArray<TNumber>;
3215
+ }>>>;
3216
+ templates: TOptional<TArray<TUnion<[
3217
+ TLiteral<"ROOT">,
3218
+ TLiteral<"GROUP">,
3219
+ TLiteral<"FILE">,
3220
+ TLiteral<"IMPORT">,
3221
+ TLiteral<"ELEMENT">,
3222
+ TLiteral<"DIMENSIONS">,
3223
+ TLiteral<"MODIFIER">
3224
+ ]>>>;
3225
+ propagations: TOptional<TArray<TArray<TString>>>;
3226
+ uvs: TOptional<TArray<TObject<{
3227
+ result: TObject<{
3228
+ offset: TUnion<[
3229
+ TObject<{
3230
+ type: TString;
3231
+ parameters: TOptional<TRecord<TString, TString>>;
3232
+ }>,
3233
+ TBoolean
3234
+ ]>;
3235
+ rotate: TString;
3236
+ }>;
3237
+ }>>>;
3238
+ structures: TOptional<TArray<TObject<{
3239
+ id: TOptional<TUnion<[
3240
+ TString,
3241
+ TNumber
3242
+ ]>>;
3243
+ filterId: TOptional<TUnion<[
3244
+ TString,
3245
+ TNumber
3246
+ ]>>;
3247
+ valueFx: TOptional<TString>;
3248
+ availabilityFx: TOptional<TString>;
3249
+ }>>>;
3250
+ shadows: TOptional<TArray<TObject<{
3251
+ cast: TBoolean;
3252
+ receive: TBoolean;
3253
+ }>>>;
3254
+ panels: TOptional<TArray<TObject<{
3255
+ materialGroup: TArray<TObject<{
3256
+ id: TOptional<TUnion<[
3257
+ TString,
3258
+ TNumber
3259
+ ]>>;
3260
+ filterId: TOptional<TUnion<[
3261
+ TString,
3262
+ TNumber
3263
+ ]>>;
3264
+ valueFx: TOptional<TString>;
3265
+ availabilityFx: TOptional<TString>;
3266
+ }>>;
3267
+ finish: TArray<TObject<{
3268
+ id: TOptional<TUnion<[
3269
+ TString,
3270
+ TNumber
3271
+ ]>>;
3272
+ filterId: TOptional<TUnion<[
3273
+ TString,
3274
+ TNumber
3275
+ ]>>;
3276
+ valueFx: TOptional<TString>;
3277
+ availabilityFx: TOptional<TString>;
3278
+ matTexture: TBoolean;
3279
+ edgeSide: TArray<TUnion<[
3280
+ TLiteral<"X-">,
3281
+ TLiteral<"X+">,
3282
+ TLiteral<"Y-">,
3283
+ TLiteral<"Y+">
3284
+ ]>>;
3285
+ }>>;
3286
+ services: TArray<TObject<{
3287
+ id: TOptional<TUnion<[
3288
+ TString,
3289
+ TNumber
3290
+ ]>>;
3291
+ filterId: TOptional<TUnion<[
3292
+ TString,
3293
+ TNumber
3294
+ ]>>;
3295
+ valueFx: TOptional<TString>;
3296
+ availabilityFx: TOptional<TString>;
3297
+ }>>;
3298
+ }>>>;
3299
+ components: TOptional<TArray<TObject<{
3300
+ asset: TNumber;
3301
+ entities: TArray<TNumber>;
3302
+ values: TArray<TNumber>;
3303
+ }>>>;
3304
+ maps: TOptional<TArray<TObject<{
3305
+ asset: TNumber;
3306
+ mapType: TString;
3307
+ enabled: TBoolean;
3308
+ }>>>;
3309
+ importedGeometries: TOptional<TArray<TObject<{
3310
+ asset: TNumber;
3311
+ entities: TArray<TNumber>;
3312
+ values: TArray<TNumber>;
3313
+ map: TArray<TNumber>;
3314
+ }>>>;
3315
+ animations: TOptional<TObject<{
3316
+ sets: TArray<TObject<{
3317
+ clips: TArray<TNumber>;
3318
+ }>>;
3319
+ clips: TArray<TObject<{
3320
+ name: TNumber;
3321
+ duration: TNumber;
3322
+ channels: TArray<TNumber>;
3323
+ }>>;
3324
+ channels: TArray<TObject<{
3325
+ target: TObject<{
3326
+ node: TNumber;
3327
+ path: TNumber;
3328
+ }>;
3329
+ sampler: TNumber;
3330
+ }>>;
3331
+ samplers: TArray<TObject<{
3332
+ start: TLiteral<"current">;
3333
+ times: TArray<TNumber>;
3334
+ easings: TArray<TNumber>;
3335
+ values: TArray<TArray<TUnion<[
3336
+ TNumber,
3337
+ TString
3338
+ ]>>>;
3339
+ }>>;
3340
+ names: TArray<TString>;
3341
+ easings: TArray<TString>;
3342
+ paths: TArray<TUnion<[
3343
+ TLiteral<"translation">,
3344
+ TLiteral<"rotation">
3345
+ ]>>;
3346
+ }>>;
3347
+ publication: TOptional<TObject<{
3348
+ id: TString;
3349
+ type: TOptional<TUnion<[
3350
+ TLiteral<"file">,
3351
+ TLiteral<"standard">
3352
+ ]>>;
3353
+ bind: TObject<{
3354
+ parameters: TOptional<TRecord<TString, TUnion<[
3355
+ TNumber,
3356
+ TNull
3357
+ ]>>>;
3358
+ dimensions: TOptional<TRecord<TString, TString>>;
3359
+ }>;
3360
+ }>>;
3361
+ }>;
3362
+ }>,
3363
+ TObject<{
3364
+ meta: TObject<{
3365
+ version: TLiteral<4>;
3366
+ type: TLiteral<"vac">;
3367
+ date: TString;
3368
+ }>;
3369
+ data: TIntersect<[
3370
+ TObject<{
3371
+ attributes: TOptional<TArray<TRecord<TString, TString>>>;
3372
+ extensions: TArray<TString>;
3373
+ tree: TRecord<TNumber, TArray<TNumber>>;
3374
+ scene: TNumber;
3375
+ dataSource: TObject<{
3376
+ headers: TArray<TString>;
3377
+ rowId: TArray<TString>;
3378
+ colOrder: TArray<TString>;
3379
+ rowOrder: TArray<TString>;
3380
+ dataSource: TArray<TRecord<TString, TString>>;
3381
+ links: TOptional<TRecord<TString, TArray<TRecord<TString, TString>>>>;
3382
+ filters: TArray<TObject<{
3383
+ p: TString;
3384
+ f: TString;
3385
+ w: TString;
3386
+ pr: TString;
3387
+ }>>;
3388
+ select: TString;
3389
+ }>;
3390
+ objects: TArray<TObject<{
3391
+ ref: TOptional<TString>;
3392
+ descriptor: TOptional<TObject<{
3393
+ name: TString;
3394
+ code: TOptional<TString>;
3395
+ }>>;
3396
+ transform: TOptional<TNumber>;
3397
+ positioning: TOptional<TNumber>;
3398
+ boxSize: TOptional<TObject<{
3399
+ entities: TArray<TNumber>;
3400
+ values: TArray<TNumber>;
3401
+ }>>;
3402
+ propagation: TOptional<TNumber>;
3403
+ count: TOptional<TObject<{
3404
+ value: TString;
3405
+ }>>;
3406
+ geometry: TOptional<TNumber>;
3407
+ ar: TOptional<TObject<{
3408
+ enabled: TString;
3409
+ }>>;
3410
+ documentation: TOptional<TObject<{
3411
+ enabled: TString;
3412
+ }>>;
3413
+ attributes: TOptional<TArray<TNumber>>;
3414
+ uv: TOptional<TNumber>;
3415
+ structure: TOptional<TArray<TNumber>>;
3416
+ importedGeometry: TOptional<TNumber>;
3417
+ panel: TOptional<TNumber>;
3418
+ dimensionGeometry: TOptional<TNumber>;
3419
+ modifierAction: TOptional<TObject<{
3420
+ type: TString;
3421
+ }>>;
3422
+ id: TOptional<TObject<{
3423
+ value: TUnion<[
3424
+ TString,
3425
+ TNumber
3426
+ ]>;
3427
+ }>>;
3428
+ component: TOptional<TNumber>;
3429
+ leaf: TOptional<TObject<{
3430
+ state: TBoolean;
3431
+ }>>;
3432
+ extensions: TOptional<TRecord<TString, TNumber>>;
3433
+ gridPlane: TOptional<TObject<{
3434
+ mode: TOptional<TUnion<[
3435
+ TLiteral<"static">,
3436
+ TLiteral<"sticky">
3437
+ ]>>;
3438
+ tags: TArray<TNumber>;
3439
+ snaps: TArray<TUnion<[
3440
+ TObject<{
3441
+ type: TNumber;
3442
+ rows: TNumber;
3443
+ cols: TNumber;
3444
+ }>,
3445
+ TObject<{
3446
+ type: TNumber;
3447
+ x: TNumber;
3448
+ y: TNumber;
3449
+ }>
3450
+ ]>>;
3451
+ priority: TOptional<TNumber>;
3452
+ }>>;
3453
+ keyPoint: TOptional<TObject<{
3454
+ tags: TArray<TNumber>;
3455
+ }>>;
3456
+ boxCollider: TOptional<TObject<{
3457
+ tags: TArray<TNumber>;
3458
+ collision: TBoolean;
3459
+ interact: TBoolean;
3460
+ occluder: TOptional<TBoolean>;
3461
+ rangefinder: TOptional<TBoolean>;
3462
+ }>>;
3463
+ dynamicConfiguration: TOptional<TRecord<TString, TNumber>>;
3464
+ layers: TOptional<TObject<{
3465
+ ids: TArray<TNumber>;
3466
+ descendants: TOptional<TBoolean>;
3467
+ }>>;
3468
+ dimensioning: TOptional<TObject<{}>>;
3469
+ material: TOptional<TObject<{
3470
+ id: TNumber;
3471
+ }>>;
3472
+ materials: TOptional<TObject<{
3473
+ groups: TArray<TIntersect<[
3474
+ TObject<{
3475
+ availability: TNumber;
3476
+ alias: TOptional<TNumber>;
3477
+ tag: TNumber;
3478
+ }>,
3479
+ TUnion<[
3480
+ TObject<{
3481
+ type: TLiteral<"list">;
3482
+ materials: TArray<TNumber>;
3483
+ selected: TNumber;
3484
+ }>,
3485
+ TObject<{
3486
+ type: TLiteral<"query">;
3487
+ query: TNumber;
3488
+ selected: TNumber;
3489
+ }>
3490
+ ]>
3491
+ ]>>;
3492
+ }>>;
3493
+ textureFit: TOptional<TObject<{
3494
+ offset: TObject<{
3495
+ x: TNumber;
3496
+ y: TNumber;
3497
+ }>;
3498
+ rotation: TNumber;
3499
+ scale: TNumber;
3500
+ flip: TObject<{
3501
+ x: TBoolean;
3502
+ y: TBoolean;
3503
+ }>;
3504
+ random: TObject<{
3505
+ offsetX: TBoolean;
3506
+ offsetY: TBoolean;
3507
+ rotation: TBoolean;
3508
+ }>;
3509
+ }>>;
3510
+ rendering: TOptional<TObject<{
3511
+ shadow: TObject<{
3512
+ receive: TBoolean;
3513
+ cast: TBoolean;
3514
+ }>;
3515
+ order: TNumber;
3516
+ }>>;
3517
+ subcomponent: TOptional<TObject<{
3518
+ groups: TArray<TIntersect<[
3519
+ TObject<{
3520
+ availability: TNumber;
3521
+ alias: TOptional<TNumber>;
3522
+ tag: TNumber;
3523
+ }>,
3524
+ TUnion<[
3525
+ TObject<{
3526
+ type: TLiteral<"list">;
3527
+ assets: TArray<TNumber>;
3528
+ selected: TNumber;
3529
+ }>,
3530
+ TObject<{
3531
+ type: TLiteral<"query">;
3532
+ query: TNumber;
3533
+ selected: TNumber;
3534
+ }>
3535
+ ]>
3536
+ ]>>;
3537
+ }>>;
3538
+ rangefinder: TOptional<TObject<{
3539
+ tags: TArray<TNumber>;
3540
+ axis: TArray<TUnion<[
3541
+ TLiteral<"x">,
3542
+ TLiteral<"y">,
3543
+ TLiteral<"z">
3544
+ ]>>;
3545
+ near: TOptional<TNumber>;
3546
+ far: TOptional<TNumber>;
3547
+ }>>;
3548
+ animationSet: TOptional<TNumber>;
3549
+ }>>;
3550
+ variables: TObject<{
3551
+ entities: TArray<TNumber>;
3552
+ values: TArray<TUnion<[
3553
+ TNumber,
3554
+ TObject<{
3555
+ lookup: TNumber;
3556
+ }>
3557
+ ]>>;
3558
+ drivers: TArray<TNumber>;
3559
+ designations: TArray<TString>;
3560
+ helpers: TArray<TNumber>;
3561
+ }>;
3562
+ extensionsRequired: TArray<TString>;
3563
+ scenes: TArray<TObject<{
3564
+ objects: TArray<TNumber>;
3565
+ }>>;
3566
+ entities: TOptional<TArray<TString>>;
3567
+ values: TOptional<TArray<TUnion<[
3568
+ TNumber,
3569
+ TString,
3570
+ TBoolean
3571
+ ]>>>;
3572
+ assets: TOptional<TArray<TString>>;
3573
+ $schema: TOptional<TString>;
3574
+ transforms: TOptional<TArray<TArray<TString>>>;
3575
+ positionings: TOptional<TArray<TArray<TNumber>>>;
3576
+ geometryTypes: TOptional<TArray<TUnion<[
3577
+ TLiteral<"ARROW">,
3578
+ TLiteral<"BEZIERT1">,
3579
+ TLiteral<"BEZIERT2">,
3580
+ TLiteral<"BEZIERT3">,
3581
+ TLiteral<"BOX">,
3582
+ TLiteral<"BOX2">,
3583
+ TLiteral<"BOX2X45">,
3584
+ TLiteral<"BOXHOLE">,
3585
+ TLiteral<"CIRCLE">,
3586
+ TLiteral<"CIRCLET1">,
3587
+ TLiteral<"EMPTY">,
3588
+ TLiteral<"FILE">,
3589
+ TLiteral<"K45">,
3590
+ TLiteral<"K90">,
3591
+ TLiteral<"PLANE">,
3592
+ TLiteral<"WDXF">
3593
+ ]>>>;
3594
+ geometries: TOptional<TArray<TObject<{
3595
+ type: TNumber;
3596
+ entities: TArray<TNumber>;
3597
+ values: TArray<TNumber>;
3598
+ }>>>;
3599
+ templates: TOptional<TArray<TUnion<[
3600
+ TLiteral<"ROOT">,
3601
+ TLiteral<"GROUP">,
3602
+ TLiteral<"FILE">,
3603
+ TLiteral<"IMPORT">,
3604
+ TLiteral<"ELEMENT">,
3605
+ TLiteral<"DIMENSIONS">,
3606
+ TLiteral<"MODIFIER">
3607
+ ]>>>;
3608
+ propagations: TOptional<TArray<TArray<TString>>>;
3609
+ uvs: TOptional<TArray<TObject<{
3610
+ result: TObject<{
3611
+ offset: TUnion<[
3612
+ TObject<{
3613
+ type: TString;
3614
+ parameters: TOptional<TRecord<TString, TString>>;
3615
+ }>,
3616
+ TBoolean
3617
+ ]>;
3618
+ rotate: TString;
3619
+ }>;
3620
+ }>>>;
3621
+ structures: TOptional<TArray<TObject<{
3622
+ id: TOptional<TUnion<[
3623
+ TString,
3624
+ TNumber
3625
+ ]>>;
3626
+ filterId: TOptional<TUnion<[
3627
+ TString,
3628
+ TNumber
3629
+ ]>>;
3630
+ valueFx: TOptional<TString>;
3631
+ availabilityFx: TOptional<TString>;
3632
+ }>>>;
3633
+ shadows: TOptional<TArray<TObject<{
3634
+ cast: TBoolean;
3635
+ receive: TBoolean;
3636
+ }>>>;
3637
+ panels: TOptional<TArray<TObject<{
3638
+ materialGroup: TArray<TObject<{
3639
+ id: TOptional<TUnion<[
3640
+ TString,
3641
+ TNumber
3642
+ ]>>;
3643
+ filterId: TOptional<TUnion<[
3644
+ TString,
3645
+ TNumber
3646
+ ]>>;
3647
+ valueFx: TOptional<TString>;
3648
+ availabilityFx: TOptional<TString>;
3649
+ }>>;
3650
+ finish: TArray<TObject<{
3651
+ id: TOptional<TUnion<[
3652
+ TString,
3653
+ TNumber
3654
+ ]>>;
3655
+ filterId: TOptional<TUnion<[
3656
+ TString,
3657
+ TNumber
3658
+ ]>>;
3659
+ valueFx: TOptional<TString>;
3660
+ availabilityFx: TOptional<TString>;
3661
+ matTexture: TBoolean;
3662
+ edgeSide: TArray<TUnion<[
3663
+ TLiteral<"X-">,
3664
+ TLiteral<"X+">,
3665
+ TLiteral<"Y-">,
3666
+ TLiteral<"Y+">
3667
+ ]>>;
3668
+ }>>;
3669
+ services: TArray<TObject<{
3670
+ id: TOptional<TUnion<[
3671
+ TString,
3672
+ TNumber
3673
+ ]>>;
3674
+ filterId: TOptional<TUnion<[
3675
+ TString,
3676
+ TNumber
3677
+ ]>>;
3678
+ valueFx: TOptional<TString>;
3679
+ availabilityFx: TOptional<TString>;
3680
+ }>>;
3681
+ }>>>;
3682
+ components: TOptional<TArray<TObject<{
3683
+ asset: TNumber;
3684
+ entities: TArray<TNumber>;
3685
+ values: TArray<TNumber>;
3686
+ }>>>;
3687
+ maps: TOptional<TArray<TObject<{
3688
+ asset: TNumber;
3689
+ mapType: TString;
3690
+ enabled: TBoolean;
3691
+ }>>>;
3692
+ importedGeometries: TOptional<TArray<TObject<{
3693
+ asset: TNumber;
3694
+ entities: TArray<TNumber>;
3695
+ values: TArray<TNumber>;
3696
+ map: TArray<TNumber>;
3697
+ }>>>;
3698
+ animations: TOptional<TObject<{
3699
+ sets: TArray<TObject<{
3700
+ clips: TArray<TNumber>;
3701
+ }>>;
3702
+ clips: TArray<TObject<{
3703
+ name: TNumber;
3704
+ duration: TNumber;
3705
+ channels: TArray<TNumber>;
3706
+ }>>;
3707
+ channels: TArray<TObject<{
3708
+ target: TObject<{
3709
+ node: TNumber;
3710
+ path: TNumber;
3711
+ }>;
3712
+ sampler: TNumber;
3713
+ }>>;
3714
+ samplers: TArray<TObject<{
3715
+ start: TLiteral<"current">;
3716
+ times: TArray<TNumber>;
3717
+ easings: TArray<TNumber>;
3718
+ values: TArray<TArray<TUnion<[
3719
+ TNumber,
3720
+ TString
3721
+ ]>>>;
3722
+ }>>;
3723
+ names: TArray<TString>;
3724
+ easings: TArray<TString>;
3725
+ paths: TArray<TUnion<[
3726
+ TLiteral<"translation">,
3727
+ TLiteral<"rotation">
3728
+ ]>>;
3729
+ }>>;
3730
+ publication: TOptional<TObject<{
3731
+ id: TString;
3732
+ type: TOptional<TUnion<[
3733
+ TLiteral<"file">,
3734
+ TLiteral<"standard">
3735
+ ]>>;
3736
+ bind: TObject<{
3737
+ parameters: TOptional<TRecord<TString, TUnion<[
3738
+ TNumber,
3739
+ TNull
3740
+ ]>>>;
3741
+ dimensions: TOptional<TRecord<TString, TString>>;
3742
+ }>;
3743
+ }>>;
3744
+ }>,
3745
+ TObject<{
3746
+ documentation: TOptional<TObject<{
3747
+ id: TOptional<TString>;
3748
+ parameters: TOptional<TArray<TObject<{
3749
+ name: TString;
3750
+ type: TUnion<[
3751
+ TLiteral<"TEXT">,
3752
+ TLiteral<"PROJECTION">,
3753
+ TLiteral<"BOOL">,
3754
+ TLiteral<"SOURCE_DATA">
3755
+ ]>;
3756
+ uuid: TString;
3757
+ value: TString;
3758
+ }>>>;
3759
+ }>>;
3760
+ }>
3761
+ ]>;
3762
+ }>,
3763
+ TObject<{
3764
+ meta: TObject<{
3765
+ version: TLiteral<5>;
3766
+ type: TLiteral<"vac">;
3767
+ date: TString;
3768
+ }>;
3769
+ data: TIntersect<[
3770
+ TIntersect<[
3771
+ TObject<{
3772
+ attributes: TOptional<TArray<TRecord<TString, TString>>>;
3773
+ extensions: TArray<TString>;
3774
+ tree: TRecord<TNumber, TArray<TNumber>>;
3775
+ scene: TNumber;
3776
+ dataSource: TObject<{
3777
+ headers: TArray<TString>;
3778
+ rowId: TArray<TString>;
3779
+ colOrder: TArray<TString>;
3780
+ rowOrder: TArray<TString>;
3781
+ dataSource: TArray<TRecord<TString, TString>>;
3782
+ links: TOptional<TRecord<TString, TArray<TRecord<TString, TString>>>>;
3783
+ filters: TArray<TObject<{
3784
+ p: TString;
3785
+ f: TString;
3786
+ w: TString;
3787
+ pr: TString;
3788
+ }>>;
3789
+ select: TString;
3790
+ }>;
3791
+ objects: TArray<TObject<{
3792
+ ref: TOptional<TString>;
3793
+ descriptor: TOptional<TObject<{
3794
+ name: TString;
3795
+ code: TOptional<TString>;
3796
+ }>>;
3797
+ transform: TOptional<TNumber>;
3798
+ positioning: TOptional<TNumber>;
3799
+ boxSize: TOptional<TObject<{
3800
+ entities: TArray<TNumber>;
3801
+ values: TArray<TNumber>;
3802
+ }>>;
3803
+ propagation: TOptional<TNumber>;
3804
+ count: TOptional<TObject<{
3805
+ value: TString;
3806
+ }>>;
3807
+ geometry: TOptional<TNumber>;
3808
+ ar: TOptional<TObject<{
3809
+ enabled: TString;
3810
+ }>>;
3811
+ documentation: TOptional<TObject<{
3812
+ enabled: TString;
3813
+ }>>;
3814
+ attributes: TOptional<TArray<TNumber>>;
3815
+ uv: TOptional<TNumber>;
3816
+ structure: TOptional<TArray<TNumber>>;
3817
+ importedGeometry: TOptional<TNumber>;
3818
+ panel: TOptional<TNumber>;
3819
+ dimensionGeometry: TOptional<TNumber>;
3820
+ modifierAction: TOptional<TObject<{
3821
+ type: TString;
3822
+ }>>;
3823
+ id: TOptional<TObject<{
3824
+ value: TUnion<[
3825
+ TString,
3826
+ TNumber
3827
+ ]>;
3828
+ }>>;
3829
+ component: TOptional<TNumber>;
3830
+ leaf: TOptional<TObject<{
3831
+ state: TBoolean;
3832
+ }>>;
3833
+ extensions: TOptional<TRecord<TString, TNumber>>;
3834
+ gridPlane: TOptional<TObject<{
3835
+ mode: TOptional<TUnion<[
3836
+ TLiteral<"static">,
3837
+ TLiteral<"sticky">
3838
+ ]>>;
3839
+ tags: TArray<TNumber>;
3840
+ snaps: TArray<TUnion<[
3841
+ TObject<{
3842
+ type: TNumber;
3843
+ rows: TNumber;
3844
+ cols: TNumber;
3845
+ }>,
3846
+ TObject<{
3847
+ type: TNumber;
3848
+ x: TNumber;
3849
+ y: TNumber;
3850
+ }>
3851
+ ]>>;
3852
+ priority: TOptional<TNumber>;
3853
+ }>>;
3854
+ keyPoint: TOptional<TObject<{
3855
+ tags: TArray<TNumber>;
3856
+ }>>;
3857
+ boxCollider: TOptional<TObject<{
3858
+ tags: TArray<TNumber>;
3859
+ collision: TBoolean;
3860
+ interact: TBoolean;
3861
+ occluder: TOptional<TBoolean>;
3862
+ rangefinder: TOptional<TBoolean>;
3863
+ }>>;
3864
+ dynamicConfiguration: TOptional<TRecord<TString, TNumber>>;
3865
+ layers: TOptional<TObject<{
3866
+ ids: TArray<TNumber>;
3867
+ descendants: TOptional<TBoolean>;
3868
+ }>>;
3869
+ dimensioning: TOptional<TObject<{}>>;
3870
+ material: TOptional<TObject<{
3871
+ id: TNumber;
3872
+ }>>;
3873
+ materials: TOptional<TObject<{
3874
+ groups: TArray<TIntersect<[
3875
+ TObject<{
3876
+ availability: TNumber;
3877
+ alias: TOptional<TNumber>;
3878
+ tag: TNumber;
3879
+ }>,
3880
+ TUnion<[
3881
+ TObject<{
3882
+ type: TLiteral<"list">;
3883
+ materials: TArray<TNumber>;
3884
+ selected: TNumber;
3885
+ }>,
3886
+ TObject<{
3887
+ type: TLiteral<"query">;
3888
+ query: TNumber;
3889
+ selected: TNumber;
3890
+ }>
3891
+ ]>
3892
+ ]>>;
3893
+ }>>;
3894
+ textureFit: TOptional<TObject<{
3895
+ offset: TObject<{
3896
+ x: TNumber;
3897
+ y: TNumber;
3898
+ }>;
3899
+ rotation: TNumber;
3900
+ scale: TNumber;
3901
+ flip: TObject<{
3902
+ x: TBoolean;
3903
+ y: TBoolean;
3904
+ }>;
3905
+ random: TObject<{
3906
+ offsetX: TBoolean;
3907
+ offsetY: TBoolean;
3908
+ rotation: TBoolean;
3909
+ }>;
3910
+ }>>;
3911
+ rendering: TOptional<TObject<{
3912
+ shadow: TObject<{
3913
+ receive: TBoolean;
3914
+ cast: TBoolean;
3915
+ }>;
3916
+ order: TNumber;
3917
+ }>>;
3918
+ subcomponent: TOptional<TObject<{
3919
+ groups: TArray<TIntersect<[
3920
+ TObject<{
3921
+ availability: TNumber;
3922
+ alias: TOptional<TNumber>;
3923
+ tag: TNumber;
3924
+ }>,
3925
+ TUnion<[
3926
+ TObject<{
3927
+ type: TLiteral<"list">;
3928
+ assets: TArray<TNumber>;
3929
+ selected: TNumber;
3930
+ }>,
3931
+ TObject<{
3932
+ type: TLiteral<"query">;
3933
+ query: TNumber;
3934
+ selected: TNumber;
3935
+ }>
3936
+ ]>
3937
+ ]>>;
3938
+ }>>;
3939
+ rangefinder: TOptional<TObject<{
3940
+ tags: TArray<TNumber>;
3941
+ axis: TArray<TUnion<[
3942
+ TLiteral<"x">,
3943
+ TLiteral<"y">,
3944
+ TLiteral<"z">
3945
+ ]>>;
3946
+ near: TOptional<TNumber>;
3947
+ far: TOptional<TNumber>;
3948
+ }>>;
3949
+ animationSet: TOptional<TNumber>;
3950
+ }>>;
3951
+ variables: TObject<{
3952
+ entities: TArray<TNumber>;
3953
+ values: TArray<TUnion<[
3954
+ TNumber,
3955
+ TObject<{
3956
+ lookup: TNumber;
3957
+ }>
3958
+ ]>>;
3959
+ drivers: TArray<TNumber>;
3960
+ designations: TArray<TString>;
3961
+ helpers: TArray<TNumber>;
3962
+ }>;
3963
+ extensionsRequired: TArray<TString>;
3964
+ scenes: TArray<TObject<{
3965
+ objects: TArray<TNumber>;
3966
+ }>>;
3967
+ entities: TOptional<TArray<TString>>;
3968
+ values: TOptional<TArray<TUnion<[
3969
+ TNumber,
3970
+ TString,
3971
+ TBoolean
3972
+ ]>>>;
3973
+ assets: TOptional<TArray<TString>>;
3974
+ $schema: TOptional<TString>;
3975
+ transforms: TOptional<TArray<TArray<TString>>>;
3976
+ positionings: TOptional<TArray<TArray<TNumber>>>;
3977
+ geometryTypes: TOptional<TArray<TUnion<[
3978
+ TLiteral<"ARROW">,
3979
+ TLiteral<"BEZIERT1">,
3980
+ TLiteral<"BEZIERT2">,
3981
+ TLiteral<"BEZIERT3">,
3982
+ TLiteral<"BOX">,
3983
+ TLiteral<"BOX2">,
3984
+ TLiteral<"BOX2X45">,
3985
+ TLiteral<"BOXHOLE">,
3986
+ TLiteral<"CIRCLE">,
3987
+ TLiteral<"CIRCLET1">,
3988
+ TLiteral<"EMPTY">,
3989
+ TLiteral<"FILE">,
3990
+ TLiteral<"K45">,
3991
+ TLiteral<"K90">,
3992
+ TLiteral<"PLANE">,
3993
+ TLiteral<"WDXF">
3994
+ ]>>>;
3995
+ geometries: TOptional<TArray<TObject<{
3996
+ type: TNumber;
3997
+ entities: TArray<TNumber>;
3998
+ values: TArray<TNumber>;
3999
+ }>>>;
4000
+ templates: TOptional<TArray<TUnion<[
4001
+ TLiteral<"ROOT">,
4002
+ TLiteral<"GROUP">,
4003
+ TLiteral<"FILE">,
4004
+ TLiteral<"IMPORT">,
4005
+ TLiteral<"ELEMENT">,
4006
+ TLiteral<"DIMENSIONS">,
4007
+ TLiteral<"MODIFIER">
4008
+ ]>>>;
4009
+ propagations: TOptional<TArray<TArray<TString>>>;
4010
+ uvs: TOptional<TArray<TObject<{
4011
+ result: TObject<{
4012
+ offset: TUnion<[
4013
+ TObject<{
4014
+ type: TString;
4015
+ parameters: TOptional<TRecord<TString, TString>>;
4016
+ }>,
4017
+ TBoolean
4018
+ ]>;
4019
+ rotate: TString;
4020
+ }>;
4021
+ }>>>;
4022
+ structures: TOptional<TArray<TObject<{
4023
+ id: TOptional<TUnion<[
4024
+ TString,
4025
+ TNumber
4026
+ ]>>;
4027
+ filterId: TOptional<TUnion<[
4028
+ TString,
4029
+ TNumber
4030
+ ]>>;
4031
+ valueFx: TOptional<TString>;
4032
+ availabilityFx: TOptional<TString>;
4033
+ }>>>;
4034
+ shadows: TOptional<TArray<TObject<{
4035
+ cast: TBoolean;
4036
+ receive: TBoolean;
4037
+ }>>>;
4038
+ panels: TOptional<TArray<TObject<{
4039
+ materialGroup: TArray<TObject<{
4040
+ id: TOptional<TUnion<[
4041
+ TString,
4042
+ TNumber
4043
+ ]>>;
4044
+ filterId: TOptional<TUnion<[
4045
+ TString,
4046
+ TNumber
4047
+ ]>>;
4048
+ valueFx: TOptional<TString>;
4049
+ availabilityFx: TOptional<TString>;
4050
+ }>>;
4051
+ finish: TArray<TObject<{
4052
+ id: TOptional<TUnion<[
4053
+ TString,
4054
+ TNumber
4055
+ ]>>;
4056
+ filterId: TOptional<TUnion<[
4057
+ TString,
4058
+ TNumber
4059
+ ]>>;
4060
+ valueFx: TOptional<TString>;
4061
+ availabilityFx: TOptional<TString>;
4062
+ matTexture: TBoolean;
4063
+ edgeSide: TArray<TUnion<[
4064
+ TLiteral<"X-">,
4065
+ TLiteral<"X+">,
4066
+ TLiteral<"Y-">,
4067
+ TLiteral<"Y+">
4068
+ ]>>;
4069
+ }>>;
4070
+ services: TArray<TObject<{
4071
+ id: TOptional<TUnion<[
4072
+ TString,
4073
+ TNumber
4074
+ ]>>;
4075
+ filterId: TOptional<TUnion<[
4076
+ TString,
4077
+ TNumber
4078
+ ]>>;
4079
+ valueFx: TOptional<TString>;
4080
+ availabilityFx: TOptional<TString>;
4081
+ }>>;
4082
+ }>>>;
4083
+ components: TOptional<TArray<TObject<{
4084
+ asset: TNumber;
4085
+ entities: TArray<TNumber>;
4086
+ values: TArray<TNumber>;
4087
+ }>>>;
4088
+ maps: TOptional<TArray<TObject<{
4089
+ asset: TNumber;
4090
+ mapType: TString;
4091
+ enabled: TBoolean;
4092
+ }>>>;
4093
+ importedGeometries: TOptional<TArray<TObject<{
4094
+ asset: TNumber;
4095
+ entities: TArray<TNumber>;
4096
+ values: TArray<TNumber>;
4097
+ map: TArray<TNumber>;
4098
+ }>>>;
4099
+ animations: TOptional<TObject<{
4100
+ sets: TArray<TObject<{
4101
+ clips: TArray<TNumber>;
4102
+ }>>;
4103
+ clips: TArray<TObject<{
4104
+ name: TNumber;
4105
+ duration: TNumber;
4106
+ channels: TArray<TNumber>;
4107
+ }>>;
4108
+ channels: TArray<TObject<{
4109
+ target: TObject<{
4110
+ node: TNumber;
4111
+ path: TNumber;
4112
+ }>;
4113
+ sampler: TNumber;
4114
+ }>>;
4115
+ samplers: TArray<TObject<{
4116
+ start: TLiteral<"current">;
4117
+ times: TArray<TNumber>;
4118
+ easings: TArray<TNumber>;
4119
+ values: TArray<TArray<TUnion<[
4120
+ TNumber,
4121
+ TString
4122
+ ]>>>;
4123
+ }>>;
4124
+ names: TArray<TString>;
4125
+ easings: TArray<TString>;
4126
+ paths: TArray<TUnion<[
4127
+ TLiteral<"translation">,
4128
+ TLiteral<"rotation">
4129
+ ]>>;
4130
+ }>>;
4131
+ publication: TOptional<TObject<{
4132
+ id: TString;
4133
+ type: TOptional<TUnion<[
4134
+ TLiteral<"file">,
4135
+ TLiteral<"standard">
4136
+ ]>>;
4137
+ bind: TObject<{
4138
+ parameters: TOptional<TRecord<TString, TUnion<[
4139
+ TNumber,
4140
+ TNull
4141
+ ]>>>;
4142
+ dimensions: TOptional<TRecord<TString, TString>>;
4143
+ }>;
4144
+ }>>;
4145
+ }>,
4146
+ TObject<{
4147
+ documentation: TOptional<TObject<{
4148
+ id: TOptional<TString>;
4149
+ parameters: TOptional<TArray<TObject<{
4150
+ name: TString;
4151
+ type: TUnion<[
4152
+ TLiteral<"TEXT">,
4153
+ TLiteral<"PROJECTION">,
4154
+ TLiteral<"BOOL">,
4155
+ TLiteral<"SOURCE_DATA">
4156
+ ]>;
4157
+ uuid: TString;
4158
+ value: TString;
4159
+ }>>>;
4160
+ }>>;
4161
+ }>
4162
+ ]>,
4163
+ TObject<{
4164
+ lookups: TOptional<TArray<TObject<{
4165
+ fileId: TNumber;
4166
+ columnId: TNumber;
4167
+ query: TNumber;
4168
+ fallback: TNumber;
4169
+ }>>>;
4170
+ }>
4171
+ ]>;
4172
+ }>
4173
+ ]>;
4174
+ type TVacFile = Static<typeof vacFileSchema>;
4175
+ export type TLoaderApi = {
4176
+ /** @ignore */
4177
+ internal: {
4178
+ saveInAssetMetadataCache(props: Record<string, TAssetMetadata> | Array<TAssetMetadata & {
4179
+ id: string;
4180
+ }>): void;
4181
+ };
4182
+ events: Emittery<TLoaderApiEvents>;
4183
+ getVacModelAssetById(assetId: string, options?: RequestInit): Promise<TVacFile>;
4184
+ getVasModelAssetById(assetId: string, options?: RequestInit): Promise<TVasFile>;
4185
+ getAssetById(assetId: string, options?: RequestInit): Promise<TAssetCacheBlob>;
4186
+ getAssetMetadataById(assetId: string): Promise<TAssetMetadata>;
4187
+ getManyAssetMetadataById(assetIds: string[]): Promise<Record<string, TAssetMetadata>>;
4188
+ getManyAssetMetadataByQuery({ extensions, queries, }: {
4189
+ extensions: string[];
4190
+ queries: Record<string, any>;
4191
+ }): Promise<Record<string, TAssetMetadata>>;
4192
+ getAssetUrl(id: string): string;
4193
+ };
4194
+ type TLoaderApiEvents = TWebComponentEvents;
4195
+ type TAssetMetadata = {
4196
+ name: string;
4197
+ properties: TPropertyItem$1[];
4198
+ };
4199
+ type TPropertyItem$1 = {
4200
+ id: number;
4201
+ value: string;
4202
+ };
4203
+ type TPlacementSessionState = "IDLE" | "DRAGGING_FROM_PALETTE" | "DRAGGING_PLACEMENT_PROXY" | "DRAGGING_OBJECT" | "COMMITTING_PLACEMENT" | "CANCELLED" | "FAILED";
4204
+ type TPlacementLoadStatus = "none" | "loading" | "ready" | "failed";
4205
+ type TPlacementSessionDebug = {
4206
+ sessionId: string;
4207
+ state: TPlacementSessionState;
4208
+ loadStatus: TPlacementLoadStatus;
4209
+ };
4210
+ type TViewerDragUpdateData = {
4211
+ placementSessionId: string;
4212
+ offsetX: number;
4213
+ offsetY: number;
4214
+ label?: string;
4215
+ placementBounds?: TPlacementBounds;
4216
+ placementSessionDebug?: TPlacementSessionDebug;
4217
+ };
4218
+ type TExternalPlacementCommand = {
4219
+ type: "SYNC_PROXY_DRAG" | "HIDE_PROXY_DRAG" | "CLEAR_PROXY_DRAG" | "SYNC_OBJECT_DRAG" | "HIDE_OBJECT_DRAG" | "COMMIT_PLACEMENT" | "CANCEL_PLACEMENT" | "FAIL_PLACEMENT";
4220
+ data: TViewerDragUpdateData;
4221
+ };
4222
+ type TExternalPlacementResult = {
4223
+ type: "COMMIT_FINISHED" | "COMMIT_REJECTED" | "CLEANUP_FINISHED";
4224
+ placementSessionId: string;
4225
+ };
4226
+ type TExternalPlacementReady = {
4227
+ placementSessionId: string;
4228
+ };
4229
+ type TViewerRangefinder = {
4230
+ available: boolean;
4231
+ enabled: boolean;
4232
+ };
4233
+ type TObjectTransformUpdate = {
4234
+ id: string;
4235
+ transform: number[];
4236
+ };
4237
+ type TViewerAnimation = {
4238
+ key: string;
4239
+ };
4240
+ type TScreenRect = {
4241
+ left: number;
4242
+ top: number;
4243
+ right: number;
4244
+ bottom: number;
4245
+ width: number;
4246
+ height: number;
4247
+ };
4248
+ type TSelectionScreenGeometry = {
4249
+ center: {
4250
+ x: number;
4251
+ y: number;
4252
+ };
4253
+ bounds: TScreenRect;
4254
+ viewport: {
4255
+ width: number;
4256
+ height: number;
4257
+ };
4258
+ };
4259
+ type TSelectionScreenGeometrySource = "selection" | "interaction" | "camera" | "layout-transform" | "programmatic";
4260
+ type TSelectionScreenGeometryUpdate = TSelectionScreenGeometry & {
4261
+ source: TSelectionScreenGeometrySource;
4262
+ };
4263
+ export type TViewerNgApi = {
4264
+ /** @ignore */
4265
+ internal: {
4266
+ updatePlacementBounds(objectId: string, placementBounds: TPlacementBounds): void;
4267
+ applyExternalPlacementCommand(command: TExternalPlacementCommand): void;
4268
+ };
4269
+ events: Emittery<TViewerNgApiEvents>;
4270
+ playAnimation(animationKey: string): Promise<void>;
4271
+ getObjectAnimations(objectId: string): TViewerAnimation[];
4272
+ playObjectAnimation(objectId: string, animationKey: string): Promise<void>;
4273
+ setDebug(state: boolean): void;
4274
+ enableRangefinder(): void;
4275
+ disableRangefinder(): void;
4276
+ deleteObjects(ids: string[]): void;
4277
+ getObjectTransform(id: string): number[] | null;
4278
+ getObjectTransformUpdates(id: string): TObjectTransformUpdate[];
4279
+ getRangefinderState(): TViewerRangefinder | null;
4280
+ highlight(id: string | string[]): void;
4281
+ select(id: string | null): void;
4282
+ unhighlight(id?: string | string[]): void;
4283
+ updateObjectTransform(id: string, transform: number[], options?: {
4284
+ screenGeometrySource?: TSelectionScreenGeometrySource;
4285
+ }): void;
4286
+ highlightByTag(rootId: string, tag: TRenderDataObjectTag): void;
4287
+ unhighlightByTag(rootId: string, tag: TRenderDataObjectTag): void;
4288
+ showDimensions(state: boolean): void;
4289
+ getDimensionsState(): boolean;
4290
+ show(id: string | string[]): void;
4291
+ hide(id: string | string[]): void;
4292
+ getObjectStates(): Record<string, TObjectState>;
4293
+ findObjectById(rootId: string, objectId: string): unknown | null;
4294
+ toggleCameraLayers(id: number[]): void;
4295
+ getSnapshotBlob(): Promise<{
4296
+ status: "success";
4297
+ blob: Blob;
4298
+ } | {
4299
+ status: "error";
4300
+ message: string;
4301
+ }>;
4302
+ getModelGLBBlob(): Promise<{
4303
+ status: "success";
4304
+ blob: Blob;
4305
+ } | {
4306
+ status: "error";
4307
+ message: string;
4308
+ }>;
4309
+ generateAndUploadAR(): Promise<{
4310
+ status: "success";
4311
+ qrImage: string;
4312
+ url: string;
4313
+ } | {
4314
+ status: "error";
4315
+ message: string;
4316
+ }>;
4317
+ applySettings(settings: Partial<TSettings>): void;
4318
+ };
4319
+ type TViewerNgApiEvents = TWebComponentEvents<{
4320
+ updating: void;
4321
+ updated: void;
4322
+ loaded: TTimestampEventPayload;
4323
+ externalPlacementReady: TExternalPlacementReady;
4324
+ externalPlacementResult: TExternalPlacementResult;
4325
+ inputStateChanged: TViewerInputState;
4326
+ dimensionsStateChanged: boolean;
4327
+ selectionChanged: {
4328
+ id: string;
4329
+ screenGeometry: TSelectionScreenGeometryUpdate | null;
4330
+ } | null;
4331
+ objectsStateChanged: void;
4332
+ }>;
4333
+ type TObjectState = Partial<{
4334
+ colliding?: boolean;
4335
+ }>;
4336
+ type TViewerInputState = {
4337
+ state: "IDLE" | "ACTIVE";
4338
+ isPointerDown: boolean;
4339
+ isControlsInputActive: boolean;
4340
+ isObjectDragging: boolean;
4341
+ isExternalDragging: boolean;
4342
+ };
4343
+ export type TLayoutNgApi = {
4344
+ events: Emittery<TLayoutNgApiEvents>;
4345
+ applyLayoutSettings(settingsPatch: Partial<TLayoutSettings>): void;
4346
+ };
4347
+ type TLayoutNgApiEvents = TWebComponentEvents;
4348
+ type TPrimitive = bigint | boolean | null | number | string | symbol | undefined;
4349
+ /**
4350
+ * @category Addons API
4351
+ */
4352
+ export type TDocumentationNgApi = {
4353
+ events: Emittery<TDocumentationNgApiEvents>;
4354
+ /**
4355
+ * Checks if documentation generation is available.
4356
+ */
4357
+ getDocumentationAvailability(): boolean;
4358
+ /**
4359
+ * Generates the documentation PDF as a Blob using optional source data.
4360
+ */
4361
+ generate(): Promise<Blob>;
4362
+ /**
4363
+ * Generates and triggers download of the documentation PDF using optional source data.
4364
+ */
4365
+ generateAndDownload(): Promise<void>;
4366
+ };
4367
+ type TDocumentationNgApiEvents = TWebComponentEvents<{
4368
+ availabilityChanged: boolean;
4369
+ generated: Blob;
4370
+ downloaded: Blob;
4371
+ }>;
4372
+ export type TIntegrationConnectorApi = {
4373
+ events: Emittery<TIntegrationConnectorApiEvents>;
4374
+ /**
4375
+ * Executes a flow immediately with the given parameters and returns the response.
4376
+ */
4377
+ execute: (params: TExecuteParams) => Promise<TExecutionResponse>;
4378
+ /**
4379
+ * Hooks specified flows by their IDs to the current project.
4380
+ */
4381
+ hookFlowsByIds: (ids: string[]) => Promise<void>;
4382
+ };
4383
+ type TIntegrationConnectorApiEvents = TWebComponentEvents<{
4384
+ executed: TExecutionResponse & {
4385
+ id: string;
4386
+ name: string;
4387
+ };
4388
+ }>;
4389
+ type TExecuteParams = {
4390
+ id: string;
4391
+ inputData?: unknown;
4392
+ };
4393
+ type TExecutionResponse = {
4394
+ isSuccess: boolean;
4395
+ data: unknown;
4396
+ };
4397
+ export type TPlayerApi = {
4398
+ /** @ignore */
4399
+ internal: {
4400
+ runUpdate<T>(callback: () => Promise<T>): Promise<T>;
4401
+ };
4402
+ /** Initial addons, scene rendering and query hydration. Rejects on startup failure or disposal. */
4403
+ ready: () => Promise<void>;
4404
+ /** The ready event is an early addon API barrier; await ready() for initial scene and query data. */
4405
+ events: Emittery<TPlayerApiEvents>;
4406
+ query: TQuery<TQueryStore>;
4407
+ getSiteId: () => string;
4408
+ isDevelopmentMode: () => boolean;
4409
+ getLibraryVersion: () => string;
4410
+ getTranslations: () => Record<string, any>;
4411
+ translate: (value: string) => string;
4412
+ getConfigurationId: () => string | null;
4413
+ generateConfiguration: () => Promise<{
4414
+ status: "success";
4415
+ id: string;
4416
+ url: string;
4417
+ dataUrl: string;
4418
+ } | {
4419
+ status: "error";
4420
+ message: string;
4421
+ }>;
4422
+ loadConfiguration: (idOrUrl: string | null) => Promise<{
4423
+ status: "success";
4424
+ } | {
4425
+ status: "error";
4426
+ message: string;
4427
+ }>;
4428
+ engine: TEngineApi;
4429
+ loader: TLoaderApi;
4430
+ viewer: TViewerNgApi;
4431
+ layout?: TLayoutNgApi;
4432
+ documentation?: TDocumentationNgApi;
4433
+ ic?: TIntegrationConnectorApi;
4434
+ };
4435
+ export type TPlayerApiEvents = TWebComponentEvents<{
4436
+ loading: void;
4437
+ loaded: void;
4438
+ updating: void;
4439
+ updated: void;
4440
+ }>;
4441
+ export type TAssemblyMode = "multi-object" | "single-object";
4442
+ export type TQueryStore = {
4443
+ status: "updating" | "updated";
4444
+ assemblyMode: TAssemblyMode | null;
4445
+ layoutConfiguration: TLayoutSettings | null;
4446
+ layerButtons: TLayerButtonQueryItem[];
4447
+ presetsConfiguration: TPresetsConfiguration | null;
4448
+ assetsPalette: TAssetsPaletteWithActions;
4449
+ products: TProductItem[];
4450
+ pricing: TPricingData$1;
4451
+ customRules: TCustomRulesData;
4452
+ layoutResult: TVasFile["set"]["configuration"]["layoutResult"] | undefined;
4453
+ documentations: TObjectDocumentation[];
4454
+ /** Viewer dimension visibility and action; null until addons are ready. */
4455
+ dimensions: {
4456
+ enabled: boolean;
4457
+ toggle: () => void;
4458
+ } | null;
4459
+ "viewer:input": TViewerInputState;
4460
+ rangefinder: {
4461
+ enabled: boolean;
4462
+ toggle: () => void;
4463
+ } | null;
4464
+ "selection:info": {
4465
+ id: string;
4466
+ name: string;
4467
+ } | null;
4468
+ "selection:screenGeometry": TSelectionScreenGeometryUpdate | null;
4469
+ "selection:materialGroups": TMaterialGroupWithActions[] | null;
4470
+ "selection:animations": TAnimationWithActions[] | null;
4471
+ "selection:subcomponentGroups": TSubcomponentGroupWithActions[] | null;
4472
+ "selection:transform": TSelectionTransform | null;
4473
+ "selection:actions": {
4474
+ deselect: () => void;
4475
+ delete?: () => Promise<void>;
4476
+ } | null;
4477
+ "selection:configuration": TConfiguration | null;
4478
+ };
4479
+ export type TLayerButtonQueryItem = {
4480
+ name: string;
4481
+ state: boolean;
4482
+ toggle: () => void;
4483
+ };
4484
+ export type TQuery<T extends TQueryStore> = {
4485
+ get<K extends keyof T>(key: K): T[K];
4486
+ subscribe<K extends keyof T>(key: K, callback: (value: T[K]) => void): () => void;
4487
+ reloadLayout(): Promise<void>;
4488
+ };
4489
+ export type TSelectionTransform = {
4490
+ get(): number[] | null;
4491
+ update(transform: number[], options?: {
4492
+ screenGeometrySource?: "layout-transform";
4493
+ }): void;
4494
+ commit(): Promise<void>;
4495
+ };
4496
+ export type TAssetsPaletteLinkedProperties = {
4497
+ name?: string;
4498
+ description?: string;
4499
+ image?: string;
4500
+ };
4501
+ export type TAssetsPalette = {
4502
+ categories?: TAssetsPaletteCategory[];
4503
+ selectedCategoryPath?: number[];
4504
+ styleSettings?: TStyleSettings;
4505
+ patternType?: TAssetsPalettePatternType$1;
4506
+ addingAssetsMethod?: TAddingAssetsMethod$1;
4507
+ sortingSettings?: TSortingSettings$1;
4508
+ };
4509
+ export type TAssetsPaletteWithActions = {
4510
+ categories?: TAssetsPaletteCategory[];
4511
+ selectedCategoryPath?: number[];
4512
+ styleSettings?: TStyleSettings;
4513
+ patternType?: TAssetsPalettePatternType$1;
4514
+ addingAssetsMethod?: TAddingAssetsMethod$1;
4515
+ };
4516
+ export type TAssetsPaletteCategory = {
4517
+ id: number;
4518
+ name: string;
4519
+ items: TAssetsPaletteItem[];
4520
+ children?: TAssetsPaletteCategory[];
4521
+ icon?: string | null;
4522
+ };
4523
+ export type TAssetsPaletteItem = {
4524
+ id: string;
4525
+ name: string;
4526
+ linkedProperties?: TAssetsPaletteLinkedProperties;
4527
+ defaultNodeId?: number;
4528
+ events: TAssetsPaletteItemEvents;
4529
+ styles?: Record<string, unknown>;
4530
+ actions: {
4531
+ add: () => Promise<void>;
4532
+ };
4533
+ };
4534
+ export type TAssetsPaletteItemEventsMap = Pick<GlobalEventHandlersEventMap, "mouseenter" | "pointerdown">;
4535
+ export type TAssetsPaletteItemEvents = {
4536
+ [K in keyof TAssetsPaletteItemEventsMap]: (event: TAssetsPaletteItemEventsMap[K]) => void;
4537
+ };
4538
+ export type TProductItem = {
4539
+ id: string;
4540
+ name: string;
4541
+ actions: {
4542
+ delete: () => Promise<void>;
4543
+ highlight: () => void;
4544
+ select: () => void;
4545
+ unhighlight: () => void;
4546
+ };
4547
+ linkedProperties?: TAssetsPaletteLinkedProperties;
4548
+ state?: Partial<{
4549
+ colliding: boolean;
4550
+ }>;
4551
+ };
4552
+ export type TMaterialsLinkedProperties = {
4553
+ name?: string;
4554
+ thumbnail?: string;
4555
+ };
4556
+ export type TMaterialDataWithActions = TMaterialData & {
4557
+ select: () => Promise<void>;
4558
+ linkedProperties?: TMaterialsLinkedProperties;
4559
+ styleSettings?: TStyleSettings;
4560
+ };
4561
+ export type TMaterialGroupWithActions = TMaterialGroup$1 & {
4562
+ materials: TMaterialDataWithActions[];
4563
+ styleSettings?: TStyleSettings;
4564
+ propagate?: () => Promise<void>;
4565
+ };
4566
+ export type TAnimationWithActions = {
4567
+ key: string;
4568
+ play: () => Promise<void>;
4569
+ };
4570
+ export type TSubcomponentsLinkedProperties = {
4571
+ name?: string;
4572
+ thumbnail?: string;
4573
+ };
4574
+ export type TSubcomponentDataWithActions = TSubcomponentData & {
4575
+ select: () => Promise<void>;
4576
+ linkedProperties?: TSubcomponentsLinkedProperties;
4577
+ styleSettings?: TStyleSettings;
4578
+ };
4579
+ export type TSubcomponentGroupWithActions = TSubcomponentGroup$1 & {
4580
+ subcomponents: TSubcomponentDataWithActions[];
4581
+ styleSettings?: TStyleSettings;
4582
+ propagate?: () => Promise<void>;
4583
+ highlight: () => void;
4584
+ unhighlight: () => void;
4585
+ };
4586
+ export type TAssetItem = {
4587
+ id: string;
4588
+ name: string;
4589
+ properties: TPropertyItem$2[];
4590
+ linkedProperties?: TAssetsPaletteLinkedProperties;
4591
+ };
4592
+ type TPropertyItem$2 = {
4593
+ id: number;
4594
+ value: string;
4595
+ };
4596
+ type TAssetsPalettePatternType$1 = "hierarchical" | "breadcrumbs";
4597
+ type TAddingAssetsMethod$1 = "dragAndDrop" | "clickToAdd";
4598
+ type TSortingSettings$1 = {
4599
+ field: "name" | "property" | "id";
4600
+ order: "asc" | "desc";
4601
+ };
4602
+ export type TConfigurationEvents = {
4603
+ [K in keyof GlobalEventHandlersEventMap]?: (event: GlobalEventHandlersEventMap[K]) => void;
4604
+ } | undefined;
4605
+ export type TConfigurationBlockNumberRange = {
4606
+ type: "number-range";
4607
+ value: number;
4608
+ range: {
4609
+ min: number;
4610
+ max: number;
4611
+ };
4612
+ preferred: number[];
4613
+ step: number;
4614
+ onUpdate(value: number): Promise<void>;
4615
+ };
4616
+ export type TConfigurationBlockNumberPredefined = {
4617
+ type: "number-predefined";
4618
+ value: number;
4619
+ options: Array<{
4620
+ value: number;
4621
+ selected?: boolean;
4622
+ preferred?: boolean;
4623
+ }>;
4624
+ onUpdate(value: number): Promise<void>;
4625
+ };
4626
+ export type TConfigurationBlockText = {
4627
+ type: "text";
4628
+ value: string;
4629
+ };
4630
+ export type TConfigurationBlockTextInput = {
4631
+ type: "text-input";
4632
+ value: string;
4633
+ maxLength: number;
4634
+ placeholder: string;
4635
+ onUpdate(value: string): Promise<void>;
4636
+ };
4637
+ export type TConfigurationBlockBoolean = {
4638
+ type: "boolean";
4639
+ value: boolean;
4640
+ onUpdate(value: boolean): Promise<void>;
4641
+ };
4642
+ export type TConfigurationBlockList = {
4643
+ type: "list";
4644
+ style: TConfigurationBlockListDropdownStyle | TConfigurationBlockListButtonsStyle | TConfigurationBlockListDropdownImageStyle | TConfigurationBlockListButtonsImageStyle;
4645
+ selected: string;
4646
+ options: Array<{
4647
+ value: string;
4648
+ label: string;
4649
+ imageSrc?: string;
4650
+ }>;
4651
+ onUpdate(value: string): Promise<void>;
4652
+ };
4653
+ export type TConfigurationBlockListDropdownStyle = {
4654
+ type: "dropdown";
4655
+ };
4656
+ export type TConfigurationBlockListButtonsStyle = {
4657
+ type: "buttons";
4658
+ align: "content" | "responsive";
4659
+ };
4660
+ export type TConfigurationBlockListDropdownImageStyle = {
4661
+ type: "dropdownImage";
4662
+ size: "sm" | "md" | "lg";
4663
+ };
4664
+ export type TConfigurationBlockListButtonsImageStyle = {
4665
+ type: "buttonsImage";
4666
+ size: "sm" | "md" | "lg";
4667
+ shape: "square" | "portrait" | "landscape";
4668
+ };
4669
+ export type TConfigurationBlock = {
4670
+ id: string;
4671
+ label: string;
4672
+ kind: TConfigurationBlockNumberRange | TConfigurationBlockNumberPredefined | TConfigurationBlockText | TConfigurationBlockTextInput | TConfigurationBlockBoolean | TConfigurationBlockList;
4673
+ events: TConfigurationEvents;
4674
+ };
4675
+ export type TConfigurationPanel = {
4676
+ id: string;
4677
+ label: string;
4678
+ blocks: TConfigurationBlock[];
4679
+ events: TConfigurationEvents;
4680
+ };
4681
+ export type TConfigurationContainer = {
4682
+ id: string;
4683
+ panels: TConfigurationPanel[];
4684
+ };
4685
+ export type TConfiguration = {
4686
+ containers: TConfigurationContainer[];
4687
+ };
4688
+ type TPricingSection$1 = {
4689
+ name: string;
4690
+ table: string[][];
4691
+ price: number;
4692
+ priceColumnIndex: number;
4693
+ };
4694
+ type TPricingData$1 = {
4695
+ finalPrice: number;
4696
+ sections: TPricingSection$1[];
4697
+ status?: "available" | "unavailable";
4698
+ };
4699
+ export type TToolbarNgApi = {
4700
+ events: Emittery<TToolbarNgApiEvents>;
4701
+ };
4702
+ type TToolbarNgApiEvents = TWebComponentEvents;
4703
+ /** The assembly custom element and its public API. */
4704
+ export type TPlayerComponent = HTMLElement & {
4705
+ api: TPlayerApi;
4706
+ };
4707
+
4708
+ declare namespace Configuration {
4709
+ export { TConfigurationBaseNg, TConfigurationExportDataNg, TConfigurationNg, configurationExportDataNgSchema, configurationNgSchema };
4710
+ }
4711
+ declare namespace Player {
4712
+ export { TAddingAssetsMethod$1 as TAddingAssetsMethod, TAnimationWithActions, TAssemblyMode, TAssetItem, TAssetsPalette, TAssetsPaletteCategory, TAssetsPaletteItem, TAssetsPaletteItemEvents, TAssetsPaletteItemEventsMap, TAssetsPaletteLinkedProperties, TAssetsPalettePatternType$1 as TAssetsPalettePatternType, TAssetsPaletteWithActions, TConfiguration, TConfigurationBlock, TConfigurationBlockBoolean, TConfigurationBlockList, TConfigurationBlockListButtonsImageStyle, TConfigurationBlockListButtonsStyle, TConfigurationBlockListDropdownImageStyle, TConfigurationBlockListDropdownStyle, TConfigurationBlockNumberPredefined, TConfigurationBlockNumberRange, TConfigurationBlockText, TConfigurationBlockTextInput, TConfigurationContainer, TConfigurationEvents, TConfigurationPanel, TLayerButtonQueryItem, TMaterialDataWithActions, TMaterialGroupWithActions, TMaterialsLinkedProperties, TPlayerApi, TPlayerApiEvents, TPricingData$1 as TPricingData, TPricingSection$1 as TPricingSection, TProductItem, TPropertyItem$2 as TPropertyItem, TQuery, TQueryStore, TSelectionTransform, TSortingSettings$1 as TSortingSettings, TSubcomponentDataWithActions, TSubcomponentGroupWithActions, TSubcomponentsLinkedProperties };
4713
+ }
4714
+ declare namespace Documentation {
4715
+ export { TDocumentationNgApi, TDocumentationNgApiEvents, TPrimitive };
4716
+ }
4717
+ declare namespace Engine {
4718
+ export { TAddingAssetsMethod, TApplicationStrategy, TAssetsPaletteConfiguration, TAssetsPaletteLinkedPropertiesIds, TAssetsPalettePatternType, TAssetsPaletteUnparsedCategory, TCameraConfiguration, TDeleteUpdate, TEngineApi, TEngineApiEvents, TImageStyleSettings, TItemData, TLayoutSettings, TLinkedPropertiesIds, TMaterialData, TMaterialGroup$1 as TMaterialGroup, TMaterialsConfiguration, TMaterialsLinkedPropertiesIds, TPlacementBounds, TPreset, TPresetsConfiguration, TPropertyItem, TRenderChunk, TRenderStreamEvents, TRenderStreamFailed, TRenderStreamStarted, TRenderUpdate, TSortingSettings, TStyleSettings, TSubcomponentData, TSubcomponentGroup$1 as TSubcomponentGroup, TSubcomponentsConfiguration, TSubcomponentsLinkedPropertiesIds, TUpdatedPayload };
4719
+ }
4720
+ declare namespace Events {
4721
+ export { TCommonWebComponentEvents, TTimestampEventPayload, TWebComponentEvents };
4722
+ }
4723
+ declare namespace IntegrationConnector {
4724
+ export { TExecuteParams, TExecutionResponse, TIntegrationConnectorApi, TIntegrationConnectorApiEvents };
4725
+ }
4726
+ declare namespace Loader {
4727
+ export { TAssetMetadata, TLoaderApi, TLoaderApiEvents, TPropertyItem$1 as TPropertyItem };
4728
+ }
4729
+ declare namespace Layout {
4730
+ export { TLayoutNgApi, TLayoutNgApiEvents };
4731
+ }
4732
+ declare namespace Toolbar {
4733
+ export { TToolbarNgApi, TToolbarNgApiEvents };
4734
+ }
4735
+ declare namespace Viewer {
4736
+ export { TExternalPlacementCommand, TExternalPlacementReady, TExternalPlacementResult, TObjectState, TObjectTransformUpdate, TPlacementLoadStatus, TPlacementSessionDebug, TPlacementSessionState, TScreenRect, TSelectionScreenGeometry, TSelectionScreenGeometrySource, TSelectionScreenGeometryUpdate, TViewerAnimation, TViewerDragUpdateData, TViewerInputState, TViewerNgApi, TViewerNgApiEvents, TViewerRangefinder };
4737
+ }
4738
+ declare namespace EngineTypes {
4739
+ export { TAnimationRenderData, TBlockBoolean, TBlockList, TBlockListButtonsImageStyle, TBlockListButtonsStyle, TBlockListDropdownImageStyle, TBlockListDropdownStyle, TBlockNumberPredefined, TBlockNumberRange, TBlockText, TBlockTextInput, TCommonMaterialGroupProperties, TCommonSubcomponentGroupProperties, TCustomRuleData, TCustomRulesData, TDocumentation, TEvents, TInteractionMode, TMaterialGroup, TObjectDocumentation, TPricingData, TPricingSection, TPublication, TPublicationBlock, TPublicationContainer, TPublicationPanel, TRenderData, TRenderDataObject, TRenderDataObjectTag, TRootData, TRootObjectConfiguration, TRootObjectData, TSettings, TSnap, TSnapGrid, TSnapGridIdentifier, TSnapIdentifier, TSnapIdentifierMaker, TSnapPoint, TSnapPointIdentifier, TSnapType, TSnapTypeMaker, TStudioDefinition, TStudioFloorConfig, TStudioFloorSettings, TStudioId, TStudioLightsSettings, TStudioOverrides, TStudioResolvedSettings, TStudioSceneConfig, TStudioSceneSettings, TStudioSettings, TStudioShadowMapConfig, TStudioShadowMapType, TStudioToneMappingMode, TSubcomponentGroup, TTreeObjectOverrides, TUniqueRenderDataObject, TValue, TVsmShadowQuality };
4740
+ }
4741
+
4742
+ export {
4743
+ Configuration,
4744
+ Documentation,
4745
+ Engine,
4746
+ EngineTypes,
4747
+ Events,
4748
+ IntegrationConnector,
4749
+ Layout,
4750
+ Loader,
4751
+ Player,
4752
+ TAddingAssetsMethod$1 as TAddingAssetsMethod,
4753
+ TAssetsPalettePatternType$1 as TAssetsPalettePatternType,
4754
+ TPricingData$1 as TPricingData,
4755
+ TPricingSection$1 as TPricingSection,
4756
+ TPropertyItem$2 as TPropertyItem,
4757
+ TSortingSettings$1 as TSortingSettings,
4758
+ Toolbar,
4759
+ Viewer,
4760
+ };
4761
+
4762
+ export {};