@lovelace_lol/loom3 1.0.3 → 1.0.6

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.cts CHANGED
@@ -374,14 +374,16 @@ interface BoneBinding {
374
374
  /** Optional side hint for balance-aware AUs. */
375
375
  side?: 'left' | 'right';
376
376
  }
377
+ /** A single AU id or a grouped list of AU ids that share one semantic direction. */
378
+ type AUSelector = number | number[];
377
379
  /**
378
380
  * RotationAxis - Defines which AUs control a specific rotation axis
379
381
  */
380
382
  interface RotationAxis {
381
383
  aus: number[];
382
384
  axis: 'rx' | 'ry' | 'rz';
383
- negative?: number;
384
- positive?: number;
385
+ negative?: AUSelector;
386
+ positive?: AUSelector;
385
387
  }
386
388
  /**
387
389
  * CompositeRotation - Defines unified rotation axes for bones
@@ -658,8 +660,19 @@ interface Profile {
658
660
  rightMorphSuffixes?: string[];
659
661
  /** Morph category to mesh names (e.g., 'face' → ['CC_Base_Body_1']) */
660
662
  morphToMesh: Record<string, string[]>;
663
+ /**
664
+ * Optional map from AU `facePart` labels (from `auInfo`) to `morphToMesh` categories.
665
+ * This makes AU mesh routing fully preset/profile configurable.
666
+ * Example: { Eye: 'eye', Eyes: 'eye', Eyelids: 'eye', Tongue: 'tongue' }.
667
+ */
668
+ auFacePartToMeshCategory?: Record<string, string>;
661
669
  /** Viseme targets in order (typically 15 phoneme positions) */
662
670
  visemeKeys: MorphTargetRef[];
671
+ /**
672
+ * Optional `morphToMesh` category to use for viseme morph routing.
673
+ * Falls back to `morphToMesh.viseme` (if present), then `morphToMesh.face`.
674
+ */
675
+ visemeMeshCategory?: string;
663
676
  /** Optional: Jaw opening amounts per viseme index (0-1). Used for auto-generating jaw rotation in clips. */
664
677
  visemeJawAmounts?: number[];
665
678
  /** Optional: Default mix weights for bone/morph blending (0 = morph only, 1 = bone only) */
