@viji-dev/sdk 1.0.0 → 1.0.2

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 (77) hide show
  1. package/README.md +70 -63
  2. package/bin/viji.js +9 -29
  3. package/dist/assets/artist-dts-BHUsvSI6.js +613 -0
  4. package/dist/assets/artist-dts-p5-Cyw8vmy_.js +736 -0
  5. package/dist/assets/core-CiQx3w0t.js +12 -0
  6. package/dist/assets/dark-plus-C3mMm8J8.js +1 -0
  7. package/dist/assets/docs-api-PBLtY4Ni.js +12381 -0
  8. package/dist/assets/engine-javascript-CXyY7cc8.js +141 -0
  9. package/dist/assets/essentia-wasm.web-0S-sW98u-CYV1l1zv.js +38 -0
  10. package/dist/assets/essentia.js-core.es-DnrJE0uR-DOSrF5_G.js +32 -0
  11. package/dist/assets/glsl-DMyvO4G4.js +1 -0
  12. package/dist/assets/index-BhFxsauQ.js +215 -0
  13. package/dist/assets/index-BqhVeA7U.css +1 -0
  14. package/dist/assets/index-T4TOjvD0.js +1 -0
  15. package/dist/assets/index-Wz9WqGqz.js +52 -0
  16. package/dist/assets/index-t24aGwla.js +1 -0
  17. package/dist/assets/javascript-wDzz0qaB.js +1 -0
  18. package/dist/assets/shader-uniforms-GdaUkQPK.js +1 -0
  19. package/dist/assets/typescript-BPQ3VLAy.js +1 -0
  20. package/dist/assets/viji.worker-CQSJ0SiO-ljtBlcNZ.js +27018 -0
  21. package/{index.html → dist/index.html} +2 -1
  22. package/package.json +31 -35
  23. package/src/cli/commands/build.js +50 -99
  24. package/src/cli/commands/create.js +49 -46
  25. package/src/cli/commands/dev.js +30 -97
  26. package/src/cli/server/dev-server.js +233 -0
  27. package/src/cli/server/scene-scanner.js +93 -0
  28. package/src/cli/server/vite-scene-plugin.d.ts +2 -0
  29. package/src/cli/server/vite-scene-plugin.js +134 -0
  30. package/src/cli/utils/cli-utils.js +29 -139
  31. package/src/cli/utils/scene-compiler.js +10 -17
  32. package/src/templates/scene-templates.js +85 -0
  33. package/.gitignore +0 -29
  34. package/eslint.config.js +0 -37
  35. package/postcss.config.js +0 -6
  36. package/scenes/audio-visualizer/main.js +0 -287
  37. package/scenes/core-demo/main.js +0 -532
  38. package/scenes/demo-scene/main.js +0 -619
  39. package/scenes/global.d.ts +0 -15
  40. package/scenes/particle-system/main.js +0 -349
  41. package/scenes/tsconfig.json +0 -12
  42. package/scenes/video-mirror/main.ts +0 -436
  43. package/src/App.css +0 -42
  44. package/src/App.tsx +0 -279
  45. package/src/cli/commands/init.js +0 -262
  46. package/src/components/SDKPage.tsx +0 -337
  47. package/src/components/core/CoreContainer.tsx +0 -126
  48. package/src/components/ui/DeviceSelectionList.tsx +0 -137
  49. package/src/components/ui/FPSCounter.tsx +0 -78
  50. package/src/components/ui/FileDropzonePanel.tsx +0 -120
  51. package/src/components/ui/FileListPanel.tsx +0 -285
  52. package/src/components/ui/InputExpansionPanel.tsx +0 -31
  53. package/src/components/ui/MediaPlayerControls.tsx +0 -191
  54. package/src/components/ui/MenuContainer.tsx +0 -71
  55. package/src/components/ui/ParametersMenu.tsx +0 -797
  56. package/src/components/ui/ProjectSwitcherMenu.tsx +0 -192
  57. package/src/components/ui/QuickInputControls.tsx +0 -542
  58. package/src/components/ui/SDKMenuSystem.tsx +0 -96
  59. package/src/components/ui/SettingsMenu.tsx +0 -346
  60. package/src/components/ui/SimpleInputControls.tsx +0 -137
  61. package/src/index.css +0 -68
  62. package/src/main.tsx +0 -10
  63. package/src/scenes-hmr.ts +0 -158
  64. package/src/services/project-filesystem.ts +0 -436
  65. package/src/stores/scene-player/index.ts +0 -3
  66. package/src/stores/scene-player/input-manager.store.ts +0 -1045
  67. package/src/stores/scene-player/scene-session.store.ts +0 -659
  68. package/src/styles/globals.css +0 -111
  69. package/src/templates/minimal-template.js +0 -11
  70. package/src/utils/debounce.js +0 -34
  71. package/src/vite-env.d.ts +0 -1
  72. package/tailwind.config.js +0 -18
  73. package/tsconfig.app.json +0 -27
  74. package/tsconfig.json +0 -27
  75. package/tsconfig.node.json +0 -27
  76. package/vite.config.ts +0 -54
  77. /package/{public → dist}/favicon.png +0 -0
