import { AppObject, AppObjectEntity, AppObjectRepo, EaseFn } from "@vived/core";
import { Matrix, Quaternion, Vector3 } from "@vived/core";
export interface TransformLerpDTO {
    durationMS: number;
    ease: EaseFn;
    desiredPosition?: Vector3;
    desiredRotation?: Quaternion;
    desiredScale?: Vector3;
    onCompletedCallback?: () => void;
}
export declare abstract class Transform3D extends AppObjectEntity {
    static readonly type = "TRANSFORM_3D";
    static addIfMissing(appObj: AppObject): Transform3D;
    static get(appObj: AppObject): Transform3D | undefined;
    static getByID(id: string, appObjects: AppObjectRepo): Transform3D | undefined;
    abstract parent: Transform3D | undefined;
    abstract localMatrix: Matrix;
    abstract worldMatrix: Matrix;
    abstract localPosition: Vector3;
    abstract worldPosition: Vector3;
    abstract localScale: Vector3;
    abstract worldScale: Vector3;
    abstract localRotation: Quaternion;
    abstract worldRotation: Quaternion;
    abstract localPointToWorld(point: Vector3): Vector3;
    abstract worldPointToLocal(point: Vector3): Vector3;
    abstract localDirectionToWorld(point: Vector3): Vector3;
    abstract worldDirectionToLocal(point: Vector3): Vector3;
    abstract lerp(dto: TransformLerpDTO): void;
    abstract cancelLerp(): void;
}
export declare function makeTransform3D(appObject: AppObject): Transform3D;
//# sourceMappingURL=Transform3D.d.ts.map