import { Destroyable, Event, ReactivePropsToNativePropsAndChanged } from "vtxf-xe2/dist-node/xe2-base-utils";
import { SceneObjectKey } from "vtxf-xe2/dist-node/xe2-utils";
import { Property } from "../props";
import { Viewer } from "../Viewers";
import { SceneObject } from "./SceneObject";
/**
 * https://www.wolai.com/earthsdk/kyeipxCRfsFm5MAqAdfBbv
 */
export declare abstract class ESSceneObject extends SceneObject {
    private _viewerAttched;
    get viewerAttched(): Event<[Viewer]>;
    private _viewerDetached;
    get viewerDetached(): Event<[Viewer]>;
    private _viewerTagsChangedEvent;
    get viewerTagsChanged(): Event<[viewerTags: string[] | undefined, oldViewerTags: string[] | undefined]>;
    get viewerTags(): string[] | undefined;
    /**
     * 不带_ES_Viewer_前缀的，会自动增加上前缀
     * @example
     * xxx.viewerTags = ['0', '1']
     * // 相当于
     * xxx.viewerTags = ['_ES_Viewer_0', '_ES_Viewer_1']
     */
    set viewerTags(value: string[] | undefined);
    addViewerTag(...devTags: string[]): void;
    deleteViewerTag(...devTags: string[]): void;
    registerAttachedObject(createViewerPropSceneObject: (viewer: Viewer) => Destroyable | undefined): void;
    private _attachedViewers;
    get attachedViewers(): Set<Viewer>;
    createAttachedObject(createViewerPropSceneObject: (viewer: Viewer) => Destroyable | undefined): () => void;
    /**
     * https://www.wolai.com/earthsdk/kyeipxCRfsFm5MAqAdfBbv#dTANBwN3pQ3eM4K7Y54qkz
     * @param createContainerPropSceneObject
     */
    registerAttachedObjectForContainer(createContainerPropSceneObject: (viewer: Viewer, container: HTMLDivElement) => Destroyable | undefined): void;
    private _updateFuncReact;
    get updateFunc(): ((sceneObject: ESSceneObject, timeStamp: number) => void) | undefined;
    set updateFunc(value: ((sceneObject: ESSceneObject, timeStamp: number) => void) | undefined);
    get updateFuncChanged(): import("vtxf-xe2/dist-node/xe2-base-utils").Listener<[((sceneObject: ESSceneObject, timeStamp: number) => void) | undefined, ((sceneObject: ESSceneObject, timeStamp: number) => void) | undefined]>;
    private _toDestroyFuncReact;
    get toDestroyFunc(): ((sceneObject: ESSceneObject) => void) | undefined;
    set toDestroyFunc(value: ((sceneObject: ESSceneObject) => void) | undefined);
    get toDestroyFuncChanged(): import("vtxf-xe2/dist-node/xe2-base-utils").Listener<[((sceneObject: ESSceneObject) => void) | undefined, ((sceneObject: ESSceneObject) => void) | undefined]>;
    static defaults: {
        viewerTagsEnums: [string, string][];
    };
    private _flushEvent?;
    get flushEvent(): Event<[]>;
    flush(): void;
    private _ueCreatedEvent;
    get ueCreatedEvent(): Event<[]>;
    constructor(id?: SceneObjectKey);
    getProperties(language?: string): Property[];
    /**
     * https://www.wolai.com/earthsdk/kyeipxCRfsFm5MAqAdfBbv#7McErZKP4qKYHPUwVm4Y91
     * @param elements
     * @returns
     */
    addComponent(...elements: SceneObject[]): () => void;
}
export declare namespace ESSceneObject {
    const createDefaultProps: () => {
        /**
         * https://www.wolai.com/earthsdk/kyeipxCRfsFm5MAqAdfBbv#2o98XXa25rwMXfVcVrzFK5
         */
        execOnceFuncStr: string | undefined;
        /**
         * https://www.wolai.com/earthsdk/kyeipxCRfsFm5MAqAdfBbv#c4MhaD44ALGRceBHF2kMHi
         */
        updateFuncStr: string | undefined;
        /**
         * https://www.wolai.com/earthsdk/kyeipxCRfsFm5MAqAdfBbv#eCfiPW5n215xWBxQJmHx4d
         */
        toDestroyFuncStr: string | undefined;
        name: string;
        /**
         * 不带_ES_Viewer_前缀的，会自动增加上前缀
         * @example
         * xxx.viewerTags = ['0', '1']
         * // 相当于
         * xxx.viewerTags = ['_ES_Viewer_0', '_ES_Viewer_1']
         */
        ref: string | undefined;
        devTags: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<string[] | undefined>;
        extras: import("vtxf-xe2/dist-node/xe2-base-utils").ReactiveVariable<import("vtxf-xe2/dist-node/xe2-base-utils").JsonValue>;
    };
}
export interface ESSceneObject extends ReactivePropsToNativePropsAndChanged<ReturnType<typeof ESSceneObject.createDefaultProps>> {
}
