/**
 * Base avatar class, provides common methods for actual humanoid/video/mesh avatars
 * @abstract
 */
export class Avatar {
    /** Whether to display the name above the head, default true
     * @static*/
    static displayName: boolean;
    /** Should written/spoken text be displayed above the head, default true
     * @static*/
    static displayText: boolean;
    /** Should we use 3d text (as opposed to Label and TextArea) - performance penalty
     * @static  */
    static use3dText: boolean;
    /**
    @param scene
    @param folder ServerFolder with the content
    @param shadowGenerator optional to cast shadows
     */
    constructor(scene: any);
    scene: any;
    /** Name of the avatar/user */
    name: any;
    /** Height of the user, default 1.8 */
    userHeight: number;
    /** Distance for text above the avatar */
    textOffset: number;
    humanoid: boolean;
    video: boolean;
    /** Original root mesh of the avatar, used to scale the avatar */
    /** Whether to display the name above the head, defaults to value of static displayName */
    displayName: any;
    /** Should written/spoken text be displayed above the head, defaults to value of static displayText */
    displayText: any;
    /** Should 3d text be used for name/spoken text, defaults to value of static use3dText */
    use3dText: any;
    writer: TextWriter;
    nameLabel: Label;
    emojiParticleSystem: EmojiParticleSystem;
    /** Custom nodes to be disposed when this avatar is disposed */
    attachments: {};
    /**
    Set the name and display it above the avatar
    @param name
    */
    setName(name: any): Promise<void>;
    processText(text: any, limit: any, lines?: any[]): any[];
    /**
     * Write locally generated text, used internally
     * @param wrote text to write above the head
     */
    write(wrote: any): Promise<void>;
    textArea: TextArea;
    /**
     * Remote event routed by WorldManager, displays whatever user wrote above avatar's head
     * @param client Client that wrote a text
     */
    wrote(client: any): Promise<void>;
    /** Remote emoji event routed by WorldManager */
    emoji(client: any, direction?: number): Promise<void>;
    /** Returns the URL of the avatar file */
    getUrl(): void;
    /** Returns the top-level mesh of the avatar */
    baseMesh(): void;
    /** Returns the current base position of the avatar, e.g. where the feet are */
    basePosition(): void;
    /** Position of top of the avatar, default implementation returns basePosition()+topPositionRelative() */
    topPositionAbsolute(): any;
    /** Position of top of the avatar, default implementation returns userHeight Vector3 */
    topPositionRelative(): any;
    /** Position of text above the avatar, default implementation returns topPositionRelative()+textOffset */
    textPositionRelative(): any;
    /** Add an attachment to the attachment object */
    attach(name: any, node: any): void;
    /** Delete an attachment, does not dispose */
    detach(name: any): void;
    /**
     * Shortcut for this.attachments.hasOwnProperty(name)
     */
    containsAttachment(name: any): boolean;
    /** Disposes of all attachments */
    dispose(): void;
}
import { TextWriter } from '../core/text-writer.js';
import { Label } from '../ui/widget/label.js';
import { EmojiParticleSystem } from '../ui/world/emoji-particle-system.js';
import { TextArea } from '../ui/widget/text-area.js';
