import { Object3D, Vector3 } from "three"; import { Object3DSoAoA } from "./Types"; export declare const _addedEvent: { type: string; }; export declare const _removedEvent: { type: string; }; export declare type Constructor = { new (...args: any[]): T; } & S; declare type IObject3DProps = { store: Object3DSoAoA; eid: number; parent: IObject3DEntity | null; children: IObject3DEntity[]; isObject3DEntity: true; add(child: IObject3DEntity): IObject3DEntity; remove(child: IObject3DEntity): IObject3DEntity; removeFromParent(): IObject3DEntity; attach(object: IObject3DEntity): IObject3DEntity; clear(): IObject3DEntity; getObjectById(id: number): IObject3DEntity | undefined; getObjectByName(name: string): IObject3DEntity | undefined; getObjectByProperty(name: string, value: string): IObject3DEntity | undefined; traverse(callback: (object: IObject3DEntity) => any): void; traverseVisible(callback: (object: IObject3DEntity) => any): void; traverseAncestors(callback: (object: IObject3DEntity) => any): void; copy(source: IObject3DEntity, recursive?: boolean): IObject3DEntity; clone(recursive?: boolean): IObject3DEntity; }; export declare type IObject3DEntity = Omit | keyof O> & IObject3DProps & O; export interface IObject3DStaticProps { DefaultUp: Vector3; DefaultMatrixAutoUpdate: boolean; } export declare const Object3DEntityMixin: , O extends object = {}, R extends IObject3DEntity = IObject3DEntity, S extends IObject3DStaticProps = IObject3DStaticProps>(Base: new (...args: any[]) => T) => Constructor; export {};