@lovelace_lol/embody 0.0.1

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 (98) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2411 -0
  3. package/dist/authoring/boneAuthoring.d.ts +132 -0
  4. package/dist/camera/annotationCameraAngles.d.ts +28 -0
  5. package/dist/camera/cameraRelativeGaze.d.ts +15 -0
  6. package/dist/camera/rustAnnotationCameraCore.d.ts +136 -0
  7. package/dist/cljs.cjs +362 -0
  8. package/dist/cljs.cjs.map +1 -0
  9. package/dist/cljs.d.ts +5 -0
  10. package/dist/cljs.js +359 -0
  11. package/dist/cljs.js.map +1 -0
  12. package/dist/core/TsClipCompiler.d.ts +51 -0
  13. package/dist/core/TsRuntimeCore.d.ts +40 -0
  14. package/dist/core/WasmRuntimeCore.d.ts +55 -0
  15. package/dist/core/compositeAxis.d.ts +4 -0
  16. package/dist/core/contracts/abi.d.ts +70 -0
  17. package/dist/core/contracts/clip.d.ts +44 -0
  18. package/dist/core/contracts/frame.d.ts +27 -0
  19. package/dist/core/contracts/host.d.ts +28 -0
  20. package/dist/core/contracts/ids.d.ts +15 -0
  21. package/dist/core/contracts/index.d.ts +10 -0
  22. package/dist/core/contracts/model.d.ts +31 -0
  23. package/dist/core/contracts/primitives.d.ts +17 -0
  24. package/dist/core/contracts/skeletonFit.d.ts +41 -0
  25. package/dist/core/index.d.ts +8 -0
  26. package/dist/core/types.d.ts +472 -0
  27. package/dist/core.cjs +1065 -0
  28. package/dist/core.cjs.map +1 -0
  29. package/dist/core.js +1040 -0
  30. package/dist/core.js.map +1 -0
  31. package/dist/engines/three/Embody.d.ts +373 -0
  32. package/dist/engines/three/ThreeAnimationRuntime.d.ts +203 -0
  33. package/dist/engines/three/ThreeClipAdapter.d.ts +24 -0
  34. package/dist/engines/three/ThreeFrameApplier.d.ts +68 -0
  35. package/dist/engines/three/ThreeModelInspector.d.ts +54 -0
  36. package/dist/engines/three/bakedClipPartitioning.d.ts +16 -0
  37. package/dist/engines/three/balanceUtils.d.ts +3 -0
  38. package/dist/engines/three/characterHost.d.ts +80 -0
  39. package/dist/engines/three/characterScene.d.ts +98 -0
  40. package/dist/engines/three/hair/HairPhysicsController.d.ts +124 -0
  41. package/dist/engines/three/index.d.ts +20 -0
  42. package/dist/engines/three/modelLoader.d.ts +61 -0
  43. package/dist/engines/three/profileTestScene.d.ts +52 -0
  44. package/dist/engines/three/types.d.ts +20 -0
  45. package/dist/hair/appearance.d.ts +29 -0
  46. package/dist/index.cjs +15431 -0
  47. package/dist/index.cjs.map +1 -0
  48. package/dist/index.d.ts +100 -0
  49. package/dist/index.js +15141 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/interfaces/Animation.d.ts +315 -0
  52. package/dist/interfaces/EmbodyRuntime.d.ts +90 -0
  53. package/dist/interfaces/Hair.d.ts +181 -0
  54. package/dist/interfaces/HairPhysics.d.ts +90 -0
  55. package/dist/interfaces/index.d.ts +11 -0
  56. package/dist/mappings/extendPresetWithProfile.d.ts +17 -0
  57. package/dist/mappings/types.d.ts +309 -0
  58. package/dist/mappings/visemeSystem.d.ts +26 -0
  59. package/dist/physics/HairPhysics.d.ts +86 -0
  60. package/dist/physics/RustHairPhysics.d.ts +18 -0
  61. package/dist/physics/index.d.ts +6 -0
  62. package/dist/preset.cjs +2000 -0
  63. package/dist/preset.cjs.map +1 -0
  64. package/dist/preset.js +1997 -0
  65. package/dist/preset.js.map +1 -0
  66. package/dist/presets/bettaFish.d.ts +328 -0
  67. package/dist/presets/cc4.d.ts +145 -0
  68. package/dist/presets/index.d.ts +27 -0
  69. package/dist/profiles/resolveProfileConfig.d.ts +36 -0
  70. package/dist/profiles/types.d.ts +118 -0
  71. package/dist/regions/normalizeRegionTree.d.ts +6 -0
  72. package/dist/regions/regionMapping.d.ts +17 -0
  73. package/dist/regions/types.d.ts +122 -0
  74. package/dist/skeletonTemplates/humanoidSkeletonTemplates.d.ts +32 -0
  75. package/dist/test/setupWasm.d.ts +1 -0
  76. package/dist/three.cjs +10115 -0
  77. package/dist/three.cjs.map +1 -0
  78. package/dist/three.js +10086 -0
  79. package/dist/three.js.map +1 -0
  80. package/dist/validation/analyzeModel.d.ts +68 -0
  81. package/dist/validation/extractModelData.d.ts +90 -0
  82. package/dist/validation/generateMappingCorrections.d.ts +32 -0
  83. package/dist/validation/geometryHelpers.d.ts +66 -0
  84. package/dist/validation/types.d.ts +10 -0
  85. package/dist/validation/validateMappings.d.ts +77 -0
  86. package/dist/wasm/LICENSE +21 -0
  87. package/dist/wasm/README.md +72 -0
  88. package/dist/wasm/embody_wasm.d.ts +531 -0
  89. package/dist/wasm/embody_wasm.js +1635 -0
  90. package/dist/wasm/embody_wasm_bg.wasm +0 -0
  91. package/dist/wasm/embody_wasm_bg.wasm.d.ts +107 -0
  92. package/dist/wasm.cjs +302 -0
  93. package/dist/wasm.cjs.map +1 -0
  94. package/dist/wasm.d.ts +43 -0
  95. package/dist/wasm.js +268 -0
  96. package/dist/wasm.js.map +1 -0
  97. package/dist/wasmTypes.d.ts +121 -0
  98. package/package.json +99 -0