@@ -0,0 +1,613 @@
1
+ const n=`// Viji Artist API - Global Type Definitions
2
+ // All types are placed inside declare global {} because this file uses export {}
3
+ // for top-level await support, which makes it a module (where top-level declarations
4
+ // would otherwise be module-scoped, not global).
5
+
6
+ declare global {
7
+ interface AudioAPI {\r
8
+ isConnected: boolean;\r
9
+ volume: {\r
10
+ current: number;\r
11
+ peak: number;\r
12
+ smoothed: number;\r
13
+ };\r
14
+ bands: {\r
15
+ low: number;\r
16
+ lowMid: number;\r
17
+ mid: number;\r
18
+ highMid: number;\r
19
+ high: number;\r
20
+ lowSmoothed: number;\r
21
+ lowMidSmoothed: number;\r
22
+ midSmoothed: number;\r
23
+ highMidSmoothed: number;\r
24
+ highSmoothed: number;\r
25
+ };\r
26
+ beat: {\r
27
+ kick: number;\r
28
+ snare: number;\r
29
+ hat: number;\r
30
+ any: number;\r
31
+ kickSmoothed: number;\r
32
+ snareSmoothed: number;\r
33
+ hatSmoothed: number;\r
34
+ anySmoothed: number;\r
35
+ triggers: {\r
36
+ any: boolean;\r
37
+ kick: boolean;\r
38
+ snare: boolean;\r
39
+ hat: boolean;\r
40
+ };\r
41
+ events: Array<{\r
42
+ type: 'kick' | 'snare' | 'hat';\r
43
+ time: number;\r
44
+ strength: number;\r
45
+ }>;\r
46
+ bpm: number;\r
47
+ confidence: number;\r
48
+ isLocked: boolean;\r
49
+ };\r
50
+ spectral: {\r
51
+ brightness: number;\r
52
+ flatness: number;\r
53
+ };\r
54
+ getFrequencyData: () => Uint8Array;\r
55
+ getWaveform: () => Float32Array;\r
56
+ }\r
57
+
58
+ interface AudioStreamAPI {\r
59
+ isConnected: boolean;\r
60
+ volume: {\r
61
+ current: number;\r
62
+ peak: number;\r
63
+ smoothed: number;\r
64
+ };\r
65
+ bands: {\r
66
+ low: number;\r
67
+ lowMid: number;\r
68
+ mid: number;\r
69
+ highMid: number;\r
70
+ high: number;\r
71
+ lowSmoothed: number;\r
72
+ lowMidSmoothed: number;\r
73
+ midSmoothed: number;\r
74
+ highMidSmoothed: number;\r
75
+ highSmoothed: number;\r
76
+ };\r
77
+ spectral: {\r
78
+ brightness: number;\r
79
+ flatness: number;\r
80
+ };\r
81
+ getFrequencyData: () => Uint8Array;\r
82
+ getWaveform: () => Float32Array;\r
83
+ }\r
84
+
85
+ interface ButtonConfig {\r
86
+ label: string;\r
87
+ description?: string;\r
88
+ group?: string;\r
89
+ category?: ParameterCategory;\r
90
+ }\r
91
+
92
+ interface ButtonParameter {\r
93
+ value: boolean;\r
94
+ label: string;\r
95
+ description?: string;\r
96
+ group: string;\r
97
+ category: ParameterCategory;\r
98
+ }\r
99
+
100
+ interface CaptureFrameOptions {\r
101
+ /** Output format: 'blob' for encoded image, 'bitmap' for GPU-friendly ImageBitmap */\r
102
+ format?: 'blob' | 'bitmap';\r
103
+ /** MIME type for blob output (ignored for bitmap), e.g., 'image/png', 'image/jpeg', 'image/webp' */\r
104
+ type?: string;\r
105
+ /**\r
106
+ * Target resolution.\r
107
+ * - number: scale factor relative to current canvas size (e.g., 0.5 = 50%)\r
108
+ * - { width, height }: exact output size; if aspect ratio differs from canvas,\r
109
+ * the source is center-cropped to match the target aspect ratio before scaling\r
110
+ */\r
111
+ resolution?: number | {\r
112
+ width: number;\r
113
+ height: number;\r
114
+ };\r
115
+ }\r
116
+
117
+ interface ColorConfig {\r
118
+ label: string;\r
119
+ description?: string;\r
120
+ group?: string;\r
121
+ category?: ParameterCategory;\r
122
+ }\r
123
+
124
+ interface ColorParameter {\r
125
+ value: string;\r
126
+ label: string;\r
127
+ description?: string;\r
128
+ group: string;\r
129
+ category: ParameterCategory;\r
130
+ }\r
131
+
132
+ type CVFeature = 'faceDetection' | 'faceMesh' | 'handTracking' | 'poseDetection' | 'bodySegmentation' | 'emotionDetection';\r
133
+
134
+ type CVFrameRateMode = 'full' | 'half' | 'quarter' | 'eighth';\r
135
+
136
+ interface DeviceMotionData {\r
137
+ /** Acceleration without gravity (m/s²) */\r
138
+ acceleration: {\r
139
+ x: number | null;\r
140
+ y: number | null;\r
141
+ z: number | null;\r
142
+ } | null;\r
143
+ /** Acceleration including gravity (m/s²) */\r
144
+ accelerationIncludingGravity: {\r
145
+ x: number | null;\r
146
+ y: number | null;\r
147
+ z: number | null;\r
148
+ } | null;\r
149
+ /** Rotation rate (degrees/second) */\r
150
+ rotationRate: {\r
151
+ alpha: number | null;\r
152
+ beta: number | null;\r
153
+ gamma: number | null;\r
154
+ } | null;\r
155
+ /** Interval between updates (milliseconds) */\r
156
+ interval: number;\r
157
+ }\r
158
+
159
+ interface DeviceOrientationData {\r
160
+ /** Rotation around Z-axis (0-360 degrees, compass heading) */\r
161
+ alpha: number | null;\r
162
+ /** Rotation around X-axis (-180 to 180 degrees, front-to-back tilt) */\r
163
+ beta: number | null;\r
164
+ /** Rotation around Y-axis (-90 to 90 degrees, left-to-right tilt) */\r
165
+ gamma: number | null;\r
166
+ /** True if using magnetometer (compass) for absolute orientation */\r
167
+ absolute: boolean;\r
168
+ }\r
169
+
170
+ interface DeviceSensorState {\r
171
+ motion: DeviceMotionData | null;\r
172
+ orientation: DeviceOrientationData | null;\r
173
+ }\r
174
+
175
+ interface DeviceState extends DeviceSensorState {\r
176
+ /** Unique device identifier */\r
177
+ id: string;\r
178
+ /** User-friendly device name */\r
179
+ name: string;\r
180
+ /** Device camera video (null if not available) */\r
181
+ video: VideoAPI | null;\r
182
+ /** Device audio stream (null if not available) */\r
183
+ audio: AudioStreamAPI | null;\r
184
+ }\r
185
+
186
+ interface FaceBlendshapes {\r
187
+ browDownLeft: number;\r
188
+ browDownRight: number;\r
189
+ browInnerUp: number;\r
190
+ browOuterUpLeft: number;\r
191
+ browOuterUpRight: number;\r
192
+ cheekPuff: number;\r
193
+ cheekSquintLeft: number;\r
194
+ cheekSquintRight: number;\r
195
+ eyeBlinkLeft: number;\r
196
+ eyeBlinkRight: number;\r
197
+ eyeLookDownLeft: number;\r
198
+ eyeLookDownRight: number;\r
199
+ eyeLookInLeft: number;\r
200
+ eyeLookInRight: number;\r
201
+ eyeLookOutLeft: number;\r
202
+ eyeLookOutRight: number;\r
203
+ eyeLookUpLeft: number;\r
204
+ eyeLookUpRight: number;\r
205
+ eyeSquintLeft: number;\r
206
+ eyeSquintRight: number;\r
207
+ eyeWideLeft: number;\r
208
+ eyeWideRight: number;\r
209
+ jawForward: number;\r
210
+ jawLeft: number;\r
211
+ jawOpen: number;\r
212
+ jawRight: number;\r
213
+ mouthClose: number;\r
214
+ mouthDimpleLeft: number;\r
215
+ mouthDimpleRight: number;\r
216
+ mouthFrownLeft: number;\r
217
+ mouthFrownRight: number;\r
218
+ mouthFunnel: number;\r
219
+ mouthLeft: number;\r
220
+ mouthLowerDownLeft: number;\r
221
+ mouthLowerDownRight: number;\r
222
+ mouthPressLeft: number;\r
223
+ mouthPressRight: number;\r
224
+ mouthPucker: number;\r
225
+ mouthRight: number;\r
226
+ mouthRollLower: number;\r
227
+ mouthRollUpper: number;\r
228
+ mouthShrugLower: number;\r
229
+ mouthShrugUpper: number;\r
230
+ mouthSmileLeft: number;\r
231
+ mouthSmileRight: number;\r
232
+ mouthStretchLeft: number;\r
233
+ mouthStretchRight: number;\r
234
+ mouthUpperUpLeft: number;\r
235
+ mouthUpperUpRight: number;\r
236
+ noseSneerLeft: number;\r
237
+ noseSneerRight: number;\r
238
+ tongueOut: number;\r
239
+ }\r
240
+
241
+ interface FaceData {\r
242
+ id: number;\r
243
+ bounds: {\r
244
+ x: number;\r
245
+ y: number;\r
246
+ width: number;\r
247
+ height: number;\r
248
+ };\r
249
+ center: {\r
250
+ x: number;\r
251
+ y: number;\r
252
+ };\r
253
+ confidence: number;\r
254
+ landmarks: {\r
255
+ x: number;\r
256
+ y: number;\r
257
+ z?: number;\r
258
+ }[];\r
259
+ expressions: {\r
260
+ neutral: number;\r
261
+ happy: number;\r
262
+ sad: number;\r
263
+ angry: number;\r
264
+ surprised: number;\r
265
+ disgusted: number;\r
266
+ fearful: number;\r
267
+ };\r
268
+ headPose: {\r
269
+ pitch: number;\r
270
+ yaw: number;\r
271
+ roll: number;\r
272
+ };\r
273
+ blendshapes: FaceBlendshapes;\r
274
+ }\r
275
+
276
+ type FrameRateMode = 'full' | 'half';\r
277
+
278
+ interface FrequencyBand {\r
279
+ name: string;\r
280
+ min: number;\r
281
+ max: number;\r
282
+ }\r
283
+
284
+ interface HandData {\r
285
+ id: number;\r
286
+ handedness: 'left' | 'right';\r
287
+ confidence: number;\r
288
+ bounds: {\r
289
+ x: number;\r
290
+ y: number;\r
291
+ width: number;\r
292
+ height: number;\r
293
+ };\r
294
+ landmarks: {\r
295
+ x: number;\r
296
+ y: number;\r
297
+ z: number;\r
298
+ }[];\r
299
+ palm: {\r
300
+ x: number;\r
301
+ y: number;\r
302
+ z: number;\r
303
+ };\r
304
+ gestures: {\r
305
+ fist: number;\r
306
+ openPalm: number;\r
307
+ peace: number;\r
308
+ thumbsUp: number;\r
309
+ thumbsDown: number;\r
310
+ pointing: number;\r
311
+ iLoveYou: number;\r
312
+ };\r
313
+ }\r
314
+
315
+ interface ImageConfig {\r
316
+ label: string;\r
317
+ description?: string;\r
318
+ group?: string;\r
319
+ category?: ParameterCategory;\r
320
+ }\r
321
+
322
+ interface ImageParameter {\r
323
+ value: ImageBitmap | null;\r
324
+ label: string;\r
325
+ description?: string;\r
326
+ group: string;\r
327
+ category: ParameterCategory;\r
328
+ }\r
329
+
330
+ interface KeyboardAPI {\r
331
+ isPressed(key: string): boolean;\r
332
+ wasPressed(key: string): boolean;\r
333
+ wasReleased(key: string): boolean;\r
334
+ activeKeys: Set<string>;\r
335
+ pressedThisFrame: Set<string>;\r
336
+ releasedThisFrame: Set<string>;\r
337
+ lastKeyPressed: string;\r
338
+ lastKeyReleased: string;\r
339
+ shift: boolean;\r
340
+ ctrl: boolean;\r
341
+ alt: boolean;\r
342
+ meta: boolean;\r
343
+ textureData: Uint8Array;\r
344
+ }\r
345
+
346
+ interface MouseAPI {\r
347
+ x: number;\r
348
+ y: number;\r
349
+ isInCanvas: boolean;\r
350
+ isPressed: boolean;\r
351
+ leftButton: boolean;\r
352
+ rightButton: boolean;\r
353
+ middleButton: boolean;\r
354
+ deltaX: number;\r
355
+ deltaY: number;\r
356
+ wheelDelta: number;\r
357
+ wheelX: number;\r
358
+ wheelY: number;\r
359
+ wasPressed: boolean;\r
360
+ wasReleased: boolean;\r
361
+ wasMoved: boolean;\r
362
+ }\r
363
+
364
+ interface NumberConfig {\r
365
+ min?: number;\r
366
+ max?: number;\r
367
+ step?: number;\r
368
+ label: string;\r
369
+ description?: string;\r
370
+ group?: string;\r
371
+ category?: ParameterCategory;\r
372
+ }\r
373
+
374
+ interface NumberParameter {\r
375
+ value: number;\r
376
+ min: number;\r
377
+ max: number;\r
378
+ step: number;\r
379
+ label: string;\r
380
+ description?: string;\r
381
+ group: string;\r
382
+ category: ParameterCategory;\r
383
+ }\r
384
+
385
+ type ParameterCategory = 'audio' | 'video' | 'interaction' | 'general';\r
386
+
387
+ interface PointerAPI {\r
388
+ x: number;\r
389
+ y: number;\r
390
+ deltaX: number;\r
391
+ deltaY: number;\r
392
+ isDown: boolean;\r
393
+ wasPressed: boolean;\r
394
+ wasReleased: boolean;\r
395
+ isInCanvas: boolean;\r
396
+ type: 'mouse' | 'touch' | 'none';\r
397
+ }\r
398
+
399
+ interface PoseData {\r
400
+ confidence: number;\r
401
+ landmarks: {\r
402
+ x: number;\r
403
+ y: number;\r
404
+ z: number;\r
405
+ visibility: number;\r
406
+ }[];\r
407
+ face: {\r
408
+ x: number;\r
409
+ y: number;\r
410
+ }[];\r
411
+ torso: {\r
412
+ x: number;\r
413
+ y: number;\r
414
+ }[];\r
415
+ leftArm: {\r
416
+ x: number;\r
417
+ y: number;\r
418
+ }[];\r
419
+ rightArm: {\r
420
+ x: number;\r
421
+ y: number;\r
422
+ }[];\r
423
+ leftLeg: {\r
424
+ x: number;\r
425
+ y: number;\r
426
+ }[];\r
427
+ rightLeg: {\r
428
+ x: number;\r
429
+ y: number;\r
430
+ }[];\r
431
+ }\r
432
+
433
+ type Resolution = {\r
434
+ width: number;\r
435
+ height: number;\r
436
+ };\r
437
+
438
+ interface SegmentationData {\r
439
+ mask: Uint8Array;\r
440
+ width: number;\r
441
+ height: number;\r
442
+ }\r
443
+
444
+ interface SelectConfig {\r
445
+ options: string[] | number[];\r
446
+ label: string;\r
447
+ description?: string;\r
448
+ group?: string;\r
449
+ category?: ParameterCategory;\r
450
+ }\r
451
+
452
+ interface SelectParameter {\r
453
+ value: string | number;\r
454
+ options: string[] | number[];\r
455
+ label: string;\r
456
+ description?: string;\r
457
+ group: string;\r
458
+ category: ParameterCategory;\r
459
+ }\r
460
+
461
+ interface SliderConfig {\r
462
+ min?: number;\r
463
+ max?: number;\r
464
+ step?: number;\r
465
+ label: string;\r
466
+ description?: string;\r
467
+ group?: string;\r
468
+ category?: ParameterCategory;\r
469
+ }\r
470
+
471
+ interface SliderParameter {\r
472
+ value: number;\r
473
+ min: number;\r
474
+ max: number;\r
475
+ step: number;\r
476
+ label: string;\r
477
+ description?: string;\r
478
+ group: string;\r
479
+ category: ParameterCategory;\r
480
+ }\r
481
+
482
+ interface TextConfig {\r
483
+ label: string;\r
484
+ description?: string;\r
485
+ group?: string;\r
486
+ category?: ParameterCategory;\r
487
+ maxLength?: number;\r
488
+ }\r
489
+
490
+ interface TextParameter {\r
491
+ value: string;\r
492
+ maxLength?: number;\r
493
+ label: string;\r
494
+ description?: string;\r
495
+ group: string;\r
496
+ category: ParameterCategory;\r
497
+ }\r
498
+
499
+ interface ToggleConfig {\r
500
+ label: string;\r
501
+ description?: string;\r
502
+ group?: string;\r
503
+ category?: ParameterCategory;\r
504
+ }\r
505
+
506
+ interface ToggleParameter {\r
507
+ value: boolean;\r
508
+ label: string;\r
509
+ description?: string;\r
510
+ group: string;\r
511
+ category: ParameterCategory;\r
512
+ }\r
513
+
514
+ interface TouchAPI {\r
515
+ points: TouchPoint[];\r
516
+ count: number;\r
517
+ started: TouchPoint[];\r
518
+ moved: TouchPoint[];\r
519
+ ended: TouchPoint[];\r
520
+ primary: TouchPoint | null;\r
521
+ }\r
522
+
523
+ interface TouchPoint {\r
524
+ id: number;\r
525
+ x: number;\r
526
+ y: number;\r
527
+ pressure: number;\r
528
+ radius: number;\r
529
+ radiusX: number;\r
530
+ radiusY: number;\r
531
+ rotationAngle: number;\r
532
+ force: number;\r
533
+ isInCanvas: boolean;\r
534
+ deltaX: number;\r
535
+ deltaY: number;\r
536
+ velocity: {\r
537
+ x: number;\r
538
+ y: number;\r
539
+ };\r
540
+ isNew: boolean;\r
541
+ isActive: boolean;\r
542
+ isEnding: boolean;\r
543
+ }\r
544
+
545
+ const VERSION = "0.3.30";\r
546
+
547
+ interface VideoAPI {\r
548
+ isConnected: boolean;\r
549
+ currentFrame: OffscreenCanvas | ImageBitmap | null;\r
550
+ frameWidth: number;\r
551
+ frameHeight: number;\r
552
+ frameRate: number;\r
553
+ getFrameData: () => ImageData | null;\r
554
+ faces: FaceData[];\r
555
+ hands: HandData[];\r
556
+ pose: PoseData | null;\r
557
+ segmentation: SegmentationData | null;\r
558
+ cv: {\r
559
+ enableFaceDetection(enabled: boolean): Promise<void>;\r
560
+ enableFaceMesh(enabled: boolean): Promise<void>;\r
561
+ enableEmotionDetection(enabled: boolean): Promise<void>;\r
562
+ enableHandTracking(enabled: boolean): Promise<void>;\r
563
+ enablePoseDetection(enabled: boolean): Promise<void>;\r
564
+ enableBodySegmentation(enabled: boolean): Promise<void>;\r
565
+ getActiveFeatures(): CVFeature[];\r
566
+ isProcessing(): boolean;\r
567
+ };\r
568
+ }\r
569
+
570
+ interface VijiAPI {\r
571
+ canvas: OffscreenCanvas;\r
572
+ ctx?: OffscreenCanvasRenderingContext2D;\r
573
+ gl?: WebGLRenderingContext | WebGL2RenderingContext;\r
574
+ width: number;\r
575
+ height: number;\r
576
+ time: number;\r
577
+ deltaTime: number;\r
578
+ frameCount: number;\r
579
+ fps: number;\r
580
+ audio: AudioAPI;\r
581
+ video: VideoAPI;\r
582
+ videoStreams: VideoAPI[];\r
583
+ audioStreams: AudioStreamAPI[];\r
584
+ mouse: MouseAPI;\r
585
+ keyboard: KeyboardAPI;\r
586
+ touches: TouchAPI;\r
587
+ pointer: PointerAPI;\r
588
+ device: DeviceSensorState;\r
589
+ devices: DeviceState[];\r
590
+ slider: (defaultValue: number, config: SliderConfig) => SliderParameter;\r
591
+ color: (defaultValue: string, config: ColorConfig) => ColorParameter;\r
592
+ toggle: (defaultValue: boolean, config: ToggleConfig) => ToggleParameter;\r
593
+ select: (defaultValue: string | number, config: SelectConfig) => SelectParameter;\r
594
+ text: (defaultValue: string, config: TextConfig) => TextParameter;\r
595
+ number: (defaultValue: number, config: NumberConfig) => NumberParameter;\r
596
+ image: (defaultValue: null, config: ImageConfig) => ImageParameter;\r
597
+ button: (config: ButtonConfig) => ButtonParameter;\r
598
+ useContext(type: '2d'): OffscreenCanvasRenderingContext2D;\r
599
+ useContext(type: 'webgl'): WebGLRenderingContext;\r
600
+ useContext(type: 'webgl2'): WebGL2RenderingContext;\r
601
+ }\r
602
+
603
+ // Runtime global - the main viji object
604
+ const viji: VijiAPI;
605
+
606
+ // Function type aliases (artists define their own render/setup functions)
607
+ type Render = (viji: VijiAPI) => void;
608
+ type Setup = (viji: VijiAPI) => void;
609
+ }
610
+
611
+ // Module marker (enables top-level await in artist code)
612
+ export {};
613
+ `;export{n as artistDts};