import { Viewer } from "cesium";
import { TileModel } from "./class/tileModel";
import { InputIsolate, InputSetColor } from "./class/styleElement";
import { ToolbarOptions } from "./interfaces/toolBar.interface";
import { IDPUViewer } from "./interfaces/dpuViewer.interface";
import { IInputObjs3DTile } from "./interfaces/sceneManager.interface";
import { TaskColorByObj } from "./interfaces/styleElement.interface";
import { IViewSave, IViewSave2D } from "./services/utilsView";
import { ExtentionToolBar, IOptionExtension } from "./services/extensionToolbar";
import { IInputSetMap, IObjInputMap } from "./interfaces/map.interface";
export declare class DPUViewer implements IDPUViewer {
    viewer: Viewer | undefined;
    private _containerId;
    private _token;
    private _treeTileModel?;
    private _flyLocation?;
    private _contextMenu?;
    private _mapWeather?;
    private _labelPoint?;
    private _dataProperties?;
    private _flyCamera?;
    private _footerView?;
    private _compass?;
    private _sceneManager?;
    private _inputObjectPrimtive?;
    private _createToolBar?;
    private _layerModel?;
    private _globalStore?;
    optionToolbar?: ToolbarOptions;
    private _treeViews;
    private _treeLayerModel;
    constructor(containerId: string, token: string, inputOptionToolbar?: ToolbarOptions);
    /**
     * Hàm khởi tạo view Cesium
     */
    private _initCesiumViewer;
    /**
     * Hàm set Dark/Light theme cho viewer
        * @param {boolean} dark true: dark theme, false: light theme
     */
    setDarkTheme: (dark: boolean) => void;
    /**
     * Hàm hủy view
     */
    destroyView: () => void;
    setLocationHome: (inputLocation: {
        longitude: number;
        latitude: number;
        height?: number;
        angle?: number;
        pitch?: number;
        duration?: number;
    }) => void;
    /**
     * Hàm xử lý hành động bay đến vị trí công trường
     */
    flyToHomeLocation: () => Promise<void>;
    /**
      * Hàm bay đến vị trí mong muốn riêng
      *  @param {number} longitude kinh độ
      * @param {number} latitude  vĩ độ
      * @param {number} height  độ cao
      * @param {number} duration  thời gian bay
      */
    flyToLocation: (longitude: number, latitude: number, height?: number, duration?: number) => void;
    /**
     * Tải không đồng bộ một 3D tile từ URL được chỉ định và tạo một `TileModel` tương ứng.     *
     * @param url - URL của 3D tile cần tải.
     * @param name - (Tùy chọn) Tên của tile. Nếu không được cung cấp, một UUID sẽ được tạo.
     * @param urlConnect - (Tùy chọn) URL để kết nối thêm dữ liệu đối tượng đầu vào.
     * @param inputObjs - (Tùy chọn) Các đối tượng đầu vào bổ sung cho 3D tile.
     *
     * @returns Một promise trả về một `TileModel` nếu tile được tải thành công, hoặc `undefined` nếu tải thất bại.
     
     */
    load3DTileUrl: (url: string, name?: string, urlConnect?: string, inputObjs?: IInputObjs3DTile) => Promise<TileModel | undefined>;
    private queue;
    private enqueue;
    private _totalModelLoad;
    private _firstChildLoad;
    loadTree3DTileUrl: (url: string, obj?: any) => Promise<TileModel[]>;
    private _containerLoad;
    private _renderLoadModel;
    private sortList;
    private arrange;
    getModelTreeUrl: (url: string, maximumScreen?: number) => Promise<TileModel[]>;
    private _flattenFolderTree;
    /**
     * Hàm load file KMZ từ URL
     * @param {string} url URL của file KMZ cần tải.
     * @param {string} name Tên của file KMZ để hiển thị trong TreeView.
     * @returns {Promise<TileModel>} Trả về đối tượng `TileModel` mới được tạo sau khi tải xong file KMZ.
     */
    loadKMZ: (url: string, name: string, inputObjs?: IInputObjs3DTile) => Promise<TileModel | undefined>;
    /**
     * Hàm tải không đồng bộ một 3D tile theo ID và thêm vào TreeView.
     *
     * @param id - ID duy nhất của 3D tile cần tải.
     * @param name - (Tùy chọn) Tên được gán cho tile đã tải. Nếu không cung cấp, sẽ tạo UUID.
     * @param urlConnect - (Tùy chọn) URL kết nối để tải thêm dữ liệu.
     * @param inputObjs - (Tùy chọn) Các tham số đầu vào bổ sung để tải 3D tile.
     *
     * @returns Một promise trả về một đối tượng `TileModel` đại diện cho 3D tile đã tải,
     *          hoặc `undefined` nếu không tải được.
     */
    load3DTileById: (id: string, name?: string, urlConnect?: string, inputObjs?: IInputObjs3DTile) => Promise<TileModel | undefined>;
    /**
    * Hàm tải và hiển thị đường đi camera từ file KMZ
    * @param {string} url URL của file KMZ chứa dữ liệu đường đi camera.
    * @param {string} [name] Tên của camera hoặc dữ liệu đường đi (tùy chọn).
    */
    loadPathCameraKMZ: (url: string, name?: string) => void;
    /**
     * Tải và tạo các điểm nhãn từ một URL.
     *
     * @param url - Đường dẫn URL chứa dữ liệu điểm nhãn.
     * @param loadFormJson - (Tùy chọn) Xác định xem có tải dữ liệu từ JSON hay không. Mặc định là `false`.
     * @param dataJson - (Tùy chọn) Dữ liệu JSON để sử dụng nếu `loadFormJson` là `true`. Mặc định là chuỗi rỗng.
     * @param isShow - (Tùy chọn) Xác định xem có hiển thị các điểm nhãn sau khi tải hay không. Mặc định là `false`.
     */
    loadLabelPointFromUrl: (url: string, loadFormJson?: boolean, dataJson?: any, isShow?: boolean) => void;
    /**
    * Hàm Zoom đến Tile
    * @param {any} tile Tile để zoom tới
    */
    zoomToTile: (tile: any) => void;
    setColor: (inputObjs: InputSetColor[]) => Promise<void>;
    resetDefaultColor: () => void;
    resetAllDefaultColor: () => Promise<void>;
    resetAllColor: () => Promise<void>;
    setColorByTask: (completeObj: TaskColorByObj, inProgressObj: TaskColorByObj, reColor?: [number, number, number, number] | string) => Promise<void>;
    isolateObjs: (inputObjs: InputIsolate[]) => Promise<void>;
    resetAllDefaultIsolate: () => void;
    resetDefaultIsolate: () => Promise<void>;
    resetAllIsolate: () => Promise<void>;
    clearObjDataPrimitive: () => Promise<void>;
    zoomToObjects: (inputObjs: any[]) => Promise<void>;
    /**
    * Hàm trả về danh sách File Name và danh sách GuidId của các đối tượng được chọn
    */
    getObjectIdsBySelect: () => any[] | undefined;
    saveViewCamera: () => IViewSave | IViewSave2D | undefined;
    loadViewCamera(viewSave: IViewSave | IViewSave2D): void;
    createExtentionToolBar: (callback: (data: any) => void, option: IOptionExtension) => ExtentionToolBar | undefined;
    flyToVietNam: () => void;
    getOptionMap: () => IObjInputMap;
    setOptionMap: (objMap: IObjInputMap) => void;
    setInputMap: (inputMap: IInputSetMap) => void;
    issuePoint: (callback?: (data: any) => void) => import("./services/issuePoint/issuePoint").IssuePoint | undefined;
    callBackGetHiddenTreeViews: (callback: (data: any) => void) => void;
    callBackLabelPoint: (callback: (data: any) => void, toggleBtn?: boolean, isDev?: boolean) => void;
    getHidenTreeViews: () => any;
    callBackMap: (callback: (data: any) => void) => void;
    handleZoomEarth: (zoom: boolean) => void;
    onChangeMap: (layer: number, mapUrls?: {
        id: string;
        url: string;
    }[]) => void;
    flyToYourLocation: (zDistance?: number, duration?: number) => void;
    locationPickPin: (callback?: (data: {
        longitude: number;
        latitude: number;
    } | null) => void) => void;
    removePickPin: () => void;
}
