@lovelace_lol/loom3 1.0.26 → 1.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -85,164 +85,141 @@ declare const CC4_PRESET: Profile;
85
85
  * - annotationRegions: merged by region name, shallow field merge (override wins).
86
86
  */
87
87
  declare function resolveProfile(base: Profile, override: Partial<Profile>): Profile;
88
+ /**
89
+ * Explicit helper for the common operation: start with a preset, then apply a
90
+ * profile override on top. This is the preferred name at call sites where the
91
+ * distinction between preset and profile should stay obvious.
92
+ */
93
+ declare function applyProfileToPreset(base: Profile, override?: Partial<Profile>): Profile;
88
94
 
89
95
  declare const BETTA_FISH_PRESET: {
90
- name: string;
91
- animalType: string;
92
- emoji: string;
93
96
  bones: readonly ["Armature_rootJoint", "Bone_Armature", "Bone.001_Armature", "Bone.009_Armature", "Bone.027_Armature", "Bone.029_Armature", "Bone.031_Armature", "Bone.028_Armature", "Bone.030_Armature", "Bone.032_Armature", "Bone.010_Armature", "Bone.012_Armature", "Bone.014_Armature", "Bone.016_Armature", "Bone.011_Armature", "Bone.013_Armature", "Bone.015_Armature", "Bone.017_Armature", "Bone.002_Armature", "Bone.003_Armature", "Bone.004_Armature", "Bone.005_Armature", "Bone.020_Armature", "Bone.025_Armature", "Bone.026_Armature", "Bone.039_Armature", "Bone.040_Armature", "Bone.041_Armature", "Bone.042_Armature", "Bone.043_Armature", "Bone.044_Armature", "Bone.045_Armature", "Bone.019_Armature", "Bone.023_Armature", "Bone.024_Armature", "Bone.034_Armature", "Bone.036_Armature", "Bone.038_Armature", "Bone.018_Armature", "Bone.021_Armature", "Bone.022_Armature", "Bone.033_Armature", "Bone.035_Armature", "Bone.037_Armature", "Bone.046_Armature", "Bone.048_Armature", "Bone.050_Armature", "Bone.047_Armature", "Bone.049_Armature", "Bone.051_Armature", "Bone.006_Armature", "Bone.007_Armature", "Bone.008_Armature"];
94
- boneNodes: {
95
- readonly ROOT: "Armature_rootJoint";
96
- readonly BODY_ROOT: "Bone_Armature";
97
- readonly HEAD: "001";
98
- readonly BODY_FRONT: "002";
99
- readonly BODY_MID: "003";
100
- readonly BODY_BACK: "004";
101
- readonly TAIL_BASE: "005";
102
- readonly GILL_L: "046";
103
- readonly GILL_L_MID: "048";
104
- readonly GILL_L_TIP: "050";
105
- readonly GILL_R: "047";
106
- readonly GILL_R_MID: "049";
107
- readonly GILL_R_TIP: "051";
108
- readonly DORSAL_ROOT: "006";
109
- readonly DORSAL_L: "007";
110
- readonly DORSAL_R: "008";
111
- readonly VENTRAL_L: "018";
112
- readonly VENTRAL_L_MID: "021";
113
- readonly VENTRAL_L_TIP: "022";
114
- readonly VENTRAL_R: "033";
115
- readonly VENTRAL_R_MID: "035";
116
- readonly VENTRAL_R_TIP: "037";
117
- readonly PECTORAL_L_ROOT: "009";
118
- readonly PECTORAL_L_CHAIN1: "027";
119
- readonly PECTORAL_L_CHAIN1_MID: "029";
120
- readonly PECTORAL_L_CHAIN1_TIP: "031";
121
- readonly PECTORAL_L_CHAIN2: "028";
122
- readonly PECTORAL_L_CHAIN2_MID: "030";
123
- readonly PECTORAL_L_CHAIN2_TIP: "032";
124
- readonly PECTORAL_R_ROOT: "010";
125
- readonly PECTORAL_R_CHAIN1: "012";
126
- readonly PECTORAL_R_CHAIN1_A: "014";
127
- readonly PECTORAL_R_CHAIN1_B: "016";
128
- readonly PECTORAL_R_ROOT2: "011";
129
- readonly PECTORAL_R_CHAIN2: "013";
130
- readonly PECTORAL_R_CHAIN2_A: "015";
131
- readonly PECTORAL_R_CHAIN2_B: "017";
132
- readonly EYE_L: "EYES_0";
133
- readonly EYE_R: "EYES_0";
134
- readonly TAIL_TOP: "020";
135
- readonly TAIL_TOP_MID: "025";
136
- readonly TAIL_TOP_TIP: "026";
137
- readonly TAIL_MID: "039";
138
- readonly TAIL_MID_A: "040";
139
- readonly TAIL_MID_A_TIP: "041";
140
- readonly TAIL_MID_B: "042";
141
- readonly TAIL_MID_B_TIP: "043";
142
- readonly TAIL_MID_C: "044";
143
- readonly TAIL_MID_C_TIP: "045";
144
- readonly TAIL_SIDE_L: "019";
145
- readonly TAIL_SIDE_L_MID: "023";
146
- readonly TAIL_SIDE_L_TIP: "024";
147
- readonly TAIL_SIDE_R: "034";
148
- readonly TAIL_SIDE_R_MID: "036";
149
- readonly TAIL_SIDE_R_TIP: "038";
150
- };
151
97
  boneBindings: Record<number, BoneBinding[]>;
152
98
  actionInfo: Record<string, AUInfo>;
153
- eyeMeshNodes: {
154
- readonly LEFT: "EYES_0";
155
- readonly RIGHT: "EYES_0";
156
- };
99
+ name?: string;
100
+ animalType?: string;
101
+ emoji?: string;
157
102
  auToMorphs: Record<number, MorphTargetsBySide>;
103
+ auToBones: Record<number, BoneBinding[]>;
104
+ boneNodes: Record<string, string>;
105
+ bonePrefix?: string;
106
+ boneSuffix?: string;
107
+ morphPrefix?: string;
108
+ morphSuffix?: string;
109
+ suffixPattern?: string;
110
+ leftMorphSuffixes?: string[];
111
+ rightMorphSuffixes?: string[];
158
112
  morphToMesh: Record<string, string[]>;
159
- visemeKeys: string[];
113
+ auFacePartToMeshCategory?: Record<string, string>;
114
+ visemeKeys: MorphTargetRef[];
115
+ visemeMeshCategory?: string;
116
+ visemeJawAmounts?: number[];
117
+ auMixDefaults?: Record<number, number>;
118
+ auInfo?: Record<string, AUInfo>;
119
+ eyeMeshNodes?: {
120
+ LEFT: string;
121
+ RIGHT: string;
122
+ };
123
+ compositeRotations?: CompositeRotation[];
124
+ meshes?: Record<string, MeshInfo>;
125
+ continuumPairs?: Record<number, {
126
+ pairId: number;
127
+ isNegative: boolean;
128
+ axis: "pitch" | "yaw" | "roll";
129
+ node: string;
130
+ }>;
131
+ continuumLabels?: Record<string, string>;
132
+ annotationRegions?: AnnotationRegion[];
133
+ hairPhysics?: HairPhysicsProfileConfig;
160
134
  };
