import { SceneNode, type SceneNodeOptions } from "./SceneNode.js";
import { Renderable, type RenderableDescriptor } from "./Renderable.js";
import type { Mat4, Quat, Vec3 } from "./MathTypes.js";
export interface Object3DOptions extends SceneNodeOptions {
    readonly visible?: boolean;
    readonly layerMask?: number;
    readonly renderOrder?: number;
    readonly userData?: Record<string, unknown>;
}
export declare class Object3D extends SceneNode {
    readonly isObject3D = true;
    constructor(options?: Object3DOptions);
    get position(): Vec3;
    get quaternion(): Quat;
    get scale(): Vec3;
    get matrix(): Mat4;
    get matrixWorld(): Mat4;
    get matrixAutoUpdate(): boolean;
    set matrixAutoUpdate(enabled: boolean);
    setLocalMatrix(matrix: Mat4, options?: {
        readonly decompose?: boolean;
        readonly matrixAutoUpdate?: boolean;
    }): this;
}
export declare class Group extends Object3D {
    readonly isGroup = true;
}
export interface MeshOptions extends Object3DOptions {
    readonly renderable?: Renderable | RenderableDescriptor;
}
export declare class Mesh extends Object3D {
    readonly isMesh = true;
    constructor(options?: MeshOptions);
    setRenderable(renderable: Renderable | RenderableDescriptor): this;
}
export declare class SkinnedMesh extends Mesh {
    readonly isSkinnedMesh = true;
    get skinning(): Renderable["skinning"] | undefined;
    setSkinning(skinning: NonNullable<Renderable["skinning"]>): this;
}
export declare class InstancedMesh extends Mesh {
    readonly isInstancedMesh = true;
    get instanceTransforms(): Float32Array | undefined;
    get instanceColors(): Float32Array | undefined;
    setInstanceTransforms(transforms: Float32Array | readonly number[]): this;
    setInstanceColors(colors: Float32Array | readonly number[]): this;
}
//# sourceMappingURL=Object3D.d.ts.map