import { IGeometry, ILight, IMaterial, IMaterialEventMap, IObject3D, IObject3DEventMap, ITexture } from '../core';
import { IObjectExtension } from '../core/IObject';
import { EventDispatcher, VideoTexture } from 'three';
/**
 * Event map for Object3DManager events.
 */
export interface Object3DManagerEventMap {
    'videoAdd': {
        video: VideoTexture & ITexture;
    };
    'videoRemove': {
        video: VideoTexture & ITexture;
    };
    'objectAdd': {
        object: IObject3D;
    };
    'objectRemove': {
        object: IObject3D;
    };
    'materialAdd': {
        material: IMaterial;
    };
    'materialRemove': {
        material: IMaterial;
    };
    'geometryAdd': {
        geometry: IGeometry;
    };
    'geometryRemove': {
        geometry: IGeometry;
    };
    'textureAdd': {
        texture: ITexture;
    };
    'textureRemove': {
        texture: ITexture;
    };
    'lightAdd': {
        light: ILight;
    };
    'lightRemove': {
        light: ILight;
    };
    'dispose': object;
}
/**
 * Manages 3D objects, materials, geometries, textures, and videos in a scene.
 */
export declare class Object3DManager extends EventDispatcher<Object3DManagerEventMap> {
    private _root;
    private _objects;
    private _objectExtensions;
    private _materials;
    private _geometries;
    private _textures;
    private _videos;
    private _lights;
    autoDisposeTextures: boolean;
    autoDisposeMaterials: boolean;
    autoDisposeGeometries: boolean;
    autoDisposeObjects: boolean;
    constructor();
    onPostFrame(timeline: {
        time: number;
        running: boolean;
    }): void;
    setRoot(root: IObject3D): void;
    registerObject(obj: IObject3D): void;
    unregisterObject(obj: IObject3D): boolean;
    registerObjectExtension(ext: IObjectExtension): void;
    unregisterObjectExtension(ext: IObjectExtension): void;
    private _rootChanged;
    private _materialChanged;
    private _geometryChanged;
    private _registerMaterials;
    private _unregisterMaterials;
    private _registerMaterial;
    private _unregisterMaterial;
    private _texturesChanged;
    private _textureChanged;
    private _registerGeometry;
    private _unregisterGeometry;
    private _registerTexture;
    private _unregisterTexture;
    private _registerVideo;
    findObject(nameOrUuid: string): IObject3D | undefined;
    findObjectsByName(name: string): IObject3D[];
    findMaterial(nameOrUuid: string): IMaterial | undefined;
    findMaterialsByName(name: string): IMaterial[];
    dispose(): void;
    static readonly MaterialTextureProperties: Set<string>;
    static readonly MaterialTexturePropertiesUserData: Set<string>;
    static readonly SceneTextureProperties: Set<string>;
    static readonly Object3DTextureProperties: Set<string>;
    getObjects(): IObject3D<IObject3DEventMap, IGeometry<import('three').NormalBufferAttributes, import('three').BufferGeometryEventMap> | undefined, IMaterial<IMaterialEventMap> | IMaterial<IMaterialEventMap>[] | undefined>[];
    getObject(uuid: string): IObject3D<IObject3DEventMap, IGeometry<import('three').NormalBufferAttributes, import('three').BufferGeometryEventMap> | undefined, IMaterial<IMaterialEventMap> | IMaterial<IMaterialEventMap>[] | undefined> | undefined;
    getObjectExtensions(): IObjectExtension[];
    getMaterials(): IMaterial<IMaterialEventMap>[];
    getMaterial(uuid: string): IMaterial<IMaterialEventMap> | undefined;
    getGeometries(): IGeometry<import('three').NormalBufferAttributes, import('three').BufferGeometryEventMap>[];
    getGeometry(uuid: string): IGeometry<import('three').NormalBufferAttributes, import('three').BufferGeometryEventMap> | undefined;
    getTextures(): ITexture<import('three').TextureEventMap>[];
    getTexture(uuid: string): ITexture<import('three').TextureEventMap> | undefined;
    getVideos(): (VideoTexture & ITexture<import('three').TextureEventMap>)[];
    getVideo(uuid: string): (VideoTexture & ITexture<import('three').TextureEventMap>) | undefined;
    getLights(): ILight<import('three').LightShadow<import('three').Camera<import('three').Object3DEventMap>> | undefined, IObject3DEventMap>[];
    getLight(uuid: string): ILight<import('three').LightShadow<import('three').Camera<import('three').Object3DEventMap>> | undefined, IObject3DEventMap> | undefined;
}
declare module 'three' {
    interface VideoTexture {
        _playid?: number;
    }
}
//# sourceMappingURL=../src/assetmanager/Object3DManager.d.ts.map