import { FC, CSSProperties, ReactNode, Ref } from 'react'; import { CameraProps, EnvironmentProps, BaseModelProps, LightingProps, BloomConfiguration } from './src/types'; import { CaptureType } from 'src/components/Capture/Capture.component'; import { VisemeEvent as VisemeEvent$1 } from 'src/components/Avatar/Avatar.component'; import { Vector3, Group } from 'three'; import { Dpr } from '@react-three/fiber'; import { Background } from 'src/components/Background/Box/Box.component'; interface ExhibitProps extends CameraProps, EnvironmentProps, Omit { /** * Arbitrary binary data (base64 string | Blob) of a `.glb` file or path (URL) to a `.glb` resource. */ modelSrc: string | Blob; /** * Size of the rendered GLB model. */ scale?: number; /** * Pass styling to canvas. */ style?: CSSProperties; /** * Custom style classes for canvas. */ className?: string; /** * Enables soft shadows. */ shadows?: boolean; /** * Enables floating idle animation. */ float?: boolean; /** * Enables model to fit to available canvas dimensions. */ fit?: boolean; /** * Return base64 image after making screenshot of the canvas. */ capture?: CaptureType; /** * Enables snap-back to center after rotating model. */ snap?: boolean; /** * Disables vertical rotation. */ lockVertical?: boolean; } /** * Interactive presentation of any GLTF (.glb) asset. */ declare const Exhibit: FC; interface FloatingModelProps extends BaseModelProps { modelSrc: string | Blob; scale?: number; } /** * Contains model to handle suspense fallback. */ declare const FloatingModelContainer: FC; interface AnimationModelProps extends BaseModelProps { modelSrc: string | Blob; animationSrc: string | Blob; rotation?: number; scale?: number; idleRotation?: boolean; headMovement?: boolean; lookAtCamera?: boolean; audioTime?: number; visemeTS?: VisemeEvent$1[]; finishedCallback?: () => void; } /** * Contains model to handle suspense fallback. */ declare const AnimationModelContainer: FC; declare const CAMERA: { TARGET: { FULL_BODY: { MALE: number; FEMALE: number; }; HALF_BODY: number; }; INITIAL_DISTANCE: { FULL_BODY: number; HALF_BODY: number; }; CONTROLS: { FULL_BODY: { MIN_DISTANCE: number; MAX_DISTANCE: number; ZOOM_TARGET: Vector3; }; HALF_BODY: { MIN_DISTANCE: number; MAX_DISTANCE: number; ZOOM_TARGET: Vector3; }; }; }; type Emotion = Record; type VisemeEvent = { start: number; end: number; type: 'viseme'; value: string; }; interface AvatarProps extends LightingProps, EnvironmentProps, Omit { /** * Arbitrary binary data (base64 string, Blob) of a `.glb` file or path (URL) to a `.glb` resource. */ modelSrc: string | Blob; /** * Arbitrary binary data (base64 string, Blob) of a `.glb` file or path (URL) to a `.glb` resource. * The animation will be run for the 3D model provided in `modelSrc`. */ animationSrc?: string | Blob; /** * Arbitrary binary data (base64 string, Blob) or a path (URL) to `.glb` file which will be used to map Bone placements onto the underlying 3D model. * Applied when not specifying an animation. */ poseSrc?: string | Blob; halfBody?: boolean; /** * Enable rendering shadows on ground. */ shadows?: boolean; /** * Size of the rendered GLB model. */ scale?: number; /** * Camera target on Y-axis. */ cameraTarget?: number; /** * Initial Z-axis distance from the object upon render. */ cameraInitialDistance?: number; /** * Apply styling to canvas DOM element. */ style?: CSSProperties; /** * Applies an idle rotation to the animated and half-body models. */ idleRotation?: boolean; /** * Applies a face emotion of the model. */ emotion?: Emotion; /** * Applies Box background in the scene with a provided image. * Make sure that image is loadable to prevent bg errors. */ background?: Background; /** * Return base64 image after making screenshot of the canvas. */ capture?: CaptureType; /** * Pass custom fallback component. */ loader?: ReactNode; /** * Device Pixel Ratio. */ dpr?: Dpr; /** * Custom style classes for canvas. */ className?: string; /** * Enable head tracking cursor movements. */ headMovement?: boolean; /** * Initialise and update camera movement on Z-Axis. * Defaults to full-body zoom distance. */ cameraZoomTarget?: Vector3; /** * Bloom post-processing effect. */ bloom?: BloomConfiguration; /** * curent Audio() play time in seconds */ audioTime?: number; /** * Time series of visemes */ visemeTS?: VisemeEvent[]; backgroundTextureSrc?: string; lookAtCamera?: boolean; fill?: boolean; finishedCallback?: () => void; } /** * Interactive avatar presentation with zooming and horizontal rotation controls. * Optimised for full-body and half-body avatars. */ declare const Avatar: FC; interface HalfBodyModelProps extends BaseModelProps { modelSrc: string | Blob; rotation?: number; scale?: number; idleRotation?: boolean; emotion?: Emotion; headMovement?: boolean; } /** * Contains model to handle suspense fallback. */ declare const HalfBodyModelContainer: FC; interface StaticModelProps extends BaseModelProps { modelSrc: string | Blob; modelRef?: Ref; scale?: number; emotion?: Emotion; } /** * Contains model to handle suspense fallback. */ declare const StaticModelContainer: FC; interface PoseModelProps extends BaseModelProps { modelSrc: string | Blob; poseSrc: string | Blob; modelRef?: Ref; scale?: number; emotion?: Emotion; } /** * Contains model to handle suspense fallback. */ declare const PoseModelContainer: FC; export { AnimationModelContainer as AnimationModel, Avatar, CAMERA, Exhibit, FloatingModelContainer as FloatingModel, HalfBodyModelContainer as HalfBodyModel, PoseModelContainer as PoseModel, StaticModelContainer as StaticModel };