import { Nullable } from "../../types";
type YesNoMeshes = {
    yes: BABYLON.AbstractMesh[];
    no: BABYLON.AbstractMesh[];
};
export type SceneSelectableElement = BABYLON.AbstractMesh | BABYLON.SubMesh | BABYLON.Material | BABYLON.Light | BABYLON.Camera | Zakeke.SceneCameraLocation;
type YesNoElements = {
    yes: SceneSelectableElement[];
    no: SceneSelectableElement[];
};
export declare class ElementSelector {
    constructor();
    private getSubmeshIdx;
    private getRegExp;
    getElements(zkScene: Zakeke.Scene, scene: BABYLON.Scene, filter: Nullable<string[]>, expression: string, type: MPlaza.SceneElementType): SceneSelectableElement[];
    getMeshElements(zkScene: Zakeke.Scene, scene: BABYLON.Scene, filter: Nullable<string[]>, expression: string, type: MPlaza.SceneElementType): BABYLON.AbstractMesh[];
    getSubMeshElements(zkScene: Zakeke.Scene, scene: BABYLON.Scene, filter: Nullable<string[]>, expression: string, type: MPlaza.SceneElementType): BABYLON.SubMesh[];
    getMaterialElements(zkScene: Zakeke.Scene, scene: BABYLON.Scene, filter: Nullable<string[]>, expression: string, type: MPlaza.SceneElementType): BABYLON.Material[];
    getLightElements(zkScene: Zakeke.Scene, scene: BABYLON.Scene, filter: Nullable<string[]>, expression: string, type: MPlaza.SceneElementType): BABYLON.Light[];
    getCameraElements(zkScene: Zakeke.Scene, scene: BABYLON.Scene, filter: Nullable<string[]>, expression: string, type: MPlaza.SceneElementType): BABYLON.Camera[];
    getCameraLocationElements(zkScene: Zakeke.Scene, scene: BABYLON.Scene, filter: Nullable<string[]>, expression: string, type: MPlaza.SceneElementType): Zakeke.SceneCameraLocation[];
    getOffloadedElementIDs(zkScene: Zakeke.Scene, scene: BABYLON.Scene, filter: Nullable<string[]>, expression: string, type: MPlaza.SceneElementType): string[];
    getDelayedElementIDs(zkScene: Zakeke.Scene, scene: BABYLON.Scene, filter: Nullable<string[]>, expression: string, type: MPlaza.SceneElementType): string[];
    getMeshes(zkScene: Zakeke.Scene, scene: BABYLON.Scene, filter: Nullable<string[]>, regExp: RegExp, originalExpression: string): BABYLON.AbstractMesh[];
    getSubMeshes(zkScene: Zakeke.Scene, scene: BABYLON.Scene, filter: Nullable<string[]>, regExp: RegExp, originalExpression: string, subMeshIndex: number): BABYLON.SubMesh[];
    getMaterials(zkScene: Zakeke.Scene, scene: BABYLON.Scene, filter: Nullable<string[]>, regExp: RegExp, originalExpression: string): BABYLON.Material[];
    getOffloadedMaterialIDs(zkScene: Zakeke.Scene, scene: BABYLON.Scene, filter: Nullable<string[]>, regExp: RegExp, originalExpression: string): string[];
    getDelayedMaterialIDs(zkScene: Zakeke.Scene, scene: BABYLON.Scene, filter: Nullable<string[]>, regExp: RegExp, originalExpression: string): string[];
    getLights(zkScene: Zakeke.Scene, scene: BABYLON.Scene, filter: Nullable<string[]>, regExp: RegExp, originalExpression: string): BABYLON.Light[];
    getCameras(zkScene: Zakeke.Scene, scene: BABYLON.Scene, filter: Nullable<string[]>, regExp: RegExp, originalExpression: string): BABYLON.Camera[];
    getCameraLocations(zkScene: Zakeke.Scene, scene: BABYLON.Scene, filter: Nullable<string[]>, regExp: any): Zakeke.SceneCameraLocation[];
    getYesNoElements(zkScene: Zakeke.Scene, scene: BABYLON.Scene, filter: Nullable<string[]>, expression: string, type: MPlaza.SceneElementType): YesNoElements;
    getYesNoMeshes(zkScene: Zakeke.Scene, scene: BABYLON.Scene, filter: Nullable<string[]>, regExp: RegExp): YesNoMeshes;
    private getYesNoSubMeshes;
    private getYesNoMaterials;
    private getYesNoLights;
    private getYesNoCameras;
    private getYesNoCameraLocations;
    private escapeRegExp;
    private verifyFilter;
}
export {};
