import { FC, CSSProperties, ReactNode } from 'react'; import { Vector3 } from 'three'; import { LightingProps, BaseModelProps, EnvironmentProps, BloomConfiguration } from 'src/types'; import { Dpr } from '@react-three/fiber'; import { CaptureType } from 'src/components/Capture/Capture.component'; import { Background } from 'src/components/Background/Box/Box.component'; export 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; }; }; }; export type Emotion = Record; export type VisemeEvent = { start: number; end: number; type: 'viseme'; value: string; }; export 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. */ export declare const Avatar: FC;