import * as THREE from "three";
import { ModelData2d } from "./Constants";
import { Units } from "../../core/Units";
import { DxfData } from "../../core/dxf";
import { ILayer, ILayoutObject, IPoint, IViewport, IViewportEntity } from "../../core/dxf-parser";
import { Model } from "../../core/model/Model";
import type { PdfData, PdfLayer } from "../../core/viewers/Viewer2d";
/**
 * Loaded 2d model info for Viewer2d.
 */
export declare class Model2d extends Model {
    modelId: string;
    modelObject: THREE.Object3D;
    constructor(modelData: ModelData2d);
    get pdfData(): PdfData | undefined;
    get dxfData(): DxfData | undefined;
    /**
     * @hidden
     */
    get msTransformMatrix(): THREE.Matrix4 | undefined;
    /**
     * @hidden
     */
    set msTransformMatrix(matrix: THREE.Matrix4 | undefined);
    /**
     * @hidden
     */
    get loadedEntityCount(): number;
    /**
     * Gets dxf data header.
     */
    get header(): Record<string, string | number | IPoint> | undefined;
    /**
     * Gets dxf data viewports.
     */
    get viewports(): IViewport[] | undefined;
    /**
     * Gets layers.
     */
    get layers(): Record<string, ILayer | PdfLayer> | undefined;
    /**
     * Gets dxf data layoutViewportsMap.
     * @hidden
     */
    get layoutViewportsMap(): Record<string, IViewportEntity[]> | undefined;
    /**
     * Gets three.js object of the model.
     */
    getModelObject(): THREE.Object3D;
    /**
     * Gets model bounding box.
     */
    getBBox(): THREE.Box3;
    /**
     * Gets dxf units.
     * @hidden
     */
    getUnits(): Units;
    /**
     * Gets dxf model space extent.
     * @hidden
     */
    getModelSpaceExtent(): THREE.Box3 | undefined;
    /**
     * Gets layer by layer name.
     */
    getLayer(layerName: string): ILayer | PdfLayer | undefined;
    /**
     * Gets layer object and three.js object by layer name.
     */
    getObjectsByLayer(layerName: string): THREE.Object3D[] | undefined;
    /**
     * Gets layout of dxf data.
     */
    getLayouts(): ILayoutObject[];
    getLayoutByName(layoutName: string): ILayoutObject | undefined;
    /**
     * Gets layout extent of dxf data.
     * @hidden
     */
    getLayoutExtent(layout: ILayoutObject): THREE.Box3;
    /**
     * Gets layout viewports.
     * @hidden
     */
    getLayoutViewports(layout: ILayoutObject): IViewportEntity[];
    /**
     * Gets the layout level three.js object.
     */
    getLayoutLevelObject(layoutName: string): THREE.Object3D | undefined;
    /**
     * Sets model visibility.
     */
    setVisible(visible: boolean): void;
    /**
     * Sets layer visibility.
     */
    setLayerVisible(layerName: string, visible: boolean, enableSmallFeatureCulling?: boolean, cameraZoom?: number): void;
    /**
     * Sets layer opacity.
     */
    setLayerOpacity(layerName: string, opacity: number): void;
    /**
     * Sets layer color.
     */
    setLayerColor(layerName: string, color: number): void;
    /**
     * Resets layer color.
     */
    resetLayerColor(layerName: string): void;
    /**
     * @hidden
     */
    switchTransformMs(layoutName: string): void;
    activateLayout(layoutName: string | undefined, isLayoutInitialized: boolean): void;
    getFilteredViewports(layout: ILayoutObject): IViewportEntity[];
    /**
     * Shows objects for given layout, and hide any other layouts.
     */
    showLayoutObjects(layoutName: string): void;
    addSpatialFilterSection(object: THREE.Object3D, dxfData: DxfData, bFromViewport?: boolean): void;
    /**
     * Highlights an object.
     */
    highlightObject(object: THREE.Object3D): void;
    unHighlightObject(object: THREE.Object3D): void;
    clearHighlight(): void;
}