@@ -0,0 +1,531 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+
4
+ /**
5
+ * Spherical camera flight between two camera poses.
6
+ *
7
+ * Mirrors the DPthree camera transition: orbital interpolation with a
8
+ * pullback arc so large rotations do not pass through the model.
9
+ * `sample(elapsed_ms)` returns
10
+ * `[posX, posY, posZ, targetX, targetY, targetZ, done]`.
11
+ */
12
+ export class CameraFlight {
13
+ free(): void;
14
+ [Symbol.dispose](): void;
15
+ duration_ms(): number;
16
+ constructor(start_position: Float32Array, start_target: Float32Array, end_position: Float32Array, end_target: Float32Array, duration_ms: number);
17
+ sample(elapsed_ms: number): Float32Array;
18
+ }
19
+
20
+ /**
21
+ * Full 360-degree eased orbit around a center point.
22
+ * `sample(elapsed_ms)` returns
23
+ * `[posX, posY, posZ, targetX, targetY, targetZ, done]`.
24
+ */
25
+ export class CameraOrbit {
26
+ free(): void;
27
+ [Symbol.dispose](): void;
28
+ duration_ms(): number;
29
+ constructor(center: Float32Array, radius: number, height: number, duration_ms: number);
30
+ sample(elapsed_ms: number): Float32Array;
31
+ }
32
+
33
+ export class HairPhysicsSolver {
34
+ free(): void;
35
+ [Symbol.dispose](): void;
36
+ get_config(): Float32Array;
37
+ get_state(): Float32Array;
38
+ constructor(config_values: Float32Array);
39
+ reset(): void;
40
+ set_config(config_values: Float32Array): void;
41
+ update(dt: number, head_values: Float32Array): Float32Array;
42
+ }
43
+
44
+ /**
45
+ * Host-neutral live morph runtime. Owns AU/viseme/mix state and emits packed
46
+ * morph frame deltas. Engine objects never enter this struct.
47
+ */
48
+ export class RuntimeCore {
49
+ free(): void;
50
+ [Symbol.dispose](): void;
51
+ active_transition_count(): number;
52
+ static au_morph_binding_stride(): number;
53
+ clear(): void;
54
+ clear_transitions(): void;
55
+ /**
56
+ * Configure the core from the profile and model descriptor JSON hosts
57
+ * already have. All binding compilation (mesh/morph/bone name resolution,
58
+ * composite axes, translations, jaw, viseme slots, mix defaults,
59
+ * continuum pairs) happens here, inside the core.
60
+ */
61
+ configure(profile_json: string, model_json: string): void;
62
+ /**
63
+ * Configure from a complete profile without applying an embedded preset.
64
+ *
65
+ * This path is intentionally strict so a host cannot accidentally select
66
+ * exact mode for an incomplete custom profile and silently get an inert
67
+ * runtime. Preset fallback remains an explicit host decision.
68
+ */
69
+ configure_exact_profile(profile_json: string, model_json: string): void;
70
+ /**
71
+ * Configure from an embedded preset id + optional override JSON + model
72
+ * descriptor JSON. The CC4 (etc.) preset data lives in the Wasm core;
73
+ * hosts only pass the preset id and overrides.
74
+ */
75
+ configure_with_preset(preset_id: string, override_json: string, model_json: string): void;
76
+ /**
77
+ * Packed bone FrameDelta rows: `[bone_id, px, py, pz, qx, qy, qz, qw, flags] * N`
78
+ * flags: bit0 = has_position, bit1 = has_rotation. Mirrors
79
+ * TsRuntimeCore.collectBoneWrites: composite rotations relative to rest,
80
+ * AU-driven translations added to rest position, and viseme jaw rotation.
81
+ */
82
+ evaluate_bone_frame_delta(): Float32Array;
83
+ /**
84
+ * Packed morph FrameDelta rows: `[mesh_id, morph_target_id, value, mode] * N`
85
+ */
86
+ evaluate_morph_frame_delta(): Float32Array;
87
+ get_au(id: number): number;
88
+ get_continuum(neg_au: number, pos_au: number): number;
89
+ /**
90
+ * Packed rows: `[au_id, side, mesh_id, morph_target_id, weight] * N`
91
+ * side: 0=left, 1=right, 2=center
92
+ */
93
+ load_au_morph_bindings(values: Float32Array): void;
94
+ /**
95
+ * Packed rows: `[bone_id, px, py, pz, qx, qy, qz, qw] * N`
96
+ */
97
+ load_bone_rest_transforms(values: Float32Array): void;
98
+ /**
99
+ * Packed rows: `[au_id, bone_id, axis(0=x,1=y,2=z), scale, max_units] * N`
100
+ */
101
+ load_bone_translations(values: Float32Array): void;
102
+ /**
103
+ * Variable-length blocks, one per composite axis:
104
+ * header `[bone_id, axis, has_directional, value_rows, binding_rows, 0, 0, 0]`,
105
+ * then value rows `[au_id, group, side] * value_rows`,
106
+ * then binding rows `[au_id, group, side, channel, scale, max_degrees] * binding_rows`.
107
+ * Axes must be packed grouped per bone in application order (yaw, pitch, roll).
108
+ */
109
+ load_composite_axes(values: Float32Array): void;
110
+ /**
111
+ * Packed row: `[bone_id, channel, scale, max_degrees]`; empty slice clears.
112
+ */
113
+ load_jaw_binding(values: Float32Array): void;
114
+ load_viseme_jaw_amounts(values: Float32Array): void;
115
+ /**
116
+ * Packed rows: `[viseme_index, mesh_id, morph_target_id, weight] * N`
117
+ */
118
+ load_viseme_morph_bindings(values: Float32Array): void;
119
+ constructor(viseme_slot_count: number);
120
+ set_au(id: number, value: number, balance: number): void;
121
+ set_au_mix_weight(id: number, weight: number): void;
122
+ /**
123
+ * Continuum-aware AU set. Negative values route through the configured
124
+ * continuum pair (e.g. eyes left/right) exactly like the legacy runtime.
125
+ */
126
+ set_au_signed(id: number, value: number, balance: number): void;
127
+ set_continuum(neg_au: number, pos_au: number, value: number, balance: number): void;
128
+ set_mixed_aus(ids: Uint32Array): void;
129
+ set_viseme(index: number, value: number): void;
130
+ set_viseme_jaw_scale(index: number, jaw_scale: number): void;
131
+ set_viseme_slot_count(count: number): void;
132
+ /**
133
+ * Start (or replace) an eased AU transition. Advanced by `update`.
134
+ */
135
+ transition_au(id: number, to: number, duration_ms: number, balance: number): void;
136
+ transition_viseme(index: number, to: number, duration_ms: number, jaw_scale: number): void;
137
+ /**
138
+ * Advance all running transitions by `dt` seconds and write the eased
139
+ * values into the core state. Returns the number of still-active
140
+ * transitions so hosts know whether a frame delta re-evaluation is due.
141
+ */
142
+ update(dt_seconds: number): number;
143
+ static viseme_morph_binding_stride(): number;
144
+ viseme_slot_index(slot_id: string): number;
145
+ }
146
+
147
+ /**
148
+ * Analyze xyz vertex positions for a rough humanoid proportion signal.
149
+ *
150
+ * Input is a packed xyz buffer. `vertical_axis` is 0 for x, 1 for y, and 2 for z.
151
+ * Invalid or incomplete vertices are ignored.
152
+ *
153
+ * Output layout:
154
+ * [min_x, min_y, min_z, max_x, max_y, max_z,
155
+ * center_x, center_y, center_z,
156
+ * span_x, span_y, span_z,
157
+ * vertical_height, cross_axis_wide_span, cross_axis_narrow_span,
158
+ * humanoid_likelihood]
159
+ */
160
+ export function analyze_mesh_proportions(vertices: Float32Array, vertical_axis: number): Float32Array;
161
+
162
+ export function annotation_camera_framing_stride(): number;
163
+
164
+ /**
165
+ * Build head-pitch gravity hair morph curves.
166
+ */
167
+ export function build_hair_gravity_curves(config_json: string): string;
168
+
169
+ /**
170
+ * Build idle/wind hair morph curves (JSON map of morphKey -> [{time,intensity}]).
171
+ */
172
+ export function build_hair_idle_curves(config_json: string, duration_sec: number): string;
173
+
174
+ /**
175
+ * Build a directional hair impulse curve set.
176
+ */
177
+ export function build_hair_impulse_curves(config_json: string, duration_sec: number, horizontal: number, vertical: number): string;
178
+
179
+ export function camera_flight_sample_stride(): number;
180
+
181
+ /**
182
+ * Compile a clip track input (JSON) into host-neutral ClipIR JSON.
183
+ */
184
+ export function compile_clip(input_json: string): string;
185
+
186
+ /**
187
+ * Compile named intensity curves (JSON) into host-neutral ClipIR JSON.
188
+ */
189
+ export function compile_clip_curves(input_json: string): string;
190
+
191
+ /**
192
+ * Compose user-facing manual adjustments onto a solved skeleton fit.
193
+ *
194
+ * `fit` must start with [scale, translate_x, translate_y, translate_z]. The
195
+ * output preserves those four fields after multiplying scale and adding offsets.
196
+ */
197
+ export function compose_template_fit_adjustment(fit: Float32Array, scale_multiplier: number, offset_x: number, offset_y: number, offset_z: number): Float32Array;
198
+
199
+ export function compose_template_skeleton_fit_transform(fit_scale: number, fit_translation: Float32Array, manual_scale: number, manual_translation: Float32Array): Float32Array;
200
+
201
+ export function core_abi_version(): number;
202
+
203
+ export function default_hair_physics_config_values(): Float32Array;
204
+
205
+ /**
206
+ * Padding factor for a focus target of the given max dimension.
207
+ */
208
+ export function focus_padding_factor(size: number, close_up_padding: number, zoom_padding: number, full_body_padding: number): number;
209
+
210
+ /**
211
+ * Return the embedded preset JSON for a preset id (intake source of truth).
212
+ */
213
+ export function get_preset_json(preset_id: string): string;
214
+
215
+ export function hair_config_stride(): number;
216
+
217
+ export function hair_head_state_stride(): number;
218
+
219
+ export function hair_morph_output_stride(): number;
220
+
221
+ export function hair_state_stride(): number;
222
+
223
+ /**
224
+ * True when the Wasm core ships the given preset id.
225
+ */
226
+ export function has_preset(preset_id: string): boolean;
227
+
228
+ /**
229
+ * Canonical embedded preset ids available inside the Wasm core.
230
+ */
231
+ export function list_presets(): string[];
232
+
233
+ export function marker_endpoint_stride(): number;
234
+
235
+ /**
236
+ * Marker show/hide animation factors at normalized time `t` in `[0, 1]`.
237
+ * Returns `[itemOpacityFactor, labelScaleFactor, lineOpacityFactor]`.
238
+ */
239
+ export function marker_visibility_animation_factors(visible: boolean, t: number): Float32Array;
240
+
241
+ export function marker_visibility_factors_stride(): number;
242
+
243
+ /**
244
+ * Merge overrides onto an embedded preset. Hosts that still need a JS Profile
245
+ * object for Mixer callbacks can use this; the runtime configure path should
246
+ * prefer `RuntimeCore.configure_with_preset`.
247
+ */
248
+ export function merge_embedded_preset(preset_id: string, override_json: string): string;
249
+
250
+ /**
251
+ * Merge a base preset profile with an extension profile (both JSON strings)
252
+ * using the engine's preset extension rules. Returns the merged profile JSON.
253
+ */
254
+ export function merge_preset_profile(base_json: string, extension_json: string): string;
255
+
256
+ export function mesh_proportions_stride(): number;
257
+
258
+ export function normalize_camera_angle_degrees(angle: number): number;
259
+
260
+ export function pack_morph_frame_delta(mesh_ids: Uint32Array, morph_target_ids: Uint32Array, values: Float32Array, modes: Uint8Array): Float32Array;
261
+
262
+ export function packed_bone_frame_delta_stride(): number;
263
+
264
+ export function packed_morph_frame_delta_stride(): number;
265
+
266
+ /**
267
+ * Whether a marker with a preferred viewing angle should show for the
268
+ * current camera orbit angle. Angles are degrees around the model Y axis.
269
+ */
270
+ export function passes_marker_camera_angle_gate(marker_angle?: number | null, current_camera_angle?: number | null, range_degrees?: number | null): boolean;
271
+
272
+ /**
273
+ * Auto camera angle for small offset focus targets (eye closeups).
274
+ * Returns `undefined` when no auto angle applies.
275
+ */
276
+ export function resolve_auto_closeup_angle(horizontal_offset: number, focus_size: Float32Array, model_size: Float32Array): number | undefined;
277
+
278
+ /**
279
+ * Direction the camera should approach from when focusing a region.
280
+ */
281
+ export function resolve_focus_camera_direction(model_quat: Float32Array, effective_angle: number, has_explicit_angle: boolean, world_angle_space: boolean): Float32Array;
282
+
283
+ /**
284
+ * Clip a marker leader line (clip-space start/end, `[x, y, z, w]` each) to a
285
+ * safe viewport rectangle. Returns `[visible, lineScale]` where `lineScale`
286
+ * is the fraction of the line that stays on screen.
287
+ */
288
+ export function resolve_viewport_constrained_line_scale(start_clip: Float32Array, end_clip: Float32Array, safe_x: number, safe_y: number, min_length_ratio?: number | null): Float32Array;
289
+
290
+ /**
291
+ * Safe NDC bounds that keep a screen-space label plus a pixel gutter fully
292
+ * on screen. Returns `[safeX, safeY]`.
293
+ */
294
+ export function resolve_viewport_safe_bounds(label_scale_x: number, label_scale_y: number, projection_x_scale: number, projection_y_scale: number, viewport_width: number, viewport_height: number, edge_padding_px?: number | null): Float32Array;
295
+
296
+ /**
297
+ * Sinusoidal arc leader line points between two world positions.
298
+ * Returns `(segments + 1) * 3` floats.
299
+ */
300
+ export function sample_marker_arc_curve(start: Float32Array, end: Float32Array, segments: number): Float32Array;
301
+
302
+ /**
303
+ * Quadratic bezier leader line points between two world positions.
304
+ * Returns `(segments + 1) * 3` floats.
305
+ */
306
+ export function sample_marker_bezier_curve(start: Float32Array, end: Float32Array, segments: number): Float32Array;
307
+
308
+ /**
309
+ * Separates overlapping marker endpoints while preserving each marker's
310
+ * surface anchor and leader-line length.
311
+ *
312
+ * `starts` and `ends` are packed `[x, y, z, ...]` arrays. The output includes
313
+ * one endpoint for every complete start/end pair. Proximity and rotation
314
+ * constants match DPthree's marker layout, scaled to the current model height.
315
+ */
316
+ export function separate_overlapping_marker_endpoints(starts: Float32Array, ends: Float32Array, model_center: Float32Array, model_height: number): Float32Array;
317
+
318
+ /**
319
+ * Solo/expand/angle visibility rule for a marker.
320
+ *
321
+ * * `hidden_child` - the marker is a collapsed child of an expandable region.
322
+ * * `soloed` - solo state: 0 = no solo, 1 = this marker is soloed,
323
+ * 2 = another marker is soloed.
324
+ */
325
+ export function should_show_marker(hidden_child: boolean, soloed: number, marker_angle?: number | null, current_camera_angle?: number | null): boolean;
326
+
327
+ export function solve_axis_quaternion(axis: number, degrees: number, value: number, scale: number): Float32Array;
328
+
329
+ export function solve_bilateral_values(base: number, balance: number): Float32Array;
330
+
331
+ /**
332
+ * Solve the camera framing for a focus target.
333
+ *
334
+ * * `focus_bounds` - `[centerX, centerY, centerZ, sizeX, sizeY, sizeZ]` of the focus box.
335
+ * * `model_bounds` - same layout for the whole model, or empty when unavailable.
336
+ * * `model_quat` - model world quaternion `[x, y, z, w]`, or empty for identity.
337
+ * * `camera_angle` - explicit region camera angle (degrees), or `undefined`.
338
+ * * `world_angle_space` - whether `camera_angle` is a world-space angle.
339
+ *
340
+ * Returns `[posX, posY, posZ, targetX, targetY, targetZ, distance]`.
341
+ */
342
+ export function solve_focus_framing(focus_bounds: Float32Array, model_bounds: Float32Array, model_quat: Float32Array, fov_deg: number, aspect: number, min_distance: number, close_up_padding: number, zoom_padding: number, full_body_padding: number, override_padding: number | null | undefined, camera_angle: number | null | undefined, world_angle_space: boolean): Float32Array;
343
+
344
+ /**
345
+ * Solve the hero full-body framing.
346
+ *
347
+ * * `box_min` / `box_max` - model bounding box corners.
348
+ *
349
+ * Returns `[posX, posY, posZ, targetX, targetY, targetZ, distance]`.
350
+ */
351
+ export function solve_full_body_framing(box_min: Float32Array, box_max: Float32Array, model_quat: Float32Array, fov_deg: number, aspect: number, min_distance: number, full_body_padding: number, override_padding: number | null | undefined, camera_angle: number | null | undefined, world_angle_space: boolean): Float32Array;
352
+
353
+ export function solve_morph_batch(values: Float32Array, balances: Float32Array, mix_weights: Float32Array): Float32Array;
354
+
355
+ /**
356
+ * Solve a uniform scale and translation for placing a template skeleton inside a mesh.
357
+ *
358
+ * `template_bounds` is [min_x, min_y, min_z, max_x, max_y, max_z] in the
359
+ * template skeleton's rest-pose coordinate space. `vertical_axis` is 0, 1, or 2.
360
+ * `vertical_anchor` controls vertical placement: 0 aligns mins, 1 aligns centers,
361
+ * 2 aligns maxes.
362
+ *
363
+ * Output layout:
364
+ * [scale, translate_x, translate_y, translate_z,
365
+ * mesh_humanoid_likelihood, mesh_height, template_height,
366
+ * mesh_cross_axis_wide_span, template_cross_axis_wide_span, status]
367
+ *
368
+ * `status` is 1 for solved, 0 for invalid mesh input, and -1 for invalid template
369
+ * bounds. This does not compute skin weights, inverse bind matrices, or pose
370
+ * retargeting.
371
+ */
372
+ export function solve_template_skeleton_fit(mesh_vertices: Float32Array, template_bounds: Float32Array, vertical_axis: number, vertical_anchor: number): Float32Array;
373
+
374
+ export function template_skeleton_fit_solution_stride(): number;
375
+
376
+ export function template_skeleton_fit_transform_stride(): number;
377
+
378
+ /**
379
+ * Validate generated template skeleton fit metadata from a compact Wasm ABI.
380
+ *
381
+ * String inputs carry host-owned ids. The packed f32 slice layout is:
382
+ * [schema_version, metadata_kind, template_lookup_status, fit_status,
383
+ * vertical_axis, vertical_anchor, fit_scale, translate_x, translate_y,
384
+ * translate_z, solver_confidence, manual_scale_multiplier, manual_offset_x,
385
+ * manual_offset_y, manual_offset_z].
386
+ *
387
+ * `metadata_kind` must be 1, which identifies generated template fit metadata
388
+ * and keeps it separate from imported rig, skinning, or bind-pose data.
389
+ *
390
+ * The return value is a compact bitmask. 0 means valid.
391
+ */
392
+ export function validate_generated_template_fit_metadata(template_id: string, source_character_id: string, metadata: Float32Array): number;
393
+
394
+ /**
395
+ * World-space camera direction for a model-relative camera angle.
396
+ * `model_quat` is the model's world quaternion `[x, y, z, w]`
397
+ * (pass an empty slice for identity).
398
+ */
399
+ export function world_direction_for_camera_angle(model_quat: Float32Array, camera_angle: number): Float32Array;
400
+
401
+ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
402
+
403
+ export interface InitOutput {
404
+ readonly memory: WebAssembly.Memory;
405
+ readonly __wbg_runtimecore_free: (a: number, b: number) => void;
406
+ readonly runtimecore_active_transition_count: (a: number) => number;
407
+ readonly runtimecore_au_morph_binding_stride: () => number;
408
+ readonly runtimecore_clear: (a: number) => void;
409
+ readonly runtimecore_clear_transitions: (a: number) => void;
410
+ readonly runtimecore_configure: (a: number, b: number, c: number, d: number, e: number) => [number, number];
411
+ readonly runtimecore_configure_exact_profile: (a: number, b: number, c: number, d: number, e: number) => [number, number];
412
+ readonly runtimecore_configure_with_preset: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
413
+ readonly runtimecore_evaluate_bone_frame_delta: (a: number) => [number, number];
414
+ readonly runtimecore_evaluate_morph_frame_delta: (a: number) => [number, number];
415
+ readonly runtimecore_get_au: (a: number, b: number) => number;
416
+ readonly runtimecore_get_continuum: (a: number, b: number, c: number) => number;
417
+ readonly runtimecore_load_au_morph_bindings: (a: number, b: number, c: number) => void;
418
+ readonly runtimecore_load_bone_rest_transforms: (a: number, b: number, c: number) => void;
419
+ readonly runtimecore_load_bone_translations: (a: number, b: number, c: number) => void;
420
+ readonly runtimecore_load_composite_axes: (a: number, b: number, c: number) => void;
421
+ readonly runtimecore_load_jaw_binding: (a: number, b: number, c: number) => void;
422
+ readonly runtimecore_load_viseme_jaw_amounts: (a: number, b: number, c: number) => void;
423
+ readonly runtimecore_load_viseme_morph_bindings: (a: number, b: number, c: number) => void;
424
+ readonly runtimecore_new: (a: number) => number;
425
+ readonly runtimecore_set_au: (a: number, b: number, c: number, d: number) => void;
426
+ readonly runtimecore_set_au_mix_weight: (a: number, b: number, c: number) => void;
427
+ readonly runtimecore_set_au_signed: (a: number, b: number, c: number, d: number) => void;
428
+ readonly runtimecore_set_continuum: (a: number, b: number, c: number, d: number, e: number) => void;
429
+ readonly runtimecore_set_mixed_aus: (a: number, b: number, c: number) => void;
430
+ readonly runtimecore_set_viseme: (a: number, b: number, c: number) => void;
431
+ readonly runtimecore_set_viseme_jaw_scale: (a: number, b: number, c: number) => void;
432
+ readonly runtimecore_set_viseme_slot_count: (a: number, b: number) => void;
433
+ readonly runtimecore_transition_au: (a: number, b: number, c: number, d: number, e: number) => void;
434
+ readonly runtimecore_transition_viseme: (a: number, b: number, c: number, d: number, e: number) => void;
435
+ readonly runtimecore_update: (a: number, b: number) => number;
436
+ readonly runtimecore_viseme_morph_binding_stride: () => number;
437
+ readonly runtimecore_viseme_slot_index: (a: number, b: number, c: number) => number;
438
+ readonly build_hair_gravity_curves: (a: number, b: number) => [number, number, number, number];
439
+ readonly build_hair_idle_curves: (a: number, b: number, c: number) => [number, number, number, number];
440
+ readonly build_hair_impulse_curves: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
441
+ readonly compile_clip: (a: number, b: number) => [number, number, number, number];
442
+ readonly compile_clip_curves: (a: number, b: number) => [number, number, number, number];
443
+ readonly get_preset_json: (a: number, b: number) => [number, number, number, number];
444
+ readonly has_preset: (a: number, b: number) => number;
445
+ readonly list_presets: () => [number, number];
446
+ readonly merge_embedded_preset: (a: number, b: number, c: number, d: number) => [number, number, number, number];
447
+ readonly merge_preset_profile: (a: number, b: number, c: number, d: number) => [number, number, number, number];
448
+ readonly validate_generated_template_fit_metadata: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
449
+ readonly analyze_mesh_proportions: (a: number, b: number, c: number) => [number, number];
450
+ readonly compose_template_fit_adjustment: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
451
+ readonly marker_endpoint_stride: () => number;
452
+ readonly marker_visibility_animation_factors: (a: number, b: number) => [number, number];
453
+ readonly mesh_proportions_stride: () => number;
454
+ readonly passes_marker_camera_angle_gate: (a: number, b: number, c: number) => number;
455
+ readonly resolve_viewport_constrained_line_scale: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
456
+ readonly resolve_viewport_safe_bounds: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
457
+ readonly sample_marker_arc_curve: (a: number, b: number, c: number, d: number, e: number) => [number, number];
458
+ readonly sample_marker_bezier_curve: (a: number, b: number, c: number, d: number, e: number) => [number, number];
459
+ readonly separate_overlapping_marker_endpoints: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
460
+ readonly should_show_marker: (a: number, b: number, c: number, d: number) => number;
461
+ readonly solve_axis_quaternion: (a: number, b: number, c: number, d: number) => [number, number];
462
+ readonly solve_bilateral_values: (a: number, b: number) => [number, number];
463
+ readonly solve_morph_batch: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
464
+ readonly solve_template_skeleton_fit: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
465
+ readonly template_skeleton_fit_solution_stride: () => number;
466
+ readonly marker_visibility_factors_stride: () => number;
467
+ readonly core_abi_version: () => number;
468
+ readonly pack_morph_frame_delta: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
469
+ readonly packed_bone_frame_delta_stride: () => number;
470
+ readonly packed_morph_frame_delta_stride: () => number;
471
+ readonly __wbg_cameraflight_free: (a: number, b: number) => void;
472
+ readonly __wbg_cameraorbit_free: (a: number, b: number) => void;
473
+ readonly __wbg_hairphysicssolver_free: (a: number, b: number) => void;
474
+ readonly annotation_camera_framing_stride: () => number;
475
+ readonly cameraflight_duration_ms: (a: number) => number;
476
+ readonly cameraflight_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number;
477
+ readonly cameraflight_sample: (a: number, b: number) => [number, number];
478
+ readonly cameraorbit_duration_ms: (a: number) => number;
479
+ readonly cameraorbit_new: (a: number, b: number, c: number, d: number, e: number) => number;
480
+ readonly cameraorbit_sample: (a: number, b: number) => [number, number];
481
+ readonly compose_template_skeleton_fit_transform: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
482
+ readonly default_hair_physics_config_values: () => [number, number];
483
+ readonly focus_padding_factor: (a: number, b: number, c: number, d: number) => number;
484
+ readonly hair_config_stride: () => number;
485
+ readonly hair_head_state_stride: () => number;
486
+ readonly hair_morph_output_stride: () => number;
487
+ readonly hair_state_stride: () => number;
488
+ readonly hairphysicssolver_get_config: (a: number) => [number, number];
489
+ readonly hairphysicssolver_get_state: (a: number) => [number, number];
490
+ readonly hairphysicssolver_new: (a: number, b: number) => number;
491
+ readonly hairphysicssolver_reset: (a: number) => void;
492
+ readonly hairphysicssolver_set_config: (a: number, b: number, c: number) => void;
493
+ readonly hairphysicssolver_update: (a: number, b: number, c: number, d: number) => [number, number];
494
+ readonly normalize_camera_angle_degrees: (a: number) => number;
495
+ readonly resolve_auto_closeup_angle: (a: number, b: number, c: number, d: number, e: number) => number;
496
+ readonly resolve_focus_camera_direction: (a: number, b: number, c: number, d: number, e: number) => [number, number];
497
+ readonly solve_focus_framing: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number) => [number, number];
498
+ readonly solve_full_body_framing: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => [number, number];
499
+ readonly world_direction_for_camera_angle: (a: number, b: number, c: number) => [number, number];
500
+ readonly camera_flight_sample_stride: () => number;
501
+ readonly template_skeleton_fit_transform_stride: () => number;
502
+ readonly __wbindgen_externrefs: WebAssembly.Table;
503
+ readonly __wbindgen_malloc: (a: number, b: number) => number;
504
+ readonly __wbindgen_free: (a: number, b: number, c: number) => void;
505
+ readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
506
+ readonly __externref_table_dealloc: (a: number) => void;
507
+ readonly __externref_drop_slice: (a: number, b: number) => void;
508
+ readonly __wbindgen_start: () => void;
509
+ }
510
+
511
+ export type SyncInitInput = BufferSource | WebAssembly.Module;
512
+
513
+ /**
514
+ * Instantiates the given `module`, which can either be bytes or
515
+ * a precompiled `WebAssembly.Module`.
516
+ *
517
+ * @param {{ module: SyncInitInput }} module - Passing `SyncInitInput` directly is deprecated.
518
+ *
519
+ * @returns {InitOutput}
520
+ */
521
+ export function initSync(module: { module: SyncInitInput } | SyncInitInput): InitOutput;
522
+
523
+ /**
524
+ * If `module_or_path` is {RequestInfo} or {URL}, makes a request and
525
+ * for everything else, calls `WebAssembly.instantiate` directly.
526
+ *
527
+ * @param {{ module_or_path: InitInput | Promise<InitInput> }} module_or_path - Passing `InitInput` directly is deprecated.
528
+ *
529
+ * @returns {Promise<InitOutput>}
530
+ */
531
+ export default function __wbg_init (module_or_path?: { module_or_path: InitInput | Promise<InitInput> } | InitInput | Promise<InitInput>): Promise<InitOutput>;