import React, { RefObject } from 'react'; import { AnimationConfigMap, AnimationType } from '../../types/animation'; import * as THREE from 'three'; /** * Props for the PreviewCharacter component */ interface CharacterRendererProps { /** Determines whether the character model is displayed on the screen. * @defaultValue `true` */ visible?: boolean; /** Character resource containing model and animation information */ /** Model path (file path or URL) */ url: string; /** Animation configuration map */ animationConfigMap: AnimationConfigMap; /** Reference to the current character action */ currentAnimationRef: RefObject; /** Target height for the character model */ targetHeight?: number; /** If true, animation won't be adjusted to fit the model's body proportion */ disableAnimationAdjustmentToModelProportion?: boolean; /** Optional callback for when an animation completes */ onAnimationComplete?: (type: AnimationType) => void; /** Optional callback for when size information changes */ onSizeChange?: (boundingBox: THREE.Box3) => void; /** Optional fallback component for Suspense */ fallback?: React.ReactNode; } /** * 3D Character component for animation preview * * This component handles the character animation state management and rendering. * It configures different animations based on the current action and passes them * to the CharacterRenderer component. * * Features: * - Animation configuration for different character actions * - Animation completion callbacks * - Support for looping and non-looping animations * - Support for both VRM and GLB/GLTF models * * @component */ export declare const CharacterRenderer: ({ visible, url, animationConfigMap, currentAnimationRef, targetHeight, disableAnimationAdjustmentToModelProportion, onAnimationComplete, onSizeChange, fallback, }: CharacterRendererProps) => import("react/jsx-runtime").JSX.Element; export {};