@@ -1516,9 +1529,10 @@ declare class Loom3 implements LoomLarge {
1516
1529
  getProfile(): Profile;
1517
1530
  /**
1518
1531
  * Get the mesh names that should receive morph influences for a given AU.
1519
- * Routes by facePart: Tongue tongue, Eye → eye, everything else → face.
1532
+ * Routing is driven by `auFacePartToMeshCategory` in profile config.
1520
1533
  */
1521
1534
  getMeshNamesForAU(auId: number): string[];
1535
+ getMeshNamesForViseme(): string[];
1522
1536
  registerHairObjects(objects: Object3D[]): Array<{
1523
1537
  name: string;
1524
1538
  isMesh: boolean;
@@ -1571,6 +1585,9 @@ declare class Loom3 implements LoomLarge {
1571
1585
  private getMorphKeyCacheKey;
1572
1586
  private getMorphIndexCacheKey;
1573
1587
  private isMixedAU;
1588
+ private getEffectiveBoneAUValue;
1589
+ private getCompositeAxisValueForNode;
1590
+ private getCompositeAxisBindingForNode;
1574
1591
  private initBoneRotations;
1575
1592
  /** Update rotation state - just stores -1 to 1 value like stable version */
1576
1593
  private updateBoneRotation;
@@ -2031,23 +2048,24 @@ declare class HairPhysics {
2031
2048
  reset(): void;
2032
2049
  }
2033
2050
 
2034
- /**
2035
- * Loom3 - Mapping Corrections
2036
- *
2037
- * Attempts to generate a corrected mapping configuration using fuzzy matching.
2038
- * This is a best-effort helper that can be layered on top of validation.
2039
- */
2040
-
2041
- interface MorphMesh$1 {
2051
+ interface ValidationMorphMesh {
2042
2052
  name: string;
2043
2053
  morphTargetDictionary?: Record<string, number>;
2044
2054
  morphTargetInfluences?: number[];
2045
2055
  }
2046
- interface Skeleton$1 {
2056
+ interface ValidationSkeleton {
2047
2057
  bones: Array<{
2048
2058
  name: string;
2049
2059
  }>;
2050
2060
  }
2061
+
2062
+ /**
2063
+ * Loom3 - Mapping Corrections
2064
+ *
2065
+ * Attempts to generate a corrected mapping configuration using fuzzy matching.
2066
+ * This is a best-effort helper that can be layered on top of validation.
2067
+ */
2068
+
2051
2069
  interface MappingCorrection {
2052
2070
  type: 'bone' | 'morph' | 'viseme' | 'mesh';
2053
2071
  source: string;
@@ -2071,7 +2089,7 @@ interface MappingCorrectionOptions {
2071
2089
  */
2072
2090
  useResolvedNames?: boolean;
2073
2091
  }
2074
- declare function generateMappingCorrections(meshes: MorphMesh$1[], skeleton: Skeleton$1 | null, config: Profile, options?: MappingCorrectionOptions): MappingCorrectionResult;
2092
+ declare function generateMappingCorrections(meshes: ValidationMorphMesh[], skeleton: ValidationSkeleton | null, config: Profile, options?: MappingCorrectionOptions): MappingCorrectionResult;
2075
2093
 
2076
2094
  /**
2077
2095
  * Loom3 - Mapping Validation
@@ -2131,36 +2149,20 @@ interface MappingConsistencyResult {
2131
2149
  interface ValidateMappingOptions extends MappingCorrectionOptions {
2132
2150
  suggestCorrections?: boolean;
2133
2151
  }
2134
- /**
2135
- * Interface for mesh with morph targets (compatible with Three.js Mesh)
2136
- */
2137
- interface MorphMesh {
2138
- name: string;
2139
- morphTargetDictionary?: Record<string, number>;
2140
- morphTargetInfluences?: number[];
2141
- }
2142
- /**
2143
- * Interface for skeleton (compatible with Three.js Skeleton)
2144
- */
2145
- interface Skeleton {
2146
- bones: Array<{
2147
- name: string;
2148
- }>;
2149
- }
2150
2152
  /**
2151
2153
  * Validate that the mapping dictionaries are internally consistent.
2152
2154
  */
2153
2155
  declare function validateMappingConfig(config: Profile): MappingConsistencyResult;
2154
- declare function validateMappings(meshes: MorphMesh[], skeleton: Skeleton | null, config: Profile, options?: ValidateMappingOptions): ValidationResult;
2156
+ declare function validateMappings(meshes: ValidationMorphMesh[], skeleton: ValidationSkeleton | null, config: Profile, options?: ValidateMappingOptions): ValidationResult;
2155
2157
  /**
2156
2158
  * Quick check if a preset is compatible with a model.
2157
2159
  * Returns true if at least 50% of mappings are found.
2158
2160
  */
2159
- declare function isPresetCompatible(meshes: MorphMesh[], skeleton: Skeleton | null, config: Profile): boolean;
2161
+ declare function isPresetCompatible(meshes: ValidationMorphMesh[], skeleton: ValidationSkeleton | null, config: Profile): boolean;
2160
2162
  /**
2161
2163
  * Suggest the best preset from a list based on validation scores.
2162
2164
  */
2163
- declare function suggestBestPreset<T extends Profile>(meshes: MorphMesh[], skeleton: Skeleton | null, presets: T[]): {
2165
+ declare function suggestBestPreset<T extends Profile>(meshes: ValidationMorphMesh[], skeleton: ValidationSkeleton | null, presets: T[]): {
2164
2166
  preset: T;
2165
2167
  score: number;
2166
2168
  } | null;
@@ -2387,4 +2389,4 @@ declare function detectFacingDirection(model: THREE.Object3D, eyeBoneNames?: {
2387
2389
  right: string[];
2388
2390
  }): 'forward' | 'backward' | 'unknown';
2389
2391
 
2390
- export { type AUInfo, AU_INFO, AU_MIX_DEFAULTS, AU_TO_MORPHS, type AnalyzeModelOptions, type Animation, type AnimationActionHandle, type AnimationAnalysis, type AnimationClipInfo, type AnimationInfo, type AnimationPlayOptions, 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$1 as 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 };
2392
+ export { type AUInfo, type AUSelector, AU_INFO, AU_MIX_DEFAULTS, AU_TO_MORPHS, type AnalyzeModelOptions, type Animation, type AnimationActionHandle, type AnimationAnalysis, type AnimationClipInfo, type AnimationInfo, type AnimationPlayOptions, 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$1 as 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 };
package/dist/index.d.ts CHANGED
@@ -374,14 +374,16 @@ interface BoneBinding {
374
374
  /** Optional side hint for balance-aware AUs. */
375
375
  side?: 'left' | 'right';
376
376
  }
377
+ /** A single AU id or a grouped list of AU ids that share one semantic direction. */
378
+ type AUSelector = number | number[];
377
379
  /**
378
380
  * RotationAxis - Defines which AUs control a specific rotation axis
379
381
  */
380
382
  interface RotationAxis {
381
383
  aus: number[];
382
384
  axis: 'rx' | 'ry' | 'rz';
383
- negative?: number;
384
- positive?: number;
385
+ negative?: AUSelector;
386
+ positive?: AUSelector;
385
387
  }
386
388
  /**
387
389
  * CompositeRotation - Defines unified rotation axes for bones
@@ -658,8 +660,19 @@ interface Profile {
658
660
  rightMorphSuffixes?: string[];
659
661
  /** Morph category to mesh names (e.g., 'face' → ['CC_Base_Body_1']) */
660
662
  morphToMesh: Record<string, string[]>;
663
+ /**
664
+ * Optional map from AU `facePart` labels (from `auInfo`) to `morphToMesh` categories.
665
+ * This makes AU mesh routing fully preset/profile configurable.
666
+ * Example: { Eye: 'eye', Eyes: 'eye', Eyelids: 'eye', Tongue: 'tongue' }.
667
+ */
668
+ auFacePartToMeshCategory?: Record<string, string>;
661
669
  /** Viseme targets in order (typically 15 phoneme positions) */
662
670
  visemeKeys: MorphTargetRef[];
671
+ /**
672
+ * Optional `morphToMesh` category to use for viseme morph routing.
673
+ * Falls back to `morphToMesh.viseme` (if present), then `morphToMesh.face`.
674
+ */
675
+ visemeMeshCategory?: string;
663
676
  /** Optional: Jaw opening amounts per viseme index (0-1). Used for auto-generating jaw rotation in clips. */
664
677
  visemeJawAmounts?: number[];
665
678
  /** Optional: Default mix weights for bone/morph blending (0 = morph only, 1 = bone only) */
@@ -1516,9 +1529,10 @@ declare class Loom3 implements LoomLarge {
1516
1529
  getProfile(): Profile;
1517
1530
  /**
1518
1531
  * Get the mesh names that should receive morph influences for a given AU.
1519
- * Routes by facePart: Tongue tongue, Eye → eye, everything else → face.
1532
+ * Routing is driven by `auFacePartToMeshCategory` in profile config.
1520
1533
  */
1521
1534
  getMeshNamesForAU(auId: number): string[];
1535
+ getMeshNamesForViseme(): string[];
1522
1536
  registerHairObjects(objects: Object3D[]): Array<{
1523
1537
  name: string;
1524
1538
  isMesh: boolean;
@@ -1571,6 +1585,9 @@ declare class Loom3 implements LoomLarge {
1571
1585
  private getMorphKeyCacheKey;
1572
1586
  private getMorphIndexCacheKey;
1573
1587
  private isMixedAU;
1588
+ private getEffectiveBoneAUValue;
1589
+ private getCompositeAxisValueForNode;
1590
+ private getCompositeAxisBindingForNode;
1574
1591
  private initBoneRotations;
1575
1592
  /** Update rotation state - just stores -1 to 1 value like stable version */
1576
1593
  private updateBoneRotation;
@@ -2031,23 +2048,24 @@ declare class HairPhysics {
2031
2048
  reset(): void;
2032
2049
  }
2033
2050
 
2034
- /**
2035
- * Loom3 - Mapping Corrections
2036
- *
2037
- * Attempts to generate a corrected mapping configuration using fuzzy matching.
2038
- * This is a best-effort helper that can be layered on top of validation.
2039
- */
2040
-
2041
- interface MorphMesh$1 {
2051
+ interface ValidationMorphMesh {
2042
2052
  name: string;
2043
2053
  morphTargetDictionary?: Record<string, number>;
2044
2054
  morphTargetInfluences?: number[];
2045
2055
  }
2046
- interface Skeleton$1 {
2056
+ interface ValidationSkeleton {
2047
2057
  bones: Array<{
2048
2058
  name: string;
2049
2059
  }>;
2050
2060
  }
2061
+
2062
+ /**
2063
+ * Loom3 - Mapping Corrections
2064
+ *
2065
+ * Attempts to generate a corrected mapping configuration using fuzzy matching.
2066
+ * This is a best-effort helper that can be layered on top of validation.
2067
+ */
2068
+
2051
2069
  interface MappingCorrection {
2052
2070
  type: 'bone' | 'morph' | 'viseme' | 'mesh';
2053
2071
  source: string;
@@ -2071,7 +2089,7 @@ interface MappingCorrectionOptions {
2071
2089
  */
2072
2090
  useResolvedNames?: boolean;
2073
2091
  }
2074
- declare function generateMappingCorrections(meshes: MorphMesh$1[], skeleton: Skeleton$1 | null, config: Profile, options?: MappingCorrectionOptions): MappingCorrectionResult;
2092
+ declare function generateMappingCorrections(meshes: ValidationMorphMesh[], skeleton: ValidationSkeleton | null, config: Profile, options?: MappingCorrectionOptions): MappingCorrectionResult;
2075
2093
 
2076
2094
  /**
2077
2095
  * Loom3 - Mapping Validation
@@ -2131,36 +2149,20 @@ interface MappingConsistencyResult {
2131
2149
  interface ValidateMappingOptions extends MappingCorrectionOptions {
2132
2150
  suggestCorrections?: boolean;
2133
2151
  }
2134
- /**
2135
- * Interface for mesh with morph targets (compatible with Three.js Mesh)
2136
- */
2137
- interface MorphMesh {
2138
- name: string;
2139
- morphTargetDictionary?: Record<string, number>;
2140
- morphTargetInfluences?: number[];
2141
- }
2142
- /**
2143
- * Interface for skeleton (compatible with Three.js Skeleton)
2144
- */
2145
- interface Skeleton {
2146
- bones: Array<{
2147
- name: string;
2148
- }>;
2149
- }
2150
2152
  /**
2151
2153
  * Validate that the mapping dictionaries are internally consistent.
2152
2154
  */
2153
2155
  declare function validateMappingConfig(config: Profile): MappingConsistencyResult;
2154
- declare function validateMappings(meshes: MorphMesh[], skeleton: Skeleton | null, config: Profile, options?: ValidateMappingOptions): ValidationResult;
2156
+ declare function validateMappings(meshes: ValidationMorphMesh[], skeleton: ValidationSkeleton | null, config: Profile, options?: ValidateMappingOptions): ValidationResult;
2155
2157
  /**
2156
2158
  * Quick check if a preset is compatible with a model.
2157
2159
  * Returns true if at least 50% of mappings are found.
2158
2160
  */
2159
- declare function isPresetCompatible(meshes: MorphMesh[], skeleton: Skeleton | null, config: Profile): boolean;
2161
+ declare function isPresetCompatible(meshes: ValidationMorphMesh[], skeleton: ValidationSkeleton | null, config: Profile): boolean;
2160
2162
  /**
2161
2163
  * Suggest the best preset from a list based on validation scores.
2162
2164
  */
2163
- declare function suggestBestPreset<T extends Profile>(meshes: MorphMesh[], skeleton: Skeleton | null, presets: T[]): {
2165
+ declare function suggestBestPreset<T extends Profile>(meshes: ValidationMorphMesh[], skeleton: ValidationSkeleton | null, presets: T[]): {
2164
2166
  preset: T;
2165
2167
  score: number;
2166
2168
  } | null;
@@ -2387,4 +2389,4 @@ declare function detectFacingDirection(model: THREE.Object3D, eyeBoneNames?: {
2387
2389
  right: string[];
2388
2390
  }): 'forward' | 'backward' | 'unknown';
2389
2391
 
2390
- export { type AUInfo, AU_INFO, AU_MIX_DEFAULTS, AU_TO_MORPHS, type AnalyzeModelOptions, type Animation, type AnimationActionHandle, type AnimationAnalysis, type AnimationClipInfo, type AnimationInfo, type AnimationPlayOptions, 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$1 as 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 };
2392
+ export { type AUInfo, type AUSelector, AU_INFO, AU_MIX_DEFAULTS, AU_TO_MORPHS, type AnalyzeModelOptions, type Animation, type AnimationActionHandle, type AnimationAnalysis, type AnimationClipInfo, type AnimationInfo, type AnimationPlayOptions, 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$1 as 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 };