import { RoomObject } from "../rooms/RoomObject";
import { IFloorPosition } from "../../interfaces/Furniture.interface";
import { Direction } from "../../enums/Direction";
import { AvatarAction } from "./actions/AvatarAction";
import { IAvatarConfiguration } from "../../interfaces/Avatar.interface";
import { AvatarActionManager } from "./actions/AvatarActionManager";
import { AvatarAnimationManager } from "./animations/AvatarAnimationManager";
import { InteractionManager } from "../interactions/InteractionManager";
import { IInteractionEvent } from "../../interfaces/Interaction.interface";
export declare class Avatar extends RoomObject {
    private _figure;
    private _position;
    private _bodyDirection;
    private _headDirection;
    private _actions;
    private _handItem;
    private _actionManager;
    private _animationManager;
    private _interactionManager;
    private _bodyParts;
    private areAllAssetsLoaded;
    constructor(configuration: IAvatarConfiguration);
    private _draw;
    private _createHandItem;
    private _createPlaceholder;
    private _createShadow;
    private _destroyParts;
    private _parseFigure;
    private _getParts;
    /**
     * On each animation tick
     * @private
     */
    private _onTicker;
    /**
     * Start the furniture animation
     */
    start(): void;
    /**
     * Stop the furniture animation
     */
    stop(): void;
    get pos(): IFloorPosition;
    set pos(position: IFloorPosition);
    get actions(): AvatarAction[];
    get headDirection(): Direction;
    get bodyDirection(): Direction;
    get actionManager(): AvatarActionManager;
    get animationManager(): AvatarAnimationManager;
    get interactionManager(): InteractionManager;
    get onPointerDown(): (event: IInteractionEvent) => void;
    set onPointerDown(value: (event: IInteractionEvent) => void);
    get onPointerUp(): (event: IInteractionEvent) => void;
    set onPointerUp(value: (event: IInteractionEvent) => void);
    get onPointerMove(): (event: IInteractionEvent) => void;
    set onPointerMove(value: (event: IInteractionEvent) => void);
    get onPointerOut(): (event: IInteractionEvent) => void;
    set onPointerOut(value: (event: IInteractionEvent) => void);
    get onPointerOver(): (event: IInteractionEvent) => void;
    set onPointerOver(value: (event: IInteractionEvent) => void);
    get onDoubleClick(): (event: IInteractionEvent) => void;
    set onDoubleClick(value: (event: IInteractionEvent) => void);
}
