import { AppObject, AppObjectEntity, AppObjectRepo, EaseFn } from "@vived/core";
import { Quaternion, Vector3 } from "@vived/core";
import { Transform3D } from "../../Transform3D";
export interface DefaultSceneRootData {
    position: [number, number, number];
    rotation: [number, number, number, number];
    scale: number;
    minScale: number;
    maxScale: number;
}
export declare abstract class SceneRootEntity extends AppObjectEntity {
    static readonly type = "SCENE_ROOT_ENTITY";
    abstract defaultPosition: Vector3;
    abstract defaultRotation: Quaternion;
    abstract defaultScale: number;
    abstract minScale: number;
    abstract maxScale: number;
    abstract position: Vector3;
    abstract rotation: Quaternion;
    abstract scale: number;
    abstract readonly transform: Transform3D;
    abstract applyDefaultData: (data: DefaultSceneRootData) => void;
    abstract centerOnPoint: (point: Vector3, durationMS: number, easeFn: EaseFn, onCompleted?: () => void) => void;
    abstract lerpToDefault: (durationMS: number, easeFn: EaseFn, onCompleted?: () => void) => void;
    abstract bumpScaleAboutPoint: (amount: number, worldPoint: Vector3) => void;
    static get: (appObjects: AppObjectRepo) => SceneRootEntity | undefined;
}
export declare function makeSceneRootEntity(appObj: AppObject): SceneRootEntity;
//# sourceMappingURL=SceneRootEntity.d.ts.map