161
135
  declare const AU_MAPPING_CONFIG: {
162
- name: string;
163
- animalType: string;
164
- emoji: string;
136
+ bones: readonly ["Armature_rootJoint", "Bone_Armature", "Bone.001_Armature", "Bone.009_Armature", "Bone.027_Armature", "Bone.029_Armature", "Bone.031_Armature", "Bone.028_Armature", "Bone.030_Armature", "Bone.032_Armature", "Bone.010_Armature", "Bone.012_Armature", "Bone.014_Armature", "Bone.016_Armature", "Bone.011_Armature", "Bone.013_Armature", "Bone.015_Armature", "Bone.017_Armature", "Bone.002_Armature", "Bone.003_Armature", "Bone.004_Armature", "Bone.005_Armature", "Bone.020_Armature", "Bone.025_Armature", "Bone.026_Armature", "Bone.039_Armature", "Bone.040_Armature", "Bone.041_Armature", "Bone.042_Armature", "Bone.043_Armature", "Bone.044_Armature", "Bone.045_Armature", "Bone.019_Armature", "Bone.023_Armature", "Bone.024_Armature", "Bone.034_Armature", "Bone.036_Armature", "Bone.038_Armature", "Bone.018_Armature", "Bone.021_Armature", "Bone.022_Armature", "Bone.033_Armature", "Bone.035_Armature", "Bone.037_Armature", "Bone.046_Armature", "Bone.048_Armature", "Bone.050_Armature", "Bone.047_Armature", "Bone.049_Armature", "Bone.051_Armature", "Bone.006_Armature", "Bone.007_Armature", "Bone.008_Armature"];
137
+ boneBindings: Record<number, BoneBinding[]>;
138
+ actionInfo: Record<string, AUInfo>;
139
+ name?: string;
140
+ animalType?: string;
141
+ emoji?: string;
142
+ auToMorphs: Record<number, MorphTargetsBySide>;
165
143
  auToBones: Record<number, BoneBinding[]>;
166
- boneNodes: {
167
- readonly ROOT: "Armature_rootJoint";
168
- readonly BODY_ROOT: "Bone_Armature";
169
- readonly HEAD: "001";
170
- readonly BODY_FRONT: "002";
171
- readonly BODY_MID: "003";
172
- readonly BODY_BACK: "004";
173
- readonly TAIL_BASE: "005";
174
- readonly GILL_L: "046";
175
- readonly GILL_L_MID: "048";
176
- readonly GILL_L_TIP: "050";
177
- readonly GILL_R: "047";
178
- readonly GILL_R_MID: "049";
179
- readonly GILL_R_TIP: "051";
180
- readonly DORSAL_ROOT: "006";
181
- readonly DORSAL_L: "007";
182
- readonly DORSAL_R: "008";
183
- readonly VENTRAL_L: "018";
184
- readonly VENTRAL_L_MID: "021";
185
- readonly VENTRAL_L_TIP: "022";
186
- readonly VENTRAL_R: "033";
187
- readonly VENTRAL_R_MID: "035";
188
- readonly VENTRAL_R_TIP: "037";
189
- readonly PECTORAL_L_ROOT: "009";
190
- readonly PECTORAL_L_CHAIN1: "027";
191
- readonly PECTORAL_L_CHAIN1_MID: "029";
192
- readonly PECTORAL_L_CHAIN1_TIP: "031";
193
- readonly PECTORAL_L_CHAIN2: "028";
194
- readonly PECTORAL_L_CHAIN2_MID: "030";
195
- readonly PECTORAL_L_CHAIN2_TIP: "032";
196
- readonly PECTORAL_R_ROOT: "010";
197
- readonly PECTORAL_R_CHAIN1: "012";
198
- readonly PECTORAL_R_CHAIN1_A: "014";
199
- readonly PECTORAL_R_CHAIN1_B: "016";
200
- readonly PECTORAL_R_ROOT2: "011";
201
- readonly PECTORAL_R_CHAIN2: "013";
202
- readonly PECTORAL_R_CHAIN2_A: "015";
203
- readonly PECTORAL_R_CHAIN2_B: "017";
204
- readonly EYE_L: "EYES_0";
205
- readonly EYE_R: "EYES_0";
206
- readonly TAIL_TOP: "020";
207
- readonly TAIL_TOP_MID: "025";
208
- readonly TAIL_TOP_TIP: "026";
209
- readonly TAIL_MID: "039";
210
- readonly TAIL_MID_A: "040";
211
- readonly TAIL_MID_A_TIP: "041";
212
- readonly TAIL_MID_B: "042";
213
- readonly TAIL_MID_B_TIP: "043";
214
- readonly TAIL_MID_C: "044";
215
- readonly TAIL_MID_C_TIP: "045";
216
- readonly TAIL_SIDE_L: "019";
217
- readonly TAIL_SIDE_L_MID: "023";
218
- readonly TAIL_SIDE_L_TIP: "024";
219
- readonly TAIL_SIDE_R: "034";
220
- readonly TAIL_SIDE_R_MID: "036";
221
- readonly TAIL_SIDE_R_TIP: "038";
144
+ boneNodes: Record<string, string>;
145
+ bonePrefix?: string;
146
+ boneSuffix?: string;
147
+ morphPrefix?: string;
148
+ morphSuffix?: string;
149
+ suffixPattern?: string;
150
+ leftMorphSuffixes?: string[];
151
+ rightMorphSuffixes?: string[];
152
+ morphToMesh: Record<string, string[]>;
153
+ auFacePartToMeshCategory?: Record<string, string>;
154
+ visemeKeys: MorphTargetRef[];
155
+ visemeMeshCategory?: string;
156
+ visemeJawAmounts?: number[];
157
+ auMixDefaults?: Record<number, number>;
158
+ auInfo?: Record<string, AUInfo>;
159
+ eyeMeshNodes?: {
160
+ LEFT: string;
161
+ RIGHT: string;
222
162
  };
223
- bonePrefix: string;
224
- boneSuffix: string;
225
- suffixPattern: string;
163
+ compositeRotations?: CompositeRotation[];
164
+ meshes?: Record<string, MeshInfo>;
165
+ continuumPairs?: Record<number, {
166
+ pairId: number;
167
+ isNegative: boolean;
168
+ axis: "pitch" | "yaw" | "roll";
169
+ node: string;
170
+ }>;
171
+ continuumLabels?: Record<string, string>;
172
+ annotationRegions?: AnnotationRegion[];
173
+ hairPhysics?: HairPhysicsProfileConfig;
174
+ };
175
+ declare const FISH_AU_MAPPING_CONFIG: {
176
+ bones: readonly ["Armature_rootJoint", "Bone_Armature", "Bone.001_Armature", "Bone.009_Armature", "Bone.027_Armature", "Bone.029_Armature", "Bone.031_Armature", "Bone.028_Armature", "Bone.030_Armature", "Bone.032_Armature", "Bone.010_Armature", "Bone.012_Armature", "Bone.014_Armature", "Bone.016_Armature", "Bone.011_Armature", "Bone.013_Armature", "Bone.015_Armature", "Bone.017_Armature", "Bone.002_Armature", "Bone.003_Armature", "Bone.004_Armature", "Bone.005_Armature", "Bone.020_Armature", "Bone.025_Armature", "Bone.026_Armature", "Bone.039_Armature", "Bone.040_Armature", "Bone.041_Armature", "Bone.042_Armature", "Bone.043_Armature", "Bone.044_Armature", "Bone.045_Armature", "Bone.019_Armature", "Bone.023_Armature", "Bone.024_Armature", "Bone.034_Armature", "Bone.036_Armature", "Bone.038_Armature", "Bone.018_Armature", "Bone.021_Armature", "Bone.022_Armature", "Bone.033_Armature", "Bone.035_Armature", "Bone.037_Armature", "Bone.046_Armature", "Bone.048_Armature", "Bone.050_Armature", "Bone.047_Armature", "Bone.049_Armature", "Bone.051_Armature", "Bone.006_Armature", "Bone.007_Armature", "Bone.008_Armature"];
177
+ boneBindings: Record<number, BoneBinding[]>;
178
+ actionInfo: Record<string, AUInfo>;
179
+ name?: string;
180
+ animalType?: string;
181
+ emoji?: string;
226
182
  auToMorphs: Record<number, MorphTargetsBySide>;
183
+ auToBones: Record<number, BoneBinding[]>;
184
+ boneNodes: Record<string, string>;
185
+ bonePrefix?: string;
186
+ boneSuffix?: string;
187
+ morphPrefix?: string;
188
+ morphSuffix?: string;
189
+ suffixPattern?: string;
190
+ leftMorphSuffixes?: string[];
191
+ rightMorphSuffixes?: string[];
227
192
  morphToMesh: Record<string, string[]>;
228
- visemeKeys: string[];
229
- auInfo: Record<string, AUInfo>;
230
- compositeRotations: CompositeRotation[];
231
- eyeMeshNodes: {
232
- readonly LEFT: "EYES_0";
233
- readonly RIGHT: "EYES_0";
193
+ auFacePartToMeshCategory?: Record<string, string>;
194
+ visemeKeys: MorphTargetRef[];
195
+ visemeMeshCategory?: string;
196
+ visemeJawAmounts?: number[];
197
+ auMixDefaults?: Record<number, number>;
198
+ auInfo?: Record<string, AUInfo>;
199
+ eyeMeshNodes?: {
200
+ LEFT: string;
201
+ RIGHT: string;
234
202
  };
235
- meshes: Record<string, MeshInfo>;
236
- auMixDefaults: Record<number, number>;
237
- continuumPairs: Record<number, {
203
+ compositeRotations?: CompositeRotation[];
204
+ meshes?: Record<string, MeshInfo>;
205
+ continuumPairs?: Record<number, {
238
206
  pairId: number;
239
207
  isNegative: boolean;
240
208
  axis: "pitch" | "yaw" | "roll";
241
209
  node: string;
242
210
  }>;
243
- continuumLabels: Record<string, string>;
211
+ continuumLabels?: Record<string, string>;
212
+ annotationRegions?: AnnotationRegion[];
213
+ hairPhysics?: HairPhysicsProfileConfig;
244
214
  };
245
215
 
216
+ /**
217
+ * Loom3 - Preset Exports
218
+ *
219
+ * All AU presets are exported from here.
220
+ * Frontend passes a presetType string and loom3 resolves the preset internally.
221
+ */
222
+
246
223
  /**
247
224
  * Preset types that can be passed to Loom3
248
225
  */
@@ -251,90 +228,7 @@ type PresetType = 'cc4' | 'skeletal' | 'fish' | 'custom';
251
228
  * Resolve a preset by type name.
252
229
  * This allows frontend to pass a string instead of importing the full preset.
253
230
  */
254
- declare function resolvePreset(presetType: PresetType | string | undefined): Profile | {
255
- name: string;
256
- animalType: string;
257
- emoji: string;
258
- auToBones: Record<number, BoneBinding[]>;
259
- boneNodes: {
260
- readonly ROOT: "Armature_rootJoint";
261
- readonly BODY_ROOT: "Bone_Armature";
262
- readonly HEAD: "001";
263
- readonly BODY_FRONT: "002";
264
- readonly BODY_MID: "003";
265
- readonly BODY_BACK: "004";
266
- readonly TAIL_BASE: "005";
267
- readonly GILL_L: "046";
268
- readonly GILL_L_MID: "048";
269
- readonly GILL_L_TIP: "050";
270
- readonly GILL_R: "047";
271
- readonly GILL_R_MID: "049";
272
- readonly GILL_R_TIP: "051";
273
- readonly DORSAL_ROOT: "006";
274
- readonly DORSAL_L: "007";
275
- readonly DORSAL_R: "008";
276
- readonly VENTRAL_L: "018";
277
- readonly VENTRAL_L_MID: "021";
278
- readonly VENTRAL_L_TIP: "022";
279
- readonly VENTRAL_R: "033";
280
- readonly VENTRAL_R_MID: "035";
281
- readonly VENTRAL_R_TIP: "037";
282
- readonly PECTORAL_L_ROOT: "009";
283
- readonly PECTORAL_L_CHAIN1: "027";
284
- readonly PECTORAL_L_CHAIN1_MID: "029";
285
- readonly PECTORAL_L_CHAIN1_TIP: "031";
286
- readonly PECTORAL_L_CHAIN2: "028";
287
- readonly PECTORAL_L_CHAIN2_MID: "030";
288
- readonly PECTORAL_L_CHAIN2_TIP: "032";
289
- readonly PECTORAL_R_ROOT: "010";
290
- readonly PECTORAL_R_CHAIN1: "012";
291
- readonly PECTORAL_R_CHAIN1_A: "014";
292
- readonly PECTORAL_R_CHAIN1_B: "016";
293
- readonly PECTORAL_R_ROOT2: "011";
294
- readonly PECTORAL_R_CHAIN2: "013";
295
- readonly PECTORAL_R_CHAIN2_A: "015";
296
- readonly PECTORAL_R_CHAIN2_B: "017";
297
- readonly EYE_L: "EYES_0";
298
- readonly EYE_R: "EYES_0";
299
- readonly TAIL_TOP: "020";
300
- readonly TAIL_TOP_MID: "025";
301
- readonly TAIL_TOP_TIP: "026";
302
- readonly TAIL_MID: "039";
303
- readonly TAIL_MID_A: "040";
304
- readonly TAIL_MID_A_TIP: "041";
305
- readonly TAIL_MID_B: "042";
306
- readonly TAIL_MID_B_TIP: "043";
307
- readonly TAIL_MID_C: "044";
308
- readonly TAIL_MID_C_TIP: "045";
309
- readonly TAIL_SIDE_L: "019";
310
- readonly TAIL_SIDE_L_MID: "023";
311
- readonly TAIL_SIDE_L_TIP: "024";
312
- readonly TAIL_SIDE_R: "034";
313
- readonly TAIL_SIDE_R_MID: "036";
314
- readonly TAIL_SIDE_R_TIP: "038";
315
- };
316
- bonePrefix: string;
317
- boneSuffix: string;
318
- suffixPattern: string;
319
- auToMorphs: Record<number, MorphTargetsBySide>;
320
- morphToMesh: Record<string, string[]>;
321
- visemeKeys: string[];
322
- auInfo: Record<string, AUInfo>;
323
- compositeRotations: CompositeRotation[];
324
- eyeMeshNodes: {
325
- readonly LEFT: "EYES_0";
326
- readonly RIGHT: "EYES_0";
327
- };
328
- meshes: Record<string, MeshInfo>;
329
- auMixDefaults: Record<number, number>;
330
- continuumPairs: Record<number, {
331
- pairId: number;
332
- isNegative: boolean;
333
- axis: "pitch" | "yaw" | "roll";
334
- node: string;
335
- }>;
336
- continuumLabels: Record<string, string>;
337
- };
231
+ declare function resolvePreset(presetType: PresetType | string | undefined): Profile;
338
232
  /**
339
233
  * Resolve a preset and merge optional overrides.
340
234
  */
@@ -1972,7 +1866,7 @@ type MarkerStyle = 'html' | '3d';
1972
1866
  /**
1973
1867
  * Per-character configuration for camera + animation
1974
1868
  */
1975
- interface CharacterConfig {
1869
+ interface CharacterConfig extends Partial<Profile> {
1976
1870
  /** Unique identifier for the character */
1977
1871
  characterId: string;
1978
1872
  /** Display name */
@@ -2003,7 +1897,11 @@ interface CharacterConfig {
2003
1897
  modelGroundClearance?: number;
2004
1898
  /** Preset type for animation mapping. Default: 'cc4' */
2005
1899
  auPresetType?: PresetType;
2006
- /** Optional: profile overrides applied on top of the preset */
1900
+ /**
1901
+ * Optional legacy nested override blob.
1902
+ * New stored character documents should flatten preset overrides onto the
1903
+ * top-level character profile object instead of nesting them here.
1904
+ */
2007
1905
  profile?: Partial<Profile>;
2008
1906
  /** Baked clip names hidden from downstream UIs and filtered out on load */
2009
1907
  deletedBakedAnimationClips?: string[];
@@ -2030,6 +1928,22 @@ interface CharacterRegistry {
2030
1928
  defaultCharacter?: string;
2031
1929
  }
2032
1930
 
1931
+ declare function mergeRegionsByName(base?: Region[], override?: Region[]): Region[] | undefined;
1932
+ declare function extractProfileOverrides(config: CharacterConfig): Partial<Profile>;
1933
+ declare function applyCharacterProfileToPreset(config: CharacterConfig): Profile | null;
1934
+ /**
1935
+ * Resolve a saved character config into the runtime shape DPthree and similar
1936
+ * tools should consume.
1937
+ *
1938
+ * Precedence:
1939
+ * 1. preset defaults
1940
+ * 2. flattened top-level profile overrides
1941
+ * 3. legacy nested `config.profile` overrides (compatibility only)
1942
+ * 4. top-level saved `config.regions` overrides by region name
1943
+ * 5. top-level saved bone naming fields remain compatibility overrides
1944
+ */
1945
+ declare function resolveCharacterConfig(config: CharacterConfig): CharacterConfig;
1946
+
2033
1947
  interface ResolvedFaceCenter {
2034
1948
  center: THREE.Vector3;
2035
1949
  method: string;
@@ -2468,4 +2382,4 @@ declare function detectFacingDirection(model: THREE.Object3D, eyeBoneNames?: {
2468
2382
  right: string[];
2469
2383
  }): 'forward' | 'backward' | 'unknown';
2470
2384
 
2471
- export { type AUInfo, type AUSelector, AU_INFO, AU_MIX_DEFAULTS, AU_TO_MORPHS, type AnalyzeModelOptions, type Animation, type AnimationActionHandle, type AnimationAnalysis, type AnimationBlendMode, type AnimationClipInfo, type AnimationEasing, type AnimationInfo, type AnimationPlayOptions, type AnimationSource, type AnimationState, AnimationThree, BETTA_FISH_PRESET, BLENDING_MODES, BONE_AU_TO_BINDINGS, type BlendingMode, type BoneBinding, type BoneInfo, type BoneKey, CC4_BONE_NODES, CC4_BONE_PREFIX, CC4_EYE_MESH_NODES, CC4_MESHES, CC4_PRESET, CC4_SUFFIX_PATTERN, COMPOSITE_ROTATIONS, CONTINUUM_LABELS, CONTINUUM_PAIRS_MAP, type CharacterConfig, type CharacterRegistry, type ClipHandle, type ClipOptions, type CompositeRotation, type CompositeRotationState, type CurvePoint, type CurvesMap, DEFAULT_HAIR_PHYSICS_CONFIG, type ExpandAnimation, type ExpandedRegionState, AU_MAPPING_CONFIG as FISH_AU_MAPPING_CONFIG, type FaceCenterResult, type FallbackConfig, type FindFaceCenterOptions, type Hair, type HairMorphAxis, type HairMorphOutput$1 as HairMorphOutput, type HairMorphTargetMapping, type HairMorphTargetValueMapping, type HairMorphTargetsConfig, type HairObjectRef, type HairObjectState, HairPhysics, type HairPhysicsConfig$1 as HairPhysicsConfig, type HairPhysicsDirectionConfig, type HairPhysics$1 as HairPhysicsInterface, type HairMorphOutput as HairPhysicsMorphOutput, type HairPhysicsProfileConfig, type HairPhysicsRuntimeConfig, type HairPhysicsRuntimeConfigUpdate, type HairPhysicsState, type HairState, type HairStrand, type HeadState$1 as HeadState, type LineConfig, type LineCurve, type LineStyle, Loom3, type Loom3Config, Loom3 as Loom3Three, type LoomLarge, type LoomLargeConfig, Loom3 as LoomLargeThree, MORPH_TO_MESH, type MappingConsistencyResult, type MappingCorrection, type MappingCorrectionOptions, type MappingCorrectionResult, type MappingIssue, type MarkerGroup, type MarkerStyle, type MarkerStyleOverrides, type MeshCategory, type MeshInfo, type MeshMaterialSettings, type MixerLoopMode, type ModelAnalysisReport, type ModelData, type ModelMeshInfo, type MorphCategory, type MorphInfo, type MorphTargetRef, type MorphTargetsBySide, type NamedDirection, type PresetType, type Profile, type ReadyPayload, type Region, type RotationAxis, type RotationsState, type Snippet, type TrackInfo, type TransitionHandle, VISEME_JAW_AMOUNTS, VISEME_KEYS, type ValidateMappingOptions, type ValidationResult, analyzeModel, collectMorphMeshes, detectFacingDirection, extractFromGLTF, extractModelData, findFaceCenter, fuzzyNameMatch, generateMappingCorrections, getModelForwardDirection, hasLeftRightMorphs, isMixedAU, isPresetCompatible, resolveBoneName, resolveBoneNames, resolveFaceCenter, resolvePreset, resolvePresetWithOverrides, resolveProfile, suggestBestPreset, validateMappingConfig, validateMappings };
2385
+ export { type AUInfo, type AUSelector, AU_INFO, AU_MAPPING_CONFIG, AU_MIX_DEFAULTS, AU_TO_MORPHS, type AnalyzeModelOptions, type Animation, type AnimationActionHandle, type AnimationAnalysis, type AnimationBlendMode, type AnimationClipInfo, type AnimationEasing, type AnimationInfo, type AnimationPlayOptions, type AnimationSource, type AnimationState, AnimationThree, BETTA_FISH_PRESET, BLENDING_MODES, BONE_AU_TO_BINDINGS, type BlendingMode, type BoneBinding, type BoneInfo, type BoneKey, CC4_BONE_NODES, CC4_BONE_PREFIX, CC4_EYE_MESH_NODES, CC4_MESHES, CC4_PRESET, CC4_SUFFIX_PATTERN, COMPOSITE_ROTATIONS, CONTINUUM_LABELS, CONTINUUM_PAIRS_MAP, type CharacterConfig, type CharacterRegistry, type ClipHandle, type ClipOptions, type CompositeRotation, type CompositeRotationState, type CurvePoint, type CurvesMap, DEFAULT_HAIR_PHYSICS_CONFIG, type ExpandAnimation, type ExpandedRegionState, FISH_AU_MAPPING_CONFIG, type FaceCenterResult, type FallbackConfig, type FindFaceCenterOptions, type Hair, type HairMorphAxis, type HairMorphOutput$1 as HairMorphOutput, type HairMorphTargetMapping, type HairMorphTargetValueMapping, type HairMorphTargetsConfig, type HairObjectRef, type HairObjectState, HairPhysics, type HairPhysicsConfig$1 as HairPhysicsConfig, type HairPhysicsDirectionConfig, type HairPhysics$1 as HairPhysicsInterface, type HairMorphOutput as HairPhysicsMorphOutput, type HairPhysicsProfileConfig, type HairPhysicsRuntimeConfig, type HairPhysicsRuntimeConfigUpdate, type HairPhysicsState, type HairState, type HairStrand, type HeadState$1 as HeadState, type LineConfig, type LineCurve, type LineStyle, Loom3, type Loom3Config, Loom3 as Loom3Three, type LoomLarge, type LoomLargeConfig, Loom3 as LoomLargeThree, MORPH_TO_MESH, type MappingConsistencyResult, type MappingCorrection, type MappingCorrectionOptions, type MappingCorrectionResult, type MappingIssue, type MarkerGroup, type MarkerStyle, type MarkerStyleOverrides, type MeshCategory, type MeshInfo, type MeshMaterialSettings, type MixerLoopMode, type ModelAnalysisReport, type ModelData, type ModelMeshInfo, type MorphCategory, type MorphInfo, type MorphTargetRef, type MorphTargetsBySide, type NamedDirection, type PresetType, type Profile, type ReadyPayload, type Region, type RotationAxis, type RotationsState, type Snippet, type TrackInfo, type TransitionHandle, VISEME_JAW_AMOUNTS, VISEME_KEYS, type ValidateMappingOptions, type ValidationResult, analyzeModel, applyCharacterProfileToPreset, applyProfileToPreset, collectMorphMeshes, detectFacingDirection, extractFromGLTF, extractModelData, extractProfileOverrides, findFaceCenter, fuzzyNameMatch, generateMappingCorrections, getModelForwardDirection, hasLeftRightMorphs, isMixedAU, isPresetCompatible, mergeRegionsByName as mergeCharacterRegionsByName, resolveBoneName, resolveBoneNames, resolveCharacterConfig, resolveFaceCenter, resolvePreset, resolvePresetWithOverrides, resolveProfile, suggestBestPreset, validateMappingConfig, validateMappings };