import { Object3D } from 'three';
import { IObject3D, IObject3DEventMap, IObject3DUserData } from '../IObject';
export declare class Object3D2<TE extends IObject3DEventMap = IObject3DEventMap> extends Object3D<TE> implements IObject3D<TE> {
    assetType: "model";
    setDirty: (this: IObject3D, options?: import('../IObject').IObjectSetDirtyOptions, ...args: any[]) => void;
    refreshUi: (this: IObject3D) => void;
    /**
     * @deprecated use `this` instead
     */
    get modelObject(): this;
    constructor();
    userData: IObject3DUserData;
    traverse: (callback: (object: IObject3D) => void) => void;
    traverseVisible: (callback: (object: IObject3D) => void) => void;
    traverseAncestors: (callback: (object: IObject3D) => void) => void;
    getObjectById: <T extends IObject3D = IObject3D>(id: number) => T | undefined;
    getObjectByName: <T extends IObject3D = IObject3D>(name: string) => T | undefined;
    getObjectByProperty: <T extends IObject3D = IObject3D>(name: string, value: string) => T | undefined;
    copy: (source: Object3D2 | IObject3D, recursive?: boolean, ...args: any[]) => this;
    clone: (recursive?: boolean) => this;
    remove: (...object: IObject3D[]) => this;
    parent: IObject3D | null;
    children: IObject3D[];
    dispose: (removeFromParent?: boolean) => void;
}
//# sourceMappingURL=Object3D2.d.ts.map