import { AnimationClip, Group, Object3D, Vector3 } from "three";
import { CameraManager } from "../camera/CameraManager";
import { EulXYZ } from "../math/EulXYZ";
import { Vect3 } from "../math/Vect3";
import { Composer } from "../rendering/composer";
import { AnimationState } from "./CharacterState";
import { CharacterTooltip } from "./CharacterTooltip";
import { CharacterModelLoader } from "./loading/CharacterModelLoader";
export type AnimationConfig = {
    idleAnimationFileUrl: string;
    jogAnimationFileUrl: string;
    sprintAnimationFileUrl: string;
    airAnimationFileUrl: string;
    doubleJumpAnimationFileUrl: string;
};
export type LoadedAnimations = {
    idleAnimation: AnimationClip;
    jogAnimation: AnimationClip;
    sprintAnimation: AnimationClip;
    airAnimation: AnimationClip;
    doubleJumpAnimation: AnimationClip;
};
export type CharacterDescription = {
    meshFileUrl: string;
    mmlCharacterString?: null;
    mmlCharacterUrl?: null;
} | {
    meshFileUrl?: null;
    mmlCharacterString: string;
    mmlCharacterUrl?: null;
} | {
    meshFileUrl?: null;
    mmlCharacterString?: null;
    mmlCharacterUrl: string;
};
export type CharacterConfig = {
    username: string;
    characterDescription: CharacterDescription | null;
    animationsPromise: Promise<LoadedAnimations>;
    characterModelLoader: CharacterModelLoader;
    characterId: number;
    modelLoadedCallback: () => void;
    modelLoadFailedCallback?: (error: Error) => void;
    cameraManager: CameraManager;
    composer: Composer;
    isLocal: boolean;
    abortController?: AbortController;
};
export declare class Character extends Group {
    private config;
    private model;
    usernameTooltip: CharacterTooltip;
    chatTooltips: CharacterTooltip[];
    constructor(config: CharacterConfig);
    getColors(): Array<[number, number, number]>;
    updateCharacter(username: string, characterDescription: CharacterDescription | null, abortController: AbortController, onModelLoaded: () => void, onModelLoadFailed: (error: Error) => void): void;
    private setTooltipHeights;
    static loadAnimations(characterModelLoader: CharacterModelLoader, animationConfig: AnimationConfig): Promise<LoadedAnimations>;
    private load;
    updateAnimation(targetAnimation: AnimationState): void;
    update(time: number, deltaTime: number): void;
    getPosition(): Vect3;
    getRotation(): EulXYZ;
    setPosition(x: number, y: number, z: number): void;
    setRotation(x: number, y: number, z: number, w: number): void;
    getCurrentAnimation(): AnimationState;
    addChatBubble(message: string): void;
    getMesh(): Object3D | null;
    getHeadWorldPosition(): Vector3 | null;
    dispose(): void;
}
//# sourceMappingURL=Character.d.ts.map