
/// <reference path="Cesium.d.ts" />
/// <reference path="CustomCesium.d.ts" />
declare module 'bcgis-sdk/dist/bcgis.base.min';
declare module 'bcgis-sdk/dist/bcgis.core.min';
declare namespace BC {
  export declare let Namespace = {
    Cesium
  };
  /// <reference types="node" />

/**
 * 场景动画基类
 */
declare abstract class Animation_2 {
    protected _viewer: Viewer;
    protected _options: any;
    /* Excluded from this release type: __constructor */
    /**
     * 绑定事件
     */
    protected abstract _bindEvent(): any;
    /**
     * 解绑事件
     */
    protected abstract _unbindEvent(): any;
    /**
     * 开始动画
     * @returns
     */
    start(): this;
    /**
     * 停止动画
     * @returns
     */
    stop(): this;
}
export { Animation_2 as Animation }

export declare let AnimationType: any;

/**
 * 点位环绕构造函数选项
 */
export declare namespace AroundPoint {
    export type ConstructorOptions = {
        /**
         * 偏移角度
         */
        heading: number;
        /**
         * 翻转角度
         */
        pitch: number;
        /**
         * 距离
         */
        range: number;
        /**
         * 间隔，单位：秒,当此值大于0时，callback才会生效
         */
        duration: number;
        /**
         * 完成回调函数
         */
        callback: Function;
        /**
         * 回调函数执行上下文
         */
        context: any;
    };
}

/**
 * 点位环绕
 * ```ts
 * let aroundPoint = new BC.AroundPoint(viewer, '120.121, 31.12')
 * aroundPoint.start()
 * ```
 */
export declare class AroundPoint extends Animation_2 {
    private _position;
    private _heading;
    private _aroundAmount;
    /**
     *
     * @param viewer 3D 场景
     * @param position 点位
     * @param options 选项
     */
    constructor(viewer: Viewer, position: Position | string | string[] | number[], options?: AroundPoint.ConstructorOptions);
    /* Excluded from this release type: type */
    /**
     * 位置
     */
    set position(position: Position | string | string[] | number[]);
    /**
     * 环绕量，控制环绕速度
     */
    set aroundAmount(aroundAmount: number);
    /**
     * 绑定事件
     */
    protected _bindEvent(): void;
    /**
     * 解绑事件
     */
    protected _unbindEvent(): void;
    /**
     *
     * @param scene
     * @param time
     */
    private _onAround;
}

/**
 * 相机环绕构造函数选项
 */
export declare namespace AroundView {
    export type ConstructorOptions = {
        /**
         * 偏移角度
         */
        heading: number;
        /**
         * 翻转角度
         */
        pitch: number;
        /**
         * 距离
         */
        range: number;
        /**
         * 间隔，单位：秒,当此值大于0时，callback才会生效
         */
        duration: number;
        /**
         * 完成回调函数
         */
        callback: Function;
        /**
         * 回调函数执行上下文
         */
        context: any;
    };
}

/**
 * 相机环绕
 * @example
 * ```ts
 * let aroundPoint = new BC.AroundPoint(viewer, '120.121, 31.12')
 * aroundPoint.start()
 * ```
 */
export declare class AroundView extends Animation_2 {
    private _heading;
    private _aroundAmount;
    /**
     * @param viewer 3D 场景
     * @param options
     */
    constructor(viewer: Viewer, options?: AroundView.ConstructorOptions);
    /* Excluded from this release type: type */
    /**
     * 环绕量，控制环绕速度
     */
    set aroundAmount(aroundAmount: any);
    protected _bindEvent(): void;
    protected _unbindEvent(): void;
    /**
     *
     * @param scene
     * @param time
     * @private
     */
    private _onAround;
}

/**
 * 攻击箭头
 * @noInheritDoc
 * @example
 * ```ts
 * let attackArrow = new BC.AttackArrow('-90.0,32.0;-94.0,36.0;-94.0,38.0')
 * ```
 */
export declare class AttackArrow extends Overlay {
    /**
     * @hidden
     */
    private _positions;
    /**
     * @hidden
     */
    private headHeightFactor;
    /**
     * @hidden
     */
    private headWidthFactor;
    /**
     * @hidden
     */
    private neckHeightFactor;
    /**
     * @hidden
     */
    private neckWidthFactor;
    /**
     * @hidden
     */
    private tailWidthFactor;
    /**
     * @hidden
     */
    private headTailFactor;
    /**
     * @hidden
     */
    private _primitive;
    /**
     * @param {T_Position} positions
     * @return {*}
     */
    constructor(positions: T_Position[]);
    get type(): any;
    set positions(positions: T_Position[]);
    get positions(): T_Position[];
    protected _updatePrimitive(): void;
    _getArrowPoints(positions: any): any[];
    _getArrowHeadPoints(points: any, tailLeft: any, tailRight: any): any[];
    protected _getArrowBodyPoints(points: any, neckLeft: any, neckRight: any, tailWidthFactor: any): any[];
    protected _getHierarchy(): Cesium.PolygonHierarchy;
    _mountedHook(): void;
    setLabel(text: string, textStyle: any): this;
    /**
     * 设置箭头风格
     * 详情参考：@see {@link Polygon}
     * @param style
     * @returns {AttackArrow}
     */
    setStyle(style: any): this;
}

declare class BaiduImageryProvider {
    _url: any;
    _labelStyle: any;
    _tileWidth: number;
    _tileHeight: number;
    _maximumLevel: number;
    _crs: any;
    _tilingScheme: any;
    _rectangle: any;
    _credit: any;
    _token: any;
    _style: any;
    _errorEvent: Cesium.Event<(...args: any[]) => void>;
    constructor(options?: any);
    get url(): any;
    get token(): any;
    get tileWidth(): number;
    get tileHeight(): number;
    get maximumLevel(): number;
    get minimumLevel(): number;
    get tilingScheme(): any;
    get rectangle(): any;
    get ready(): boolean;
    get credit(): any;
    get hasAlphaChannel(): boolean;
    get errorEvent(): Cesium.Event<(...args: any[]) => void>;
    getTileCredits(x: any, y: any, level: any): void;
    /**
     * Request Image
     * @param x
     * @param y
     * @param level
     * @returns {Promise<HTMLImageElement | HTMLCanvasElement>}
     */
    requestImage(x: any, y: any, level: any): Promise<Cesium.ImageryTypes | Cesium.CompressedTextureBuffer>;
}

declare type BcCesium = typeof Cesium;

/**
 * 图标
 * @noInheritDoc
 * @example
 * ```ts
 * let position = new BC.Position(120, 20)
 * let billboard = new BC.Billboard(position, "*.png")
 * billboard.size = [20, 20]
 * ```
 */
export declare class Billboard extends Overlay {
    /**
     * @hidden
     */
    private _position;
    /**
     * @hidden
     */
    private _icon;
    /**
     * @hidden
     */
    private _size;
    /**
     *
     * @param position 位置
     * @param icon 图标
     */
    constructor(position: T_Position, icon: Cesium.Property | string | HTMLCanvasElement);
    get type(): any;
    set position(position: T_Position);
    /**
     * 坐标位置
     */
    get position(): T_Position;
    set icon(icon: string | HTMLCanvasElement | Cesium.Property);
    /**
     * 图标
     */
    get icon(): string | HTMLCanvasElement | Cesium.Property;
    set size(size: number[]);
    /**
     * 尺寸
     */
    get size(): number[];
    /**
     * @hidden
     */
    _mountedHook(): void;
    /**
     *
     * @param style
     * @returns {Billboard}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "heightReference": 0, //高度参照，0：位置无参照，位置是绝对的，1：位置固定在地形上 2：位置高度是指地形上方的高度。
     *   "scale": 1, //比例
     *   "pixelOffset": { "x": 0, "y": 0 }, //偏移像素
     *   "rotation": 0, //旋转角度
     *   "translucencyByDistance": {
     *     "near": 0, //最近距离
     *     "nearValue": 0, //最近距离值
     *     "far": 1, //最远距离值
     *     "farValue": 0 //最远距离值
     *   }, //根据距离设置透明度
     *   "scaleByDistance": {
     *     "near": 0, //最近距离
     *     "nearValue": 0, //最近距离值
     *     "far": 1, //最远距离值
     *     "farValue": 0 //最远距离值
     *   }, //根据距离设置比例
     *   "distanceDisplayCondition": {
     *     "near": 0, //最近距离
     *     "far": Number.MAX_VALUE //最远距离
     *   }, //根据距离设置可见
     *   "disableDepthTestDistance": 0 // 深度检测距离，用于防止剪切地形，设置为零时，将始终应用深度测试。设置为Number.POSITIVE_INFINITY时，永远不会应用深度测试。
     * }
     * ```
     */
    setStyle(style: any): this;
    /**
     * Entity转换为Overlay
     * @param entity
     * @returns {Billboard}
     */
    static fromEntity(entity: Cesium.Entity): Billboard | undefined;
}

/**
 * 图标图元
 * @noInheritDoc
 * @example
 * ```ts
 * let position = new BC.Position(120, 20)
 * let billboard = new BC.BillboardPrimitive(position, '*.png')
 * billboard.size = [20, 20]
 * ```
 */
export declare class BillboardPrimitive extends Overlay {
    protected _position: Position;
    protected _icon: Cesium.Property | string | HTMLCanvasElement;
    protected _size: number[];
    /**
     *
     * @param position 坐标
     * @param icon 图标
     */
    constructor(position: T_Position, icon: Cesium.Property | string | HTMLCanvasElement);
    get type(): any;
    set position(position: T_Position);
    get position(): T_Position;
    set icon(icon: string | HTMLCanvasElement | Cesium.Property);
    get icon(): string | HTMLCanvasElement | Cesium.Property;
    set size(size: number[]);
    get size(): number[];
    _mountedHook(): void;
    /**
     *
     * @param style
     */
    setStyle(style: any): this;
}

/**
 * 黑白效果
 * @example
 * ```ts
 * viewer.effect.blackAndWhite.enable = true
 * ```
 */
export declare class BlackAndWhite {
    private _viewer;
    private _delegate;
    private _enable;
    private _gradations;
    private _selected;
    private _state;
    constructor();
    /**
     * 类型
     * @ignore
     */
    get type(): string;
    /**
     * 是否启用
     */
    set enable(enable: boolean);
    get enable(): boolean;
    /**
     * 强度
     */
    set gradations(gradations: number);
    get gradations(): number;
    /**
     * 设置后期作用的覆盖物
     */
    set selected(selected: any[]);
    get selected(): any[];
    /**
     *
     */
    private _createPostProcessStage;
    /**
     * 添加特效
     * @param viewer
     * @returns {BlackAndWhite}
     * @ignore
     */
    addTo(viewer: Cesium.Viewer): BlackAndWhite;
}

/**
 * 泛光效果
 * @example
 * ```ts
 * viewer.effect.bloom.enable = true
 * ```
 */
export declare class Bloom {
    private _viewer;
    private _enable;
    private _contrast;
    private _brightness;
    private _glowOnly;
    private _delta;
    private _sigma;
    private _stepSize;
    private _selected;
    private _state;
    private _delegate;
    constructor();
    /**
     * 类型
     * @ignore
     */
    get type(): string;
    /**
     * 是否启用
     */
    set enable(enable: boolean);
    get enable(): boolean;
    /**
     * 对比度
     */
    set contrast(contrast: number);
    get contrast(): number;
    /**
     * 亮度
     */
    set brightness(brightness: number);
    get brightness(): number;
    /**
     * 只发光
     */
    set glowOnly(glowOnly: boolean);
    get glowOnly(): boolean;
    /**
     * Delta
     */
    set delta(delta: number);
    get delta(): number;
    /**
     * Sigma
     */
    set sigma(sigma: number);
    get sigma(): number;
    /**
     * StepSize
     */
    set stepSize(stepSize: number);
    get stepSize(): number;
    /**
     * 设置后期作用的覆盖物
     */
    set selected(selected: any[]);
    get selected(): any[];
    /**
     *
     */
    private _createPostProcessStage;
    /**
     * 添加效果
     * @param viewer
     * @returns {Bloom}
     * @ignore
     */
    addTo(viewer: Cesium.Viewer): Bloom;
}

/**
 * 跳动图标图元
 * @noInheritDoc
 * @example
 * ```ts
 * let position = new BC.Position(120, 20)
 * let billboard = new BC.BounceBillboardPrimitive(position, '*.png')
 * billboard.size = [20, 20]
 * ```
 */
export declare class BounceBillboardPrimitive extends BillboardPrimitive {
    private _currentOffset;
    private _isUp;
    /**
     *
     * @param position 坐标
     * @param icon 图标
     */
    constructor(position: T_Position, icon: Cesium.Property | string | HTMLCanvasElement);
    get type(): any;
    /**
     *
     * @param frameState
     */
    update(frameState: any): void;
    destroy(): void;
}

/**
 * 跳动注记图元
 * @noInheritDoc
 * @example
 * ```ts
 * let position = new BC.Position(120, 20)
 * let label = new BC.BounceLabelPrimitive(position, 'test')
 * ```
 */
export declare class BounceLabelPrimitive extends LabelPrimitive {
    protected _currentOffset: Cesium.Cartesian2;
    protected _isUp: boolean;
    protected _state: string;
    protected _show: boolean;
    protected _style: any;
    protected _delegate: any;
    /**
     *
     * @param position 坐标
     * @param text 文本
     */
    constructor(position: T_Position, text: string);
    get type(): any;
    /**
     *
     * @param frameState
     */
    update(frameState: any): void;
    destroy(): void;
}

/**
 * 盒子
 * @noInheritDoc
 * @example
 * ```ts
 * let position = new BC.Position(120, 20)
 * let box = new BC.Box(position, 20, 30, 40)
 * ```
 */
export declare class Box extends Overlay {
    /**
     * @hidden
     */
    private _position;
    /**
     * @hidden
     */
    private _length;
    /**
     * @hidden
     */
    private _width;
    /**
     * @hidden
     */
    private _height;
    /**
     *
     * @param position 位置
     * @param length 长度
     * @param width 宽度
     * @param height 高度
     */
    constructor(position: T_Position, length: number, width: number, height: number);
    get type(): any;
    set position(position: T_Position);
    /**
     * 位置
     */
    get position(): T_Position;
    set length(length: number);
    get length(): number;
    set width(width: number);
    get width(): number;
    set height(height: number);
    get height(): number;
    /**
     * @hidden
     */
    _mountedHook(): void;
    /**
     * 设置风格
     * @param style
     * @returns {Box}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *  "heightReference": 0, //高度参照，0：位置无参照，位置是绝对的，1：位置固定在地形上 2：位置高度是指地形上方的高度。
     *   "fill": true, //是否用提供的材料填充多边形。
     *   "material": BC.Color.WHITE, //材质
     *   "outline": false, //是否显示边框
     *   "outlineColor": BC.Color.BLACK, //边框颜色
     *   "outlineWidth": 0, //边框宽度
     *   "shadows": 0, //阴影类型，0：禁用、1：启用 、2：投射、3：接受
     *   "distanceDisplayCondition": {
     *     "near": 0, //最近距离
     *     "far": Number.MAX_VALUE //最远距离
     *   } //根据距离设置可见
     * }
     * ```
     */
    setStyle(style: any): this;
}

/**
 * 明亮效果
 * @example
 * ```ts
 * viewer.effect.brightness.enable = true
 * ```
 */
export declare class Brightness {
    private _viewer;
    private _delegate;
    private _enable;
    private _intensity;
    private _selected;
    private _state;
    constructor();
    /**
     * 类型
     * @ignore
     */
    get type(): string;
    /**
     * 设置类型
     */
    set enable(enable: boolean);
    /**
     * 强度
     */
    get enable(): boolean;
    /**
     * 设置强度
     */
    set intensity(intensity: number);
    /**
     * 强度
     */
    get intensity(): number;
    /**
     * 设置后期作用的覆盖物
     */
    set selected(selected: any[]);
    get selected(): any[];
    /**
     *
     */
    private _createPostProcessStage;
    /**
     * 添加效果
     * @param viewer
     * @returns {Brightness}
     * @ignore
     */
    addTo(viewer: Cesium.Viewer): Brightness;
}

export declare const CallbackProperty: typeof globalThis.Cesium.CallbackProperty;

export declare const Cartesian2: typeof globalThis.Cesium.Cartesian2;

export declare const Cartesian3: typeof globalThis.Cesium.Cartesian3;

declare const Cesium_2: BcCesium;

/**
 * 圆
 * @noInheritDoc
 * @example
 * ```ts
 * let position = new BC.Position(120, 20)
 * let circle = new BC.Circle(position, 200)
 * ```
 */
export declare class Circle extends Overlay {
    private _center;
    private _radius;
    private _rotateAmount;
    private _stRotation;
    /**
     *
     * @param center 中心点位置
     * @param radius 半径
     */
    constructor(center: T_Position, radius: number);
    get type(): any;
    set center(center: T_Position);
    get center(): T_Position;
    set radius(radius: number);
    get radius(): number;
    set rotateAmount(amount: number);
    get rotateAmount(): number;
    private _computeHierarchy;
    _mountedHook(): void;
    /**
     * Sets Text with Style
     * @param text
     * @param textStyle
     * @returns {Circle}
     */
    setLabel(text: string, textStyle: any): this;
    /**
     *  设置风格
     * @param style
     * @returns {Circle}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "height": 1, //高度
     *   "heightReference": 0, //高度参照，0：位置无参照，位置是绝对的，1：位置固定在地形上 2：位置高度是指地形上方的高度。
     *   "extrudedHeight": 0, //拉升高度
     *   "rotation": 0, //顺时针旋转角度
     *   "stRotation": 0, //逆时针旋转角度
     *   "fill": true, //是否用提供的材料填充多边形。
     *   "material": BC.Color.WHITE, //材质
     *   "outline": false, //是否显示边框
     *   "outlineColor": BC.Color.BLACK, //边框颜色
     *   "outlineWidth": 0, //边框宽度
     *   "shadows": 0, //阴影类型，0：禁用、1：启用 、2：投射、3：接受
     *   "distanceDisplayCondition": {
     *     "near": 0, //最近距离
     *     "far": Number.MAX_VALUE //最远距离
     *   }, //根据距离设置可见
     *   "classificationType": 2, //分类 是否影响地形，3D切片或同时影响这两者。0:地形、1:3D切片、2：两者
     *   "zIndex": 0 //层级
     * }
     * ```
     */
    setStyle(style: any): this;
}

/**
 * 模糊圆材质
 * @noInheritDoc
 * @example
 * ```ts
 * let material = new BC.CircleBlurMaterialProperty({
 *   color: BC.Color.WHITE,
 * })
 * ```
 */
export declare class CircleBlurMaterialProperty extends MaterialProperty {
    /**
     * 颜色
     */
    color: Cesium.Color;
    /**
     * 速度
     */
    speed: number;
    /**
     * @param options 属性
     */
    constructor(options?: {
        /**
         * 颜色
         * @defaultValue BC.Color.fromBytes(0, 255, 255, 255)
         */
        color: Cesium.Color;
        /**
         * 速度
         * @defaultValue 1
         */
        speed: number;
    });
    /* Excluded from this release type: getType */
    /* Excluded from this release type: getValue */
    /* Excluded from this release type: equals */
}

/**
 * 扩散圆材质
 * @noInheritDoc
 * @example
 * ```ts
 * let material = new BC.CircleDiffuseMaterialProperty({
 *   color: BC.Color.WHITE,
 * })
 * ```
 */
export declare class CircleDiffuseMaterialProperty extends MaterialProperty {
    /**
     * 颜色
     */
    color: Cesium.Color;
    /**
     * 速度
     */
    speed: number;
    /**
     * @param options 属性
     */
    constructor(options?: {
        /**
         * 颜色
         * @defaultValue BC.Color.fromBytes(0, 255, 255, 255)
         */
        color: Cesium.Color;
        /**
         * 速度
         * @defaultValue 1
         */
        speed: number;
    });
    /* Excluded from this release type: getType */
    /* Excluded from this release type: getValue */
    /* Excluded from this release type: equals */
}

/**
 * 逐渐消逝圆材质
 * @noInheritDoc
 * @example
 * ```ts
 * let material = new BC.CircleFadeMaterialProperty({
 *   color: BC.Color.WHITE,
 * })
 * ```
 */
export declare class CircleFadeMaterialProperty extends MaterialProperty {
    /**
     * 颜色
     */
    color: Cesium.Color;
    /**
     * 速度
     */
    speed: number;
    /**
     * @param options 属性
     */
    constructor(options?: {
        /**
         * 颜色
         * @defaultValue BC.Color.fromBytes(0, 255, 255, 255)
         */
        color: Cesium.Color;
        /**
         * 速度
         * @defaultValue 1
         */
        speed: number;
    });
    /* Excluded from this release type: getType */
    /* Excluded from this release type: getValue */
    /* Excluded from this release type: equals */
}

/**
 * 脉冲圆材质
 * @noInheritDoc
 * @example
 * ```ts
 * let material = new BC.CirclePulseMaterialProperty({
 *   color: BC.Color.WHITE,
 * })
 * ```
 */
export declare class CirclePulseMaterialProperty extends MaterialProperty {
    /**
     * 颜色
     */
    color: Cesium.Color;
    /**
     * 速度
     */
    speed: number;
    /**
     * @param options 属性
     */
    constructor(options?: {
        /**
         * 颜色
         * @defaultValue BC.Color.fromBytes(0, 255, 255, 255)
         */
        color: Cesium.Color;
        /**
         * 速度
         * @defaultValue 1
         */
        speed: number;
    });
    /* Excluded from this release type: getType */
    /* Excluded from this release type: getValue */
    /* Excluded from this release type: equals */
}

/**
 * 扫描圈
 * @example
 * ```ts
 * let circleScan = new BC.CircleScan(viewer, '120, 20', 200)
 * circleScan.start()
 * ```
 */
export declare class CircleScan extends Animation_2 {
    private _delegate;
    private _position;
    private _radius;
    private _color;
    private _speed;
    /**
     *
     * @param viewer 3D场景
     * @param position 位置
     * @param radius 半径
     * @param options 属性
     */
    constructor(viewer: Viewer, position: Position | string | string[] | number[], radius: number, options?: {
        /**颜色 */
        color: Cesium.Color;
        /**速度 */
        speed: number;
    });
    /* Excluded from this release type: type */
    private _mountContent;
    /**
     * 开始
     * @returns
     */
    start(): this;
    /**
     * 结束
     */
    stop(): this;
    protected _bindEvent(): void;
    protected _unbindEvent(): void;
}

/**
 * 扫描圆材质
 * @noInheritDoc
 * @example
 * ```ts
 * let material = new BC.CircleScanMaterialProperty({
 *   color: BC.Color.WHITE,
 * })
 * ```
 */
export declare class CircleScanMaterialProperty extends MaterialProperty {
    /**
     * 颜色
     */
    color: Cesium.Color;
    /**
     * 速度
     */
    speed: number;
    /**
     * @param options 属性
     */
    constructor(options?: {
        /**
         * 颜色
         * @defaultValue BC.Color.fromBytes(0, 255, 255, 255)
         */
        color: Cesium.Color;
        /**
         * 速度
         * @defaultValue 1
         */
        speed: number;
    });
    /* Excluded from this release type: getType */
    /* Excluded from this release type: getValue */
    /* Excluded from this release type: equals */
}

/**
 * 螺旋圆材质
 * @noInheritDoc
 * @example
 * ```ts
 * let material = new BC.CircleSpiralMaterialProperty({
 *   color: BC.Color.WHITE,
 * })
 * ```
 */
export declare class CircleSpiralMaterialProperty extends MaterialProperty {
    /**
     * 颜色
     */
    color: Cesium.Color;
    /**
     * 速度
     */
    speed: number;
    /**
     * @param options 属性
     */
    constructor(options?: {
        /**
         * 颜色
         * @defaultValue BC.Color.fromBytes(0, 255, 255, 255)
         */
        color: Cesium.Color;
        /**
         * 速度
         * @defaultValue 1
         */
        speed: number;
    });
    /* Excluded from this release type: getType */
    /* Excluded from this release type: getValue */
    /* Excluded from this release type: equals */
}

/**
 * 多彩圆材质
 * @example
 * @noInheritDoc
 * ```ts
 * let material = new BC.CircleVaryMaterialProperty({
 *   color: BC.Color.WHITE,
 * })
 * ```
 */
export declare class CircleVaryMaterialProperty extends MaterialProperty {
    /**
     * 颜色
     */
    color: Cesium.Color;
    /**
     * 速度
     */
    speed: number;
    /**
     * @param options 属性
     */
    constructor(options?: {
        /**
         * 颜色
         * @defaultValue BC.Color.fromBytes(0, 255, 255, 255)
         */
        color: Cesium.Color;
        /**
         * 速度
         * @defaultValue 1
         */
        speed: number;
    });
    /* Excluded from this release type: getType */
    /* Excluded from this release type: getValue */
    /* Excluded from this release type: equals */
}

/**
 * 波纹圆材质
 * @noInheritDoc
 * @example
 * ```ts
 * let material = new BC.CircleWaveMaterialProperty({
 *   color: BC.Color.WHITE,
 * })
 * ```
 */
export declare class CircleWaveMaterialProperty extends MaterialProperty {
    /**
     * 颜色
     */
    color: Cesium.Color;
    /**
     * 速度
     */
    speed: number;
    /**
     * 数量
     */
    count: number;
    /**
     * 强度
     */
    gradient: number;
    /**
     *
     * @param options 属性
     */
    constructor(options?: {
        /**颜色 */
        color: Cesium.Color;
        /** 速度*/
        speed?: number;
        /**数量 */
        count?: number;
        /**强度 */
        gradient?: number;
    });
    /* Excluded from this release type: isConstant */
    /* Excluded from this release type: definitionChanged */
    /* Excluded from this release type: getType */
    /* Excluded from this release type: getValue */
    /* Excluded from this release type: equals */
}

export declare const ClassificationType: typeof globalThis.Cesium.ClassificationType;

export declare class ClippingTerrain {
    _viewer: any;
    _clippingPlanes: Cesium.ClippingPlaneCollection;
    constructor();
    get viewer(): any;
    get clippingPlanes(): Cesium.ClippingPlaneCollection;
    clipTerrain(positions: T_Position[], ishole?: boolean): void;
    createPlane(p1: Cesium.Cartesian3, p2: Cesium.Cartesian3): Cesium.ClippingPlane;
    isClockWise(latLngArr: any): boolean;
    /**
     *
     * @param viewer
     */
    install(viewer: any): void;
    clear(): void;
    destroy(): void;
    uninstall(viewer: any): void;
}

export declare class ClippingTileset {
    _viewer: Viewer;
    _clippingPlanes: Cesium.ClippingPlaneCollection;
    constructor();
    get viewer(): Viewer;
    get clippingPlanes(): Cesium.ClippingPlaneCollection;
    clipTileset(tileset: Cesium.Cesium3DTileset, positions: T_Position[], ishole?: boolean): void;
    createPlane(p1: Position, p2: Position, inverseTransform: Cesium.Matrix4, ishole: boolean): Cesium.ClippingPlane;
    isClockWise(latLngArr: any): boolean;
    /**
     *
     * @param viewer
     */
    install(viewer: Viewer): void;
    clear(): void;
    destroy(): void;
    uninstall(viewer: any): void;
}

/**
 * 云效果
 * @example
 * ```ts
 * viewer.weather.cloud.enable = true
 * viewer.weather.cloud.rotateAmount = 0.02
 * ```
 */
export declare class Cloud {
    private _id;
    private _viewer;
    private _delegate;
    private _rotateAmount;
    private _enable;
    private _heading;
    private _state;
    constructor();
    /**
     * 类型
     */
    get type(): string;
    /**
     * 是否启用
     */
    set enable(enable: boolean);
    get enable(): boolean;
    /**
     * 移动增量，可为负数
     */
    set rotateAmount(rotateAmount: number);
    get rotateAmount(): number;
    /**
     *
     * @param scene
     * @param time
     */
    private _onRotate;
    /**
     *
     * @private
     */
    private _createPrimitive;
    /* Excluded from this release type: addTo */
}

/**
 * 云图元
 * @noInheritDoc
 */
export declare class CloudPrimitive extends Overlay {
    private _position;
    /**
     *
     * @param position 坐标
     */
    constructor(position: T_Position);
    get type(): any;
    set position(position: T_Position);
    get position(): T_Position;
    _mountedHook(): void;
    /**
     *
     * @param style
     */
    setStyle(style: any): this;
}

/**
 * 聚合图层
 * @noInheritDoc
 * @example
 * ```ts
 * let layer = new BC.ClusterLayer('id')
 * viewer.addLayer(layer)
 * ```
 */
export declare class ClusterLayer extends Layer {
    _cache: any;
    private _options;
    protected _delegate: Cesium.CustomDataSource;
    /**
     * @param id ID
     * @param options 聚合图层选项
     * @example
     * ```ts
     * // 属性参数(可选)
     {
     "size": 48, //聚合的尺寸
     "pixelRange": 40, //像素范围
     "gradient": {
     "0.0001": BC.Color.DEEPSKYBLUE,
     "0.001": BC.Color.GREEN,
     "0.01": BC.Color.ORANGE,
     "0.1": BC.Color.RED
     }, // 幅度颜色设置
     "style": "circle", // circle 和 clustering
     "fontSize": 12, // 字体大小
     "fontColor": BC.Color.BLACK // 字体颜色
     }
     * ```
     */
    constructor(id: string, options?: ClusterLayerOptions);
    /**
     * 项目类型
     */
    get type(): string;
    /**
     * 是否聚合
     */
    set enableCluster(enableCluster: boolean);
    /**
     * 绘制圆
     * @param color 颜色
     * @param numLength
     * @returns {*}
     * @private
     */
    private _drawCircle;
    /**
     * 绘制聚合
     * @param color
     * @param numLength
     * @returns {*}
     */
    private _drawClustering;
    /**
     * 聚合事件句柄
     * @param {*} clusteredEntities
     * @param {*} cluster
     */
    private _clusterEventHandler;
    /**
     * 清空聚合图层
     */
    clear(): this;
    setStyle(style: any): void;
}

declare interface ClusterLayerOptions {
    size: number;
    pixelRange: number;
    gradient: {
        0.0001: any;
        0.001: any;
        0.01: any;
        0.1: any;
    };
    fontSize: number;
    fontColor: Cesium.Color;
    style: string;
}

export declare const Color: typeof globalThis.Cesium.Color;

export declare const ColorMaterialProperty: typeof globalThis.Cesium.ColorMaterialProperty;

/**
 * 指北针
 * @noInheritDoc
 * @example
 * ```ts
 * viewer.compass.enable = true/false
 * ```
 */
declare class Compass extends Widget {
    protected _wrapper: any;
    private _compassRectangle;
    private _outRing;
    private _gyro;
    private _rotation_marker;
    private _orbitCursorAngle;
    private _orbitCursorOpacity;
    private _orbitLastTimestamp;
    private _orbitFrame;
    private _orbitIsLook;
    private _rotateInitialCursorAngle;
    private _rotateFrame;
    private _mouseMoveHandle;
    private _mouseUpHandle;
    /**
     * 状态
     */
    _state: string;
    protected _ready: boolean;
    private _rotateInitialCameraAngle;
    /**
     * @hidden
     */
    constructor();
    /**
     * @hidden
     */
    get type(): any;
    /**
     * @hidden
     */
    protected _installHook(): void;
    /**
     * @hidden
     */
    protected _bindEvent(): void;
    /**
     * @hidden
     */
    protected _unbindEvent(): void;
    /**
     * @hidden
     */
    private _postRenderHandler;
    /**
     * @hidden
     */
    protected _mountContent(): void;
    /**
     * @hidden
     */
    private _handleMouseDown;
    /**
     * @hidden
     */
    private _handleDoubleClick;
    /**
     * @hidden
     */
    private _getCameraFocus;
    /**
     * @hidden
     */
    private _orbit;
    /**
     * @hidden
     */
    private _orbitTickFunction;
    /**
     * @hidden
     */
    private _updateAngleAndOpacity;
    /**
     * @hidden
     */
    private _orbitMouseMoveFunction;
    /**
     * @hidden
     */
    private _orbitMouseUpFunction;
    /**
     * @hidden
     */
    private _rotate;
    /**
     * @hidden
     */
    private _rotateMouseMoveFunction;
    /**
     * @hidden
     */
    private _rotateMouseUpFunction;
    /**
     * @hidden
     */
    private _getVector;
}

declare const ConstructorOptions: {
    /**最大可见距离 */
    maxVisibleDistance: number;
    /**最小可见距离 */
    minVisibleDistance: number;
    /**高度偏移 */
    heightOffset: number;
};

/**
 * 右击菜单
 * @noInheritDoc
 * @example
 * ```ts
 * let contextMenu = viewer.contextMenu
 * contextMenu.enable = true
 * contextMenu.DEFAULT_MENU = [
 *   {
 *     label: '测试',
 *     callback: (e) => {}, // e是一个对象主要包括 windowPosition,position,surfacePosition,overlay
 *     context: this,
 *   },
 * ] // 设置默认的右击菜单，会影响全局右击菜单(慎用)。
 * ```
 */
declare class ContextMenu extends Widget {
    private _ulEl;
    private _handler;
    private _overlay;
    private _position;
    private _wgs84Position;
    private _surfacePosition;
    private _wgs84SurfacePosition;
    private _windowPosition;
    private _instanceId;
    private _config;
    private _defaultMenu;
    private _overlayMenu;
    /**
     * @hidden
     */
    constructor();
    /**
     * @hidden
     */
    get type(): any;
    /**
     * @hidden
     */
    set DEFAULT_MENU(menus: any);
    set config(config: any);
    /**
     *
     * @private
     */
    _installHook(): void;
    /**
     *
     * @private
     */
    _bindEvent(): void;
    /**
     *
     * @private
     */
    _unbindEvent(): void;
    /**
     *
     * @private
     */
    _mountContent(): void;
    /**
     *
     * @private
     */
    _mountMenu(): void;
    /**
     *
     * @param movement
     * @private
     */
    _onRightClick(movement: Cesium.ScreenSpaceEventHandler.PositionedEvent): void;
    /**
     *
     * @param movement
     * @private
     */
    _onClick(movement: Cesium.ScreenSpaceEventHandler.PositionedEvent): void;
    /**
     *
     * @param windowCoord
     * @private
     */
    _updateWindowCoord(windowCoord: {
        x: number;
        y: number;
    }): void;
    /**
     *
     * @private
     */
    _setCustomClass(): void;
    /**
     *
     * @param label
     * @param method
     * @param context
     * @returns {ContextMenu}
     * @private
     */
    _addMenuItem(label: any, method: any, context: any): this;
}

export declare class ContourLine {
    _viewer: Viewer;
    options: any;
    constructor();
    get viewer(): Viewer;
    addContourLine(options: any): void;
    removeContourLine(): void;
    destroy(): void;
    /**
     *
     * @param viewer
     */
    install(viewer: Viewer): void;
    uninstall(viewer: any): void;
}

export declare class CoordTransform {
    /**
     * BD-09 To GCJ-02
     * @param lng
     * @param lat
     * @returns {number[]}
     */
    static BD09ToGCJ02(lng: any, lat: any): number[];
    /**
     * GCJ-02 To BD-09
     * @param lng
     * @param lat
     * @returns {number[]}
     * @constructor
     */
    static GCJ02ToBD09(lng: any, lat: any): number[];
    /**
     * WGS-84 To GCJ-02
     * @param lng
     * @param lat
     * @returns {number[]}
     */
    static WGS84ToGCJ02(lng: any, lat: any): any[];
    /**
     * GCJ-02 To WGS-84
     * @param lng
     * @param lat
     * @returns {number[]}
     * @constructor
     */
    static GCJ02ToWGS84(lng: any, lat: any): any[];
    /**
     *
     * @param lng
     * @param lat
     * @returns {number[]}
     */
    static delta(lng: any, lat: any): any[];
    /**
     *
     * @param lng
     * @param lat
     * @returns {number}
     */
    static transformLng(lng: any, lat: any): any;
    /**
     *
     * @param lng
     * @param lat
     * @returns {number}
     */
    static transformLat(lng: any, lat: any): number;
    /**
     *
     * @param lng
     * @param lat
     * @returns {boolean}
     */
    static out_of_china(lng: any, lat: any): boolean;
}

/**
 * 走廊
 * @noInheritDoc
 * @example
 * ```ts
 * let corridor = new BC.Corridor('120,20;120,30')
 * corridor.setStyle({
 *   width: 10,
 * })
 * ```
 */
export declare class Corridor extends Overlay {
    private _positions;
    /**
     *
     * @param positions 坐标串
     */
    constructor(positions: string | T_Position[]);
    get type(): any;
    set positions(positions: string | T_Position[]);
    get positions(): string | T_Position[];
    _mountedHook(): void;
    /**
     *
     * @param text
     * @param textStyle
     */
    setLabel(text: string, textStyle: any): this;
    /**
     * 设置风格
     * @param style
     * @returns {Corridor}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "width": 1, //线宽
     *   "height": 0, //高度
     *   "heightReference": 0, //高度参照，0：位置无参照，位置是绝对的，1：位置固定在地形上 2：位置高度是指地形上方的高度。
     *   "cornerType": 0, //转角类别，0：圆角、1：直角、2：斜角
     *   "fill": true, //是否用提供的材料填充多边形。
     *   "material": BC.Color.WHITE, //材质
     *   "outline": false, //是否显示边框
     *   "outlineColor": BC.Color.BLACK, //边框颜色
     *   "outlineWidth": 0, //边框宽度
     *   "shadows": 0, //阴影类型，0：禁用、1：启用 、2：投射、3：接受
     *   "distanceDisplayCondition": {
     *     "near": 0, //最近距离
     *     "far": Number.MAX_VALUE //最远距离
     *   }, //根据距离设置可见
     *   "classificationType": 2, //分类 是否影响地形，3D切片或同时影响这两者。0:地形、1:3D切片、2：两者
     *   "zIndex": 0 //层级
     * }
     * ```
     */
    setStyle(style: any): this;
    /**
     * Entity 转换为 Overlay
     * @param entity
     * @returns {Corridor}
     */
    static fromEntity(entity: Cesium.Entity): Corridor | undefined;
}

/**
 * 自定义图标
 * @noInheritDoc
 * @example
 * ```ts
 * let position = new BC.Position(120, 20)
 * let billboard = new BC.CustomBillboard(position, '*.png')
 * billboard.size = [20, 20]
 * ```
 */
export declare class CustomBillboard extends Overlay {
    _position: Position;
    _icon: any;
    _size: number[];
    constructor(position: T_Position, icon: any);
    get type(): any;
    set position(position: Position);
    get position(): Position;
    set icon(icon: any);
    get icon(): any;
    set size(size: number[]);
    get size(): number[];
    _mountedHook(): void;
    /**
     * Sets label
     * @param text
     * @param textStyle
     */
    setLabel(text: string, textStyle: any): this;
    /**
     * 设置风格
     * @param style
     */
    setStyle(style: any): this;
    /**
     * Sets VLine style
     * @param style
     */
    setVLine(style?: any): this;
    /**
     * @param {*} radius
     * @param {*} style
     * @param {*} rotateAmount
     */
    setBottomCircle(radius: number, style?: {}, rotateAmount?: number): this;
}

/**
 * 自定义注记
 * @noInheritDoc
 * @example
 * ```ts
 * let position = new BC.Position(120, 20)
 * let label = new BC.CustomLabel(position, 'test')
 * ```
 */
export declare class CustomLabel extends Overlay {
    _position: Position;
    _text: string;
    constructor(position: T_Position, text: any);
    get type(): any;
    set position(position: T_Position);
    get position(): T_Position;
    set text(text: string);
    get text(): string;
    _mountedHook(): void;
    /**
     *
     * @param style
     * @example
     * ```json
     *
     * ```
     */
    setStyle(style: any): this;
    /**
     * Sets  VLine style
     * @param style
     */
    setVLine(style?: any): this;
    /**
     * Sets bottom circle
     * @param radius
     * @param style
     * @param rotateAmount
     */
    setBottomCircle(radius: number, style?: {}, rotateAmount?: number): this;
}

export declare class CustomPrimitive extends Overlay {
    /**
     *
     * @param positions 坐标串
     * @param holes 空心坐标串
     */
    constructor(options: any);
    get type(): any;
    _mountedHook(): void;
    setStyle(style: any): this;
}

export declare const CustomShader: typeof globalThis.Cesium.CustomShader;

export declare const CustomShaderMode: typeof globalThis.Cesium.CustomShaderMode;

export declare const CustomShaderTranslucencyMode: typeof globalThis.Cesium.CustomShaderTranslucencyMode;

export declare class CutFill {
    _viewer: Viewer;
    _db: Cesium.CustomDataSource;
    totalFillVolume: number;
    totalCutVolume: number;
    constructor();
    get viewer(): Viewer;
    get db(): Cesium.CustomDataSource;
    /**
     * 计算多边形的重心点, 用于展示label标签
     * @param {*} positions
     */
    computeCentroidOfPolygon(positions: any): Cesium.Cartographic;
    /**
     * 计算方量
     * @param {*} positions 点串
     * @param {*} cutAndFillBaseHeight 填挖高度
     * @param {*} precision 精度，默认64
     */
    computeCutVolume(positions: Position[], cutAndFillHeight?: number, precision?: number): number | false;
    /**
     * 计算三角形的面积
     * @param {*} pos1
     * @param {*} pos2
     * @param {*} pos3
     */
    computeAreaOfTriangle(pos1: any, pos2: any, pos3: any): number;
    clear(): void;
    destroy(): void;
    /**
     *
     * @param viewer
     */
    install(viewer: Viewer): void;
    uninstall(viewer: any): void;
}

/**
 * 圆柱
 * @noInheritDoc
 * @example
 * ```ts
 * let position = new BC.Position(120, 20)
 * let cylinder = new BC.Cylinder(position, 20, 30, 40)
 * ```
 */
export declare class Cylinder extends Overlay {
    private _position;
    private _length;
    private _topRadius;
    private _bottomRadius;
    /**
     *
     * @param position 位置
     * @param length 长度
     * @param topRadius 上半径
     * @param bottomRadius 下半径
     */
    constructor(position: T_Position, length: number, topRadius: number, bottomRadius: number);
    get type(): any;
    set position(position: T_Position);
    get position(): T_Position;
    set length(length: number);
    get length(): number;
    set topRadius(topRadius: number);
    get topRadius(): number;
    set bottomRadius(bottomRadius: number);
    get bottomRadius(): number;
    _mountedHook(): void;
    /**
     *
     * @param  text
     * @param  textStyle
     */
    setLabel(text: string, textStyle: any): this;
    /**
     * 设置风格
     * @param style
     * @returns {Cylinder}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "heightReference": 0, //高度参照，0：位置无参照，位置是绝对的，1：位置固定在地形上 2：位置高度是指地形上方的高度。
     *   "fill": true, //是否用提供的材料填充多边形。
     *   "material": BC.Color.WHITE, //材质
     *   "outline": false, //是否显示边框
     *   "outlineColor": BC.Color.BLACK, //边框颜色
     *   "outlineWidth": 0, //边框宽度
     *   "shadows": 0, //阴影类型，0：禁用、1：启用 、2：投射、3：接受
     *   "distanceDisplayCondition": {
     *     "near": 0, //最近距离
     *     "far": Number.MAX_VALUE //最远距离
     *   } //根据距离设置可见
     * }
     * ```
     */
    setStyle(style: any): this;
}

/**
 * Czml 图层，用于加载 Czml 数据
 * @noInheritDoc
 * @example
 * ```js
 * let layer = new BC.CzmlLayer('id', '**\/**.czml')
 *  layer.eachOverlay((item) => {
 *    if (item.polyline) {
 *      //todo
 *    }
 *    if (item.polygon) {
 *      //todo
 *    }
 *    if (item.billboard) {
 *      //todo
 *    }
 *  })
 * ```
 */
export declare class CzmlLayer extends Layer {
    protected _delegate: Promise<Cesium.CzmlDataSource>;
    /**
     * @param id 图层唯一标识
     * @param url 数据地址
     * @param options 属性配置
     */
    constructor(id: string, url?: string, options?: {});
    /**
     * 类型
     */
    get type(): string;
    /**
     * 是否显示
     */
    set show(show: boolean);
    get show(): boolean;
    /**
     * 遍历覆盖物
     * @param method 回调方法
     * @param context
     * @returns {CzmlLayer}
     */
    eachOverlay(method: {
        (item: {
            attr: {
                [x: string]: any;
            };
        }): void;
        call?: any;
    }, context: this): this;
    setStyle(style: any): void;
    clear(): void;
}

declare const DEF_OPTS: {
    clampToGround: boolean;
    clampToTileset: boolean;
    interpolationType: string;
    interpolationDegree: number;
    endDelayTime: number;
    headingOffset: number;
};

/**
 * 景深效果
 * @example
 * ```ts
 * viewer.effect.depthOfField.enable = true
 * ```
 */
export declare class DepthOfField {
    private _viewer;
    private _delegate;
    private _enable;
    private _focalDistance;
    private _delta;
    private _sigma;
    private _stepSize;
    private _selected;
    private _state;
    constructor();
    /**
     * 类型
     * @ignore
     */
    get type(): string;
    /**
     * 是否启用
     */
    set enable(enable: boolean);
    get enable(): boolean;
    /**
     * 焦距
     */
    set focalDistance(focalDistance: number);
    get focalDistance(): number;
    /**
     * Delta
     */
    set delta(delta: number);
    get delta(): number;
    /**
     * Sigma
     */
    set sigma(sigma: number);
    get sigma(): number;
    /**
     * StepSize
     */
    set stepSize(stepSize: number);
    get stepSize(): number;
    /**
     * 设置后期作用的覆盖物
     */
    set selected(selected: any[]);
    get selected(): any[];
    /**
     *
     * @private
     */
    private _createPostProcessStage;
    /**
     * 添加效果
     * @param viewer
     * @returns {DepthOfField}
     * @ignore
     */
    addTo(viewer: Cesium.Viewer): DepthOfField;
}

/**
 * 扩散墙图元
 * @noInheritDoc
 * @example
 * ```ts
 * let position = new BC.Position(120, 20)
 * let wall = new BC.DiffuseWallPrimitive(position, 2000, 1000)
 * ```
 */
export declare class DiffuseWallPrimitive extends Overlay {
    private _center;
    private _height;
    private _radius;
    private _currentHeight;
    private _currentRadius;
    /**
     *
     * @param center 坐标
     * @param radius 半径
     * @param height 高度
     */
    constructor(center: T_Position, radius: number, height: number);
    get type(): any;
    set center(position: T_Position);
    get center(): T_Position;
    set radius(radius: number);
    get radius(): number;
    set height(height: number);
    get height(): number;
    /**
     *
     * @private
     */
    private _getPositions;
    /**
     *
     * @param length
     * @param hegiht
     * @private
     */
    private _getHeights;
    /**
     *
     * @param frameState
     */
    update(frameState: any): boolean;
    /**
     * 设置风格
     * @param style
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "minRadius": 10, // 动画最小半径
     *   "minHeight": 30, // 动画最小高度
     *   "color": BC.Color.RED, // 墙体颜色
     *   "slices": 128, //边数
     *   "speed": 10 //速度
     * }
     * ```
     */
    setStyle(style: any): this;
    destroy(): void;
}

/**
 * 比例尺
 * @noInheritDoc
 * @example
 * ```ts
 * viewer.distanceLegend.enable = true
 * ```
 */
declare class DistanceLegend extends Widget {
    private _labelEl;
    private _scaleBarEl;
    private _lastUpdate;
    /**
     * @hidden
     */
    constructor();
    /**
     * @hidden
     */
    get type(): any;
    /**
     *
     * @private
     */
    _installHook(): void;
    /**
     *
     * @private
     */
    _bindEvent(): void;
    /**
     *
     * @private
     */
    _unbindEvent(): void;
    /**
     *
     * @param scene
     * @param time
     * @returns
     * @private
     */
    _updateContent(scene: any, time: any): void;
    /**
     *
     * @private
     */
    _mountContent(): void;
}

/**
 * DivIcon
 * @noInheritDoc
 * @example
 * ```ts
 * let position = new BC.Position(120, 20)
 * let divIcon = new BC.DivIcon(position, '<div></div>')
 * ```
 */
export declare class DivIcon extends Overlay {
    private _position;
    /**
     *
     * @param position 坐标
     * @param content 内容
     */
    constructor(position: T_Position, content: any);
    get type(): any;
    set show(show: boolean);
    get show(): boolean;
    set position(position: T_Position);
    get position(): T_Position;
    set content(content: any);
    get content(): any;
    /**
     * Updates style
     * @param windowCoord
     * @param distance
     * @param isFront
     * @private
     */
    _updateStyle(windowCoord: any, distance: any, isFront: any): void;
    /**
     *
     * @param layer
     * @private
     */
    _onAdd(layer: Layer): void;
    /**
     *
     * @private
     */
    _onRemove(): void;
    /**
     * Sets text
     * @param text
     * @param textStyle
     */
    setLabel(text: string, textStyle: any): this;
    /**
     * 设置风格
     * @param style
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "className": "test", //样式名
     *   "scaleByDistance": {
     *     "near": 0, //最近距离
     *     "nearValue": 0, //最近距离值
     *     "far": 1, //最远距离值
     *     "farValue": 0 //最远距离值
     *   }, //根据距离设置比例
     *   "distanceDisplayCondition": {
     *     "near": 0, //最近距离
     *     "far": Number.MAX_VALUE //最远距离
     *   } //根据距离设置可见
     * }
     * ```
     */
    setStyle(style: any): this;
    /**
     * entity转换为overlay
     * @param entity
     * @param content
     */
    static fromEntity(entity: Cesium.Entity, content: any): any;
}

/**
 * DOM工具类
 */
export declare class DomUtil {
    /**
     * 根据id获取dom
     * @param id 要素 ID
     * @returns
     */
    static get(id: string): HTMLElement | any;
    /**
     * 返回元素上指定样式属性的值，包括计算值或通过CSS设置的值
     * @param el DOM元素
     * @param style 样式名称
     * @returns {null|*}
     */
    static getStyle(el: HTMLElement, style: string): null | any;
    /**
     * 创建 dom
     * @param tagName 标签名
     * @param className 样式名，多个用空格隔开
     * @param container 父容器
     * @returns {HTMLElement}
     */
    static create(tagName: string, className: string, container?: HTMLElement | string): HTMLElement;
    /**
     * 移除元素
     * @param el 被移除的要素
     */
    static remove(el: Element): void;
    /**
     * 移除元素的所有子元素
     * @param el 元素
     */
    static empty(el: Element): void;
    /**
     * 判断元素是否具有指定的类
     * @param el DOM元素
     * @param name 类名
     */
    static hasClass(el: Element, name: string): boolean;
    /**
     * 添加类
     * @param el DOM元素
     * @param name 类名
     */
    static addClass(el: Element, name: string): void;
    /**
     * 删除元素指定的类
     * @param el DOM元素
     * @param name 类名
     */
    static removeClass(el: Element, name: string): void;
    /**
     * 设置元素的类
     * @param el DOM元素
     * @param name
     */
    static setClass(el: Element, name: string): void;
    /**
     * 返回元素的类
     * @param el
     */
    static getClass(el: Element): any;
    /**
     * 创建SVG
     * @param width 宽度
     * @param height 高度
     * @param path 路径
     * @param container 父容器
     * @returns
     */
    static createSvg(width: string, height: string, path: string, container: Element): SVGElement;
    /**
     * 字符串转 Dom
     * @param domStr dom 字符串
     * @param withWrapper 返回是否含有父容器
     * @param className 类样式名称
     * @returns {HTMLDivElement|NodeListOf<ChildNode>}
     */
    static parseDom(domStr: string, withWrapper: boolean, className: string): HTMLDivElement | NodeListOf<ChildNode>;
    /**
     * 进入全屏
     * @param el 要素
     */
    static enterFullscreen(el: Element): void;
    /**
     * 退出全屏
     */
    static exitFullscreen(): void;
    /**
     * 创建视频节点
     * @param url 视频地址
     * @param className 样式名，多个用空格隔开
     * @param container 父容器
     * @returns {HTMLElement}
     */
    static createVideo(url: string, className: string, container?: HTMLElement): HTMLElement;
}

/**
 * 双箭头
 * @noInheritDoc
 * @example
 * ```ts
 * let doubleArrow = new BC.DoubleArrow('-90.0,32.0;-94.0,36.0;-94.0,38.0')
 * ```
 */
export declare class DoubleArrow extends Overlay {
    /**
     * @hidden
     */
    private _positions;
    /**
     * @hidden
     */
    private headHeightFactor;
    /**
     * @hidden
     */
    private headWidthFactor;
    /**
     * @hidden
     */
    private neckHeightFactor;
    /**
     * @hidden
     */
    private neckWidthFactor;
    /**
     * @hidden
     */
    private _primitive;
    /**
     * @param {T_Position} positions
     * @return {*}
     */
    constructor(positions: T_Position[]);
    get type(): any;
    set positions(positions: T_Position[]);
    get positions(): T_Position[];
    protected _updatePrimitive(): void;
    _getArrowPoints(pnt1: any, pnt2: any, pnt3: any, clockWise: any): any[];
    _getArrowHeadPoints(points: any): any[];
    protected _getArrowBodyPoints(points: any, neckLeft: any, neckRight: any, tailWidthFactor: any): any[];
    _getTempPoint4(linePnt1: any, linePnt2: any, point: any): any;
    protected _getHierarchy(): Cesium.PolygonHierarchy;
    _mountedHook(): void;
    setLabel(text: string, textStyle: any): this;
    /**
     * 设置箭头风格
     * 详情参考：@see {@link Polygon}
     * @param style
     * @returns {DoubleArrow}
     */
    setStyle(style: any): this;
}

/**
 * 动态图标
 * @noInheritDoc
 * @example
 * ```ts
 * let position = new BC.Position(120, 20)
 * let billboard = new BC.DynamicBillboard(position, '*.png')
 * billboard.size = [20, 20]
 * ```
 */
export declare class DynamicBillboard extends DynamicOverlay {
    _posistion: Position;
    _icon: any;
    _state: string;
    _size: any[];
    constructor(position: T_Position, icon: any);
    get type(): any;
    set icon(icon: any);
    get icon(): any;
    set size(size: any[]);
    get size(): any[];
    _mountedHook(): void;
    /**
     *
     * @param style
     * @returns {DynamicBillboard}
     */
    setStyle(style: {
        [x: string]: any;
    }): this;
}

/**
 * 动态图层，用于添加各类动态矢量数据（图标、模型等），将矢量数据按一定的逻辑分组，方便统一管理。
 * @noInheritDoc
 * @example
 * ```ts
 * let layer = new BC.DynamicLayer('id');
 * viewer.addLayer(layer);
 * ```
 */
export declare class DynamicLayer extends Layer {
    /**
     * @param id 图层唯一标识
     */
    constructor(id: string);
    /**
     * 类型
     */
    get type(): string;
    /**
     * 清除所有实体
     * @returns {DynamicLayer}
     */
    clear(): DynamicLayer;
    setStyle(style: any): void;
}

/**
 * 动态模型
 * @noInheritDoc
 * @example
 * ```ts
 * let position = new BC.Position(120, 20)
 * let model = new BC.DynamicModel(position, '*.glb')
 * ```
 */
export declare class DynamicModel extends DynamicOverlay {
    _posistion: Position;
    _modelUrl: string;
    _state: string;
    constructor(position: T_Position, modelUrl: string);
    get type(): any;
    set modelUrl(modelUrl: string);
    get modelUrl(): string;
    _mountedHook(): void;
    /**
     * 设置风格
     * @param style
     * @returns {DynamicModel}
     */
    setStyle(style: any): this;
}

declare class DynamicOverlay extends Overlay {
    _startTime: Cesium.JulianDate | undefined;
    _lastTime: Cesium.JulianDate | undefined;
    _sampledPosition: Cesium.SampledPositionProperty;
    _cache: Cesium.JulianDate[];
    _maxCacheSize: number;
    constructor();
    set maxCacheSize(maxCacheSize: number);
    get maxCacheSize(): number;
    get position(): Position;
    /**
     *
     * @private
     */
    _removePosition(): void;
    /**
     *
     * @param position
     * @param interval
     */
    addPosition(position: T_Position, interval: number): this;
    /**
     *
     * @param content
     */
    bindDom(content: any): this;
}

/**
 * 效果类
 * @example
 * ```ts
 * let effect = new BC.Effect();
 * viewer.use(effect);
 * ```
 */
export declare class Effect {
    private _comps;
    /**
     * 构造函数
     */
    constructor();
    /**
     * 黑白效果
     */
    get blackAndWhite(): BlackAndWhite;
    /**
     * 泛光效果
     */
    get bloom(): Bloom;
    /**
     * 明亮效果
     */
    get brightness(): Brightness;
    /**
     * 景深效果
     */
    get depthOfField(): DepthOfField;
    /**
     * 镜头耀斑效果
     */
    get lensFlare(): LensFlare;
    /**
     * 夜视效果
     */
    get night(): NightVision;
    /**
     * 描边效果
     */
    get silhouette(): Silhouette;
    /**
     * 注册效果
     * @param viewer
     * @ignore
     */
    install(viewer: Cesium.Viewer): void;
}

/**
 * 电弧球图元
 * @noInheritDoc
 * @example
 * ```ts
 * let elecEllipsoid = new BC.ElecEllipsoidPrimitive('120,20',{x:2000,y:2000:z:2000})
 * ```
 */
export declare class ElecEllipsoidPrimitive extends Overlay {
    private _position;
    private _radius;
    /**
     *
     * @param position 坐标
     * @param radius x、y、z半径
     */
    constructor(position: T_Position, radius: {
        x: number;
        y: number;
        z: number;
    });
    get type(): any;
    set position(position: T_Position);
    get position(): T_Position;
    set radius(radius: {
        x: number;
        y: number;
        z: number;
    });
    get radius(): {
        x: number;
        y: number;
        z: number;
    };
    /**
     *
     * @private
     */
    _setAppearance(): void;
    _mountedHook(): void;
    /**
     *
     * @param text
     * @param textStyle
     */
    setLabel(text: string, textStyle: any): this;
    /**
     * 设置风格
     * @param style
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "speed": 5, //速度
     *   "color": BC.Color.WHITE //颜色
     * }
     * ```
     */
    setStyle(style?: {}): this;
}

/**
 * 椭圆
 * @noInheritDoc
 * @example
 * ```ts
 * let position = new BC.Position(120, 20)
 * let ellipse = new BC.Ellipse(position, 20, 30)
 * ```
 */
export declare class Ellipse extends Overlay {
    private _position;
    private _semiMajorAxis;
    private _semiMinorAxis;
    /**
     *
     * @param position 位置
     * @param semiMajorAxis 长半轴
     * @param semiMinorAxis 短半轴
     */
    constructor(position: T_Position, semiMajorAxis: number, semiMinorAxis: number);
    get type(): any;
    set position(position: T_Position);
    get position(): T_Position;
    set semiMajorAxis(semiMajorAxis: number);
    get semiMajorAxis(): number;
    set semiMinorAxis(semiMinorAxis: number);
    get semiMinorAxis(): number;
    _mountedHook(): void;
    /**
     * 设置风格
     * @param style
     * @returns {Ellipse}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "height": 1, //高度
     *   "heightReference": 0, //高度参照，0：位置无参照，位置是绝对的，1：位置固定在地形上 2：位置高度是指地形上方的高度。
     *   "extrudedHeight": 0, //拉升高度
     *   "rotation": 0, //顺时针旋转角度
     *   "stRotation": 0, //逆时针旋转角度
     *   "fill": true, //是否用提供的材料填充多边形。
     *   "material": BC.Color.WHITE, //材质
     *   "outline": false, //是否显示边框
     *   "outlineColor": BC.Color.BLACK, //边框颜色
     *   "outlineWidth": 0, //边框宽度
     *   "shadows": 0, //阴影类型，0：禁用、1：启用 、2：投射、3：接受
     *   "distanceDisplayCondition": {
     *     "near": 0, //最近距离
     *     "far": Number.MAX_VALUE //最远距离
     *   }, //根据距离设置可见
     *   "classificationType": 2, //分类 是否影响地形，3D切片或同时影响这两者。0:地形、1:3D切片、2：两者
     *   "zIndex": 0 //层级
     * }
     * ```
     */
    setStyle(style: any): this;
}

/**
 * 球体
 * @noInheritDoc
 * @example
 * ```ts
 * let position = new BC.Position(120, 20)
 * let ellipsoid = new BC.Ellipsoid(position, { x: 30, y: 30, z: 30 })
 * ```
 */
export declare class Ellipsoid extends Overlay {
    private _position;
    private _radius;
    /**
     *
     * @param position 位置
     * @param radius x、y、z半径
     */
    constructor(position: T_Position, radius: {
        x: number;
        y: number;
        z: number;
    });
    get type(): any;
    set position(position: T_Position);
    get position(): T_Position;
    set radius(radius: {
        x: number;
        y: number;
        z: number;
    });
    get radius(): {
        x: number;
        y: number;
        z: number;
    };
    _mountedHook(): void;
    /**
     * 设置风格
     * @param style
     * @returns {Ellipsoid}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "heightReference": 0, //高度参照，0：位置无参照，位置是绝对的，1：位置固定在地形上 2：位置高度是指地形上方的高度。
     *   "fill": true, //是否用提供的材料填充多边形。
     *   "material": BC.Color.WHITE, //材质
     *   "outline": false, //是否显示边框
     *   "outlineColor": BC.Color.BLACK, //边框颜色
     *   "outlineWidth": 0, //边框宽度
     *   "shadows": 0, //阴影类型，0：禁用、1：启用 、2：投射、3：接受
     *   "distanceDisplayCondition": {
     *     "near": 0, //最近距离
     *     "far": Number.MAX_VALUE //最远距离
     *   } //根据距离设置可见
     * }
     * ```
     */
    setStyle(style: any): this;
}

/**
 * 电弧球材质
 * @noInheritDoc
 * @example
 * ```ts
 * let material = new BC.EllipsoidElectricMaterialProperty({
 *   color: BC.Color.WHITE,
 * })
 * ```
 */
export declare class EllipsoidElectricMaterialProperty extends MaterialProperty {
    /**
     * 颜色
     */
    color: Cesium.Color;
    /**
     * 速度
     */
    speed: number;
    /**
     * @param options 属性
     */
    constructor(options?: {
        /**
         * 颜色
         * @defaultValue BC.Color.fromBytes(0, 255, 255, 255)
         */
        color: Cesium.Color;
        /**
         * 速度
         * @defaultValue 1
         */
        speed: number;
    });
    /* Excluded from this release type: getType */
    /* Excluded from this release type: getValue */
    /* Excluded from this release type: equals */
}

/**
 * 轨迹球材质
 * @noInheritDoc
 * @example
 * ```ts
 * let material = new BC.EllipsoidTrailMaterialProperty({
 *   color: BC.Color.WHITE,
 * })
 * ```
 */
export declare class EllipsoidTrailMaterialProperty extends MaterialProperty {
    /**
     * 颜色
     */
    color: Cesium.Color;
    /**
     * 速度
     */
    speed: number;
    /**
     * @param options 属性
     */
    constructor(options?: {
        /**
         * 颜色
         * @defaultValue BC.Color.fromBytes(0, 255, 255, 255)
         */
        color: Cesium.Color;
        /**
         * 速度
         * @defaultValue 1
         */
        speed: number;
    });
    /* Excluded from this release type: getType */
    /* Excluded from this release type: getValue */
    /* Excluded from this release type: equals */
}

declare class Event_2 {
    _cache: {};
    constructor();
    /**
     * Event registration
     * Subclasses need to override
     * @protected
     */
    protected _registerEvent(): void;
    /**
     * @param type
     * @param callback
     * @param context
     * @returns {any}
     * @private
     */
    _on(type: any, callback: (e: any) => void, context: any): any;
    /**
     * @param type
     * @param callback
     * @param context
     * @returns {boolean}
     * @private
     */
    _off(type: any, callback: any, context: any): boolean;
    /**
     * @param type
     * @param params
     * @private
     */
    _fire(type: any, params: any): void;
    /**
     * Subscribe event
     * @param type
     * @param callback
     * @param context
     * @returns remove callback function
     */
    on(type: any, callback: any, context: any): any;
    /**
     * Subscribe once event
     * @param type
     * @param callback
     * @param context
     */
    once(type: any, callback: (arg0: any) => void, context: any): void;
    /**
     * Unsubscribe event
     * @param type
     * @param callback
     * @param context
     * @returns Boolean
     */
    off(type: any, callback: any, context: any): boolean;
    /**
     * Trigger subscription event
     * @param type
     * @param params
     */
    fire(type: any, params: any): void;
    /**
     * Returns events by type
     * @param type
     * @returns Event
     */
    getEvent(type: string | number): any;
}

/**
 *
 */
export declare class FeatureGridLayer extends Layer {
    private _url;
    private _options;
    private _levelLayers;
    private _tileWidth;
    private _tileHeight;
    private _maximumLevel;
    private _tilingScheme;
    private _rectangle;
    private _credit;
    private _token;
    private _imageryLayer;
    private _imagery;
    constructor(id: any, url: any, options?: {});
    get type(): string;
    get url(): any;
    set show(show: boolean);
    get show(): boolean;
    get token(): any;
    get tileWidth(): number;
    get tileHeight(): number;
    get maximumLevel(): any;
    get minimumLevel(): number;
    get tilingScheme(): any;
    get rectangle(): any;
    get ready(): boolean;
    get credit(): any;
    get hasAlphaChannel(): boolean;
    /**
     *
     * @param {*} viewer
     * @returns
     */
    _onAdd(viewer: any): void;
    _onRemove(): void;
    getTileCredits(x: any, y: any, level: any): void;
    /**
     *
     * @param {*} x
     * @param {*} y
     * @param {*} level
     * @param {*} request
     * @returns
     */
    requestImage(x: any, y: any, level: any, request: any): HTMLCanvasElement;
    /**
     *
     */
    clear(): void;
    setStyle(style: any): void;
}

/**
 * 细箭头
 * @noInheritDoc
 * @example
 * ```ts
 * let fineArrow = new BC.FineArrow('-90.0,32.0;-94.0,36.0;-94.0,38.0')
 * ```
 */
export declare class FineArrow extends Overlay {
    /**
     * @hidden
     */
    private _positions;
    /**
     * @hidden
     */
    private headHeightFactor;
    /**
     * @hidden
     */
    private headWidthFactor;
    /**
     * @hidden
     */
    private neckHeightFactor;
    /**
     * @hidden
     */
    private neckWidthFactor;
    /**
     * @hidden
     */
    private tailWidthFactor;
    /**
     * @hidden
     */
    private headAngle;
    /**
     * @hidden
     */
    private neckAngle;
    /**
     * @hidden
     */
    private _primitive;
    /**
     * @param {T_Position} positions
     * @return {*}
     */
    constructor(positions: T_Position[]);
    get type(): any;
    set positions(positions: T_Position[]);
    get positions(): T_Position[];
    protected _updatePrimitive(): void;
    /**
     * 获取箭头点集合
     * @param {Array} pnt1 - 起点
     * @param {Array} pnt2 - 终点
     * @param {Array} pnt3 - 控制点（可能为undefined）
     * @param {boolean} clockWise - 是否顺时针
     * @return {Array} 箭头点集合
     */
    _getArrowPoints(pnt1: any, pnt2: any, pnt3: any, clockWise: any): any[];
    protected _getHierarchy(): Cesium.PolygonHierarchy;
    _mountedHook(): void;
    setLabel(text: string, textStyle: any): this;
    /**
     * 设置箭头风格
     * 详情参考：@see {@link Polygon}
     * @param style
     * @returns {FineArrow}
     */
    setStyle(style: any): this;
}

export declare class FloodByEntity {
    _viewer: Viewer;
    extrudedHeight: number;
    entity: any;
    options: any;
    private _last_depthTestAgainstTerrain;
    timeIdx: NodeJS.Timer;
    constructor();
    get height(): number;
    set height(val: number);
    get viewer(): Viewer;
    start(entity: any, options: any): void;
    stop(): void;
    clear(): void;
    destroy(): void;
    updateHeight(height: any): void;
    /**
     *
     * @param viewer
     */
    install(viewer: Viewer): void;
    uninstall(viewer: any): void;
}

/**
 * 流动线图元
 * @noInheritDoc
 * @example
 * ```ts
 * let flowLinePrimitive = new BC.FlowLinePrimitive('120,20;120,30;122,30')
 * ```
 */
export declare class FlowLinePrimitive extends Overlay {
    private _positions;
    private _width;
    /**
     *
     * @param positions 坐标串
     * @param width 宽度
     */
    constructor(positions: T_Position[], width?: number);
    get type(): any;
    set positions(positions: T_Position[]);
    get positions(): T_Position[];
    /**
     *
     * @private
     */
    _setAppearance(): void;
    _mountedHook(): void;
    /**
     *
     * @param text
     * @param textStyle
     */
    setLabel(text: string, textStyle: any): this;
    /**
     * 设置风格
     * @param style
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "speed": 5, //速度
     *   "color": BC.Color.WHITE, //颜色
     *   "percent": 0.3, // 比例
     *   "gradient": 0.1 // 透明程度
     * }
     * ```
     */
    setStyle(style?: any): this;
}

/**
 * 定点巡航
 * ```example
 * let flying = new BC.Flying(viewer)
 * flying.positions = ['121.234,21.212,0,-29', '121.435,21.212,0,-29']
 * flying.start()
 * ```
 */
export declare class Flying extends Animation_2 {
    private _positions;
    private _durations;
    private _currentIndex;
    private _timer;
    /**
     *
     * @param viewer 3D场景
     * @param options 选项
     */
    constructor(viewer: Viewer, options?: {
        /**是否循环 */
        loop: boolean;
        /**驻留时间 */
        dwellTime: number;
        /**回调函数 */
        callback: any;
    });
    /* Excluded from this release type: type */
    /**
     * 巡航路线
     */
    set positions(positions: any[]);
    /**
     * 巡航路线
     */
    get positions(): any[];
    /**
     * 每个点位的飞行间隔时间，当数组长度为 1 时，每个间隔时间相同，
     * 如果不为 1 时，长度必须和点位长度相等
     */
    set durations(durations: number[]);
    get durations(): number[];
    protected _bindEvent(): void;
    protected _unbindEvent(): void;
    private _cameraFly;
    /**
     * 开始
     */
    start(): this;
    /**
     * 暂停
     */
    pause(): this;
    /**
     * 继续
     */
    restore(): this;
}

/**
 * 雾天效果
 * @example
 * ```ts
 * viewer.weather.fog.enable = true
 * viewer.weather.fog.fogColor = BC.Color.BLACK
 * ```
 */
export declare class Fog {
    private _id;
    private _viewer;
    private _delegate;
    private _enable;
    private _fogByDistance;
    private _color;
    private _state;
    constructor();
    /**
     * 类型
     */
    get type(): string;
    set enable(enable: boolean);
    /**
     * 是否启用
     */
    get enable(): boolean;
    set fogByDistance(fogByDistance: {
        near: number;
        nearValue: number;
        far: number;
        farValue: number;
    });
    /**
     * 距离可见，默认 `{ near: 10, nearValue: 0, far: 2000, farValue: 1.0 }`
     */
    get fogByDistance(): {
        near: number;
        nearValue: number;
        far: number;
        farValue: number;
    };
    set color(color: Cesium.Color);
    /**
     * 颜色
     */
    get color(): Cesium.Color;
    /**
     *
     */
    private _createPostProcessStage;
    /* Excluded from this release type: addTo */
}

/**
 * 聚集地
 * @noInheritDoc
 * @example
 * ```ts
 * let gatheringPlace = new BC.GatheringPlace('-90.0,32.0;-94.0,36.0')
 * ```
 */
export declare class GatheringPlace extends Overlay {
    /**
     * @hidden
     */
    private _positions;
    /**
     * @hidden
     */
    private t;
    /**
     * @param {T_Position} positions
     * @return {*}
     */
    constructor(positions: T_Position[]);
    get type(): any;
    set positions(positions: T_Position[]);
    /**
     * 坐标串
     */
    get positions(): T_Position[];
    protected _getHierarchy(): Cesium.PolygonHierarchy;
    /**
     * @hidden
     */
    _mountedHook(): void;
    /**
     * @hidden
     */
    setLabel(text: string, textStyle: any): this;
    /**
     * 设置风格
     * 详情参考：@see {@link Polygon}
     * @param style
     */
    setStyle(style: any): this;
}

export declare const GeographicTilingScheme: typeof globalThis.Cesium.GeographicTilingScheme;

/**
 * GeoJson 图层，用于加载 GeoJson 格式数据
 * @noInheritDoc
 * @example
 * ```ts
 * let layer = new BC.GeoJsonLayer('id', '**\/**.geojson')
 * layer.eachOverlay((item) => {
 *   // item 为一个entity,
 *   if (item.polyline) {
 *     //todo
 *     let polyline = BC.Polyline.fromEntity(item)
 *   }
 *   if (item.polygon) {
 *     //todo
 *     let polygon = BC.Polygon.fromEntity(item)
 *   }
 *   if (item.billboard) {
 *     //todo
 *     let point = BC.Point.fromEntity(item)
 *     let divIcon = BC.DivIcon.fromEntity(item)
 *     let billboard = BC.Billboard.fromEntity(item)
 *   }
 * })
 * ```
 */
export declare class GeoJsonLayer extends Layer {
    /**
     * @param id 图层唯一标识
     * @param url 数据地址
     * @param options 属性配置
     */
    constructor(id: string, url: string, options?: {});
    /**
     * 类型
     */
    get type(): string;
    /**
     * 是否显示
     */
    set show(show: boolean);
    get show(): boolean;
    /**
     * 创建图标
     * @param entity
     * @returns
     */
    private _createBillboard;
    /**
     * 创建线实体
     * @param entity
     * @returns {any}
     * @private
     */
    private _createPolyline;
    /**
     * 创建面实体
     * @param entity
     * @returns {any}
     * @private
     */
    _createPolygon(entity: Cesium.Entity): Polygon;
    /**
     * 创建模型
     * @param entity
     * @param modelUrl 模型url
     * @returns 模型
     * @private
     */
    _createModel(entity: Cesium.Entity, modelUrl: string): Model;
    /**
     * 遍历覆盖物
     * @param method 回调方法
     * @param context
     * @returns {GeoJsonLayer}
     */
    eachOverlay(method: any, context: any): GeoJsonLayer;
    /**
     * 转换为矢量图层
     * @returns 矢量图层
     */
    toVectorLayer(): VectorLayer;
    /**
     * 转换为模型图层
     * @param modelUrl 模型地址
     * @returns {VectorLayer}
     */
    toModelLayer(modelUrl: string): VectorLayer;
    clear(): void;
    setStyle(style: any): void;
}

/**
 * 地球自转
 * @example
 * ```ts
 * let globeRotate = new BC.GlobeRotate(viewer, {
 *   duration: 5,
 *   speed: 1000,
 *   callback: () => {},
 * })
 * globeRotate.start()
 * ```
 */
export declare class GlobeRotate extends Animation_2 {
    /**
     * @param viewer 3D场景
     * @param options 选项
     */
    constructor(viewer: Viewer, options?: {
        /**
         * 速度
         */
        speed: number;
        /**持续时间,当此值大于0时，callback才会生效 */
        duration: number;
        /**
         * 执行完成的回调函数
         */
        callback: any;
        /**
         * 回调函数执行上下文
         */
        context: any;
    });
    /* Excluded from this release type: type */
    /**
     * @param scene
     * @param time
     * @returns {boolean}
     */
    private _icrf;
    /**
     * Bind the Event
     */
    protected _bindEvent(): void;
    /**
     * Unbind the Event
     */
    protected _unbindEvent(): void;
}

declare class GoogleImageryProvider extends Cesium_2.UrlTemplateImageryProvider {
    constructor(options?: any);
}

/**
 * GPX 图层，用于加载 gpx 数据
 * @noInheritDoc
 * @example
 * ```ts
 * let layer = new BC.GpxLayer('id', '**\/**.gpx')
 * ```
 */
export declare class GpxLayer extends Layer {
    /**
     * @param id 图层唯一标识
     * @param url 数据地址
     * @param options 属性配置
     */
    constructor(id: string, url: string, options?: {});
    /**
     * 类型
     */
    get type(): string;
    /**
     * 是否显示
     */
    set show(show: boolean);
    get show(): boolean;
    /**
     * 遍历图层
     * @param method 回调方法
     * @param context
     * @returns
     */
    eachOverlay(method: any, context: any): this;
    clear(): void;
    setStyle(style: any): void;
}

export declare class GroundPolygonPrimitive extends Overlay {
    private _positions;
    _minHeight: number;
    _extrudedHeight: number;
    /**
     *
     * @param positions 坐标串
     * @param holes 空心坐标串
     */
    constructor(positions: string | T_Position[]);
    get type(): any;
    set positions(positions: string | T_Position[]);
    get positions(): string | T_Position[];
    private getMinHeight;
    private getMaxHeight;
    set minHeight(height: number);
    get minHeight(): number;
    set extrudedHeight(height: number);
    get extrudedHeight(): number;
    /**
     *
     * @private
     */
    private _setAppearance;
    _mountedHook(): void;
    /**
     * 设置风格
     * @param style
     * @returns {WaterPrimitive}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "color": Color.WHITE, // 颜色
     *   "speed": 10, // 速度
     *   "image": "/img.png", // 材质图片地址
     *   "repeat": {x:5,y:1}, // 重复规则
     * }
     * ```
     */
    setStyle(style: any): this;
}

/**
 * 近景天空盒子
 * @noInheritDoc
 * @example
 * ```ts
 * scene.skyBox = new BC.GroundSkyBox({
 *   sources: {
 *     positiveX: 'skybox_px.png',
 *     negativeX: 'skybox_nx.png',
 *     positiveY: 'skybox_py.png',
 *     negativeY: 'skybox_ny.png',
 *     positiveZ: 'skybox_pz.png',
 *     negativeZ: 'skybox_nz.png',
 *   },
 * })
 * ```
 */
export declare class GroundSkyBox extends Cesium_2.SkyBox {
    offsetAngle: number;
    _sources: any;
    _cubeMap: any;
    _command: any;
    _attributeLocations: any;
    _useHdr: any;
    show: any;
    sources: any;
    /**
     *
     * @param options
     * @example
     * ```json
     * //options(可选)
     * {
     *   "sources": {}, // 六个面的贴图
     *   "show": true, //显示
     *   "offsetAngle": 0 //旋转角度
     * }
     * ```
     */
    constructor(options?: any);
    update(frameState?: any, useHdr?: any): any;
}

declare class HawkeyeMap extends Widget {
    _baseLayers: Cesium.ImageryLayer[];
    _map: Cesium.Viewer;
    constructor();
    get type(): any;
    get baseLayers(): Cesium.ImageryLayer[];
    /**
     *
     * @private
     */
    _mountContent(): void;
    /**
     *
     * @private
     */
    _bindEvent(): void;
    /**
     *
     * @private
     */
    _unbindEvent(): void;
    /**
     *
     * @private
     */
    _installHook(): void;
    /**
     *
     * @returns {boolean}
     * @private
     */
    _syncMap(): boolean;
    /**
     *
     * @param baseLayer
     * @returns {HawkeyeMap}
     */
    addBaseLayer(baseLayer: Cesium.ImageryProvider): this;
}

export declare class HeatMapLayer extends Layer {
    setStyle(style: any): void;
    _options: {
        radius: number;
        height: number;
        gradient: any;
        useGround: boolean;
        classificationType: number;
    };
    _canvas: HTMLCanvasElement;
    _heat: any;
    _scale: number;
    _points: any[];
    _bounds: Cesium.Rectangle;
    _boundsInMeter: any;
    _primitive: any;
    constructor(id: any, options?: {});
    get type(): string;
    /**
     *
     * @private
     */
    _addedHook(): void;
    /**
     *
     * @returns {HTMLCanvasElement|undefined}
     * @private
     */
    _createGradientTexture(): HTMLCanvasElement;
    /**
     *
     * @param points
     * @returns {*}
     * @private
     */
    _parsePoints(points: any): any;
    /**
     *
     * @private
     */
    _computeBounds(): void;
    /**
     *
     * @returns {{east, south, north, west}}
     * @private
     */
    _computeBoundsInMeter(): void;
    /**
     *
     * @returns {boolean}
     * @private
     */
    _update(): boolean;
    /**
     *
     * @param points
     * @returns {HeatMapLayer}
     */
    setPoints(points: any): this;
    /**
     *
     * @return {HeatMapLayer}
     */
    clear(): this;
}

export declare class HeightControl {
    _viewer: Viewer;
    _vectorLayer: VectorLayer;
    _plot: Plot;
    _layer: PrimitiveLayer;
    _controlHeight: number;
    minHeight: number;
    _interval: NodeJS.Timer;
    _primitive: GroundPolygonPrimitive;
    _overlay: Polygon;
    _label: Label;
    currentHeight: number;
    maxHeight: number;
    constructor(options: any);
    get viewer(): Viewer;
    get vectorLayer(): VectorLayer;
    get layer(): PrimitiveLayer;
    get plot(): Plot;
    get controlHeight(): number;
    set controlHeight(val: number);
    drawPolygon(): void;
    startAnalysis(controlHeight: any): void;
    clear(): void;
    destroy(): void;
    /**
     *
     * @param viewer
     */
    install(viewer: Viewer): void;
    uninstall(viewer: any): void;
}

export declare const HeightReference: typeof globalThis.Cesium.HeightReference;

export declare const HorizontalOrigin: typeof globalThis.Cesium.HorizontalOrigin;

/**
 * Html 图层，用于加载 DivIcon 节点
 * @noInheritDoc
 * @example
 * ```ts
 * let layer = new BC.HtmlLayer('dom')
 * viewer.addLayer(layer)
 * ```
 */
export declare class HtmlLayer extends Layer {
    private _renderRemoveCallback;
    /**
     * @param id 图层唯一标识
     */
    constructor(id: string);
    /**
     * 类型
     */
    get type(): string;
    /**
     * 是否显示
     */
    set show(show: boolean);
    get show(): boolean;
    /**
     * 添加句柄
     * @param viewer
     */
    protected _onAdd(viewer: Cesium.Viewer): void;
    /**
     * 移除句柄
     */
    protected _onRemove(): void;
    /**
     * 清除图层
     */
    clear(): this;
    setStyle(style: any): void;
}

export declare const ImageMaterialProperty: typeof globalThis.Cesium.ImageMaterialProperty;

/**
 * 地图工厂, 用于创建各类地图瓦片
 * @example
 * ```ts
 * let baseLayer = BC.ImageryLayerFactory.createAmapImageryLayer({
 *   style: 'img',
 * })
 * viewer.addBaseLayer(baseLayer, {
 *   name: '地图',
 *   iconUrl: '../preview.png',
 * })
 * ```
 */
export declare class ImageryLayerFactory {
    /**
     * 创建高德地图
     * @param options
     * @returns
     */
    static createAmapImageryLayer(options: any): Cesium.ImageryProvider;
    /**
     * 创建百度地图
     * @param options 参考：{@link [Cesium.UrlTemplateImageryProvider.ConstructorOptions](https://cesium.com/learn/cesiumjs/ref-doc/UrlTemplateImageryProvider.html#.ConstructorOptions)}
     * @returns
     */
    static createBaiduImageryLayer(options: any): BaiduImageryProvider;
    /**
     * 创建谷歌地图
     * @param options
     * @returns
     */
    static createGoogleImageryLayer(options: any): GoogleImageryProvider;
    /**
     * 创建天地图
     * @param options
     * @returns {TdtImageryProvider}
     */
    static createTdtImageryLayer(options: any): TdtImageryProvider;
    /**
     * 创建腾讯地图
     * @param options
     * @returns {TencentImageryProvider}
     */
    static createTencentImageryLayer(options: any): TencentImageryProvider;
    /**
     * 创建 Arcgis 地图
     * @param options
     * @returns {module:cesium.ArcGisMapServerImageryProvider}
     */
    static createArcGisImageryLayer(options: any): Cesium.ArcGisMapServerImageryProvider;
    /**
     * 创建单图片地图
     * @param options
     * @returns {module:cesium.SingleTileImageryProvider}
     */
    static createSingleTileImageryLayer(options: any): Cesium.SingleTileImageryProvider;
    /**
     * 创建 WMS 地图
     * @param options
     * @returns {module:cesium.WebMapServiceImageryProvider}
     */
    static createWMSImageryLayer(options: any): Cesium.WebMapServiceImageryProvider;
    /**
     * 创建 WMTS 地图
     * @param options
     * @returns {module:cesium.WebMapTileServiceImageryProvider}
     */
    static createWMTSImageryLayer(options: any): Cesium.WebMapTileServiceImageryProvider;
    /**
     * 创建 X/Y/Z 地图
     * @param options
     * @returns {module:cesium.UrlTemplateImageryProvider}
     */
    static createXYZImageryLayer(options: any): Cesium.UrlTemplateImageryProvider;
    /**
     * 创建坐标系地图
     * @param options
     * @returns {module:cesium.TileCoordinatesImageryProvider}
     */
    static createCoordImageryLayer(options: any): Cesium.TileCoordinatesImageryProvider;
    /**
     * 创建网格地图
     * @param options
     * @returns {module:cesium.GridImageryProvider}
     */
    static createGridImageryLayer(options: any): Cesium.GridImageryProvider;
    /**
     * 创建 Mapbox 地图
     * @param options
     * @returns {module:cesium.MapboxImageryProvider}
     */
    static createMapboxImageryLayer(options: any): Cesium.MapboxImageryProvider;
    /**
     * 创建 Mapbox 样式地图
     * @param options
     * @returns {module:cesium.MapboxStyleImageryProvider}
     */
    static createMapboxStyleImageryLayer(options: any): Cesium.MapboxStyleImageryProvider;
    /**
     * 创建 TMS 地图
     * @param options
     * @returns {module:cesium.TileMapServiceImageryProvider}
     */
    static createTMSImageryLayer(options: any): Cesium.TileMapServiceImageryProvider;
    /**
     * 创建MVT矢量切片地图
     * @param options
     * @returns
     */
    static createMVTImageryLayer(options: any): MVTImageryProvider;
    /**
     * 根据类型创建地图
     * @param type 类型，参考：{@link ImageryType}
     * @param options 地图选项
     * @returns
     */
    static createImageryLayer(type: string, options: Object): any;
}

export declare enum ImageryType {
    /**
     * Arcgis 地图
     */
    ARCGIS = "arcgis",
    /**
     * 单图片地图
     */
    SINGLE_TILE = "single_tile",
    /**
     * WMS 地图
     */
    WMS = "wms",
    /**
     * WMTS 地图
     */
    WMTS = "wmts",
    /**
     * X/Y/Z 地图
     */
    XYZ = "xyz",
    /**
     * 坐标系地图
     */
    COORD = "coord",
    /**
     * 网格地图
     */
    GRID = "grid",
    /**
     * Mapbox 地图
     */
    MAPBOX = "mapbox",
    /**
     * Mapbox 样式地图
     */
    MAPBOX_STYLE = "mapbox_style",
    /**
     * TMS 地图
     */
    TMS = "tms",
    /**
     * 高德地图
     */
    AMAP = "amap",
    /**
     * 百度地图
     */
    BAIDU = "baidu",
    /**
     * 谷歌地图
     */
    GOOGLE = "google",
    /**
     * 天地图
     */
    TDT = "tdt",
    /**
     * 腾讯地图
     */
    TENCENT = "tencent",
    /**
     * 矢量切片地图
     */
    MVT = "mvt"
}

export declare class ImageTrailPolylineVolumePrimitive extends Overlay {
    private _positions;
    private _shape;
    /**
     *
     * @param positions 坐标串
     * @param holes 空心坐标串
     */
    constructor(positions: string | T_Position[], shape: any[]);
    get type(): any;
    set positions(positions: string | T_Position[]);
    get positions(): string | T_Position[];
    /**
     *
     * @private
     */
    private _setAppearance;
    _mountedHook(): void;
    /**
     * 设置风格
     * @param style
     * @returns {WaterPrimitive}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "color": Color.WHITE, // 颜色
     *   "speed": 10, // 速度
     *   "image": "/img.png", // 材质图片地址
     *   "repeat": {x:5,y:1}, // 重复规则
     * }
     * ```
     */
    setStyle(style: any): this;
}

export declare const JulianDate: typeof globalThis.Cesium.JulianDate;

/**
 * 键盘漫游
 * @example
 * ```ts
 * let kr = new BC.KeyboardRoaming(viewer)
 * kr.enable = true
 * ```
 */
export declare class KeyboardRoaming {
    private _viewer;
    private _enable;
    private _moveRate;
    private _rotateRate;
    private _flags;
    /**
     * @param viewer 3D 场景
     */
    constructor(viewer: Cesium.Viewer);
    /**
     * 是否启用
     */
    set enable(enable: boolean);
    get enable(): boolean;
    /**
     * 移动变化率：100
     */
    set moveRate(moveRate: number);
    get moveRate(): number;
    /**
     * 旋转变化率：0.01
     */
    set rotateRate(rotateRate: number);
    get rotateRate(): number;
    /**
     * 绑定事件
     */
    private _bindEvent;
    /**
     * 取消绑定事件
     */
    private _unbindEvent;
    /**
     *
     * @param e
     * @returns {undefined}
     * @private
     */
    private _getFlagForKeyCode;
    /**
     *
     */
    private _onClick;
    /**
     *
     * @param e
     */
    private _onKeydown;
    /**
     *
     * @param e
     */
    private _onKeyup;
    /**
     *
     */
    private _onTick;
}

/**
 * Kml 图层，用于加载 Kml 数据
 * @noInheritDoc
 * @example
 * ```ts
 * let layer = new BC.KmlLayer('id', '**\/**.kml')
 * layer.eachOverlay((item) => {
 *   if (item.polyline) {
 *     //todo
 *   }
 *   if (item.polygon) {
 *     //todo
 *   }
 *   if (item.billboard) {
 *     //todo
 *   }
 * })
 * ```
 */
export declare class KmlLayer extends Layer {
    /**
     * @param id 图层唯一标识
     * @param url 数据地址
     * @param options 属性配置
     */
    constructor(id: string, url: string, options?: {});
    /**
     * 类型
     */
    get type(): string;
    /**
     * 是否显示
     */
    set show(show: boolean);
    get show(): boolean;
    /**
     * 遍历图层
     * @param method 回调方法
     * @param context
     * @returns
     */
    eachOverlay(method: any, context: any): this;
    clear(): void;
    setStyle(style: any): void;
}

/**
 * 注记
 * @noInheritDoc
 * @example
 * ```ts
 * let position = new BC.Position(120, 20)
 * let Label = new BC.Label(position, 'test')
 * ```
 */
export declare class Label extends Overlay {
    private _position;
    private _text;
    /**
     *
     * @param position 坐标
     * @param text 文本
     */
    constructor(position: T_Position, text: string);
    get type(): any;
    set position(position: T_Position);
    get position(): T_Position;
    set text(text: string);
    get text(): string;
    _mountedHook(): void;
    /**
     *
     * @param  text
     * @param  textStyle
     */
    setLabel(text: string, textStyle: any): this;
    /**
     * 设置风格
     * @param style
     * @returns {Label}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "font": "30px sans-serif", // CSS 字体设置
     *   "scale": 1, //比例
     *   "pixelOffset": { "x": 0, "y": 0 }, //偏移像素
     *   "heightReference": 0, //高度参照，0：位置无参照，位置是绝对的，1：位置固定在地形上 2：位置高度是指地形上方的高度。
     *   "showBackground": false, //是否显示背景
     *   "backgroundColor": BC.Color.BLACK, //背景颜色
     *   "backgroundPadding": { "x": 0, "y": 0 }, //背景间隙
     *   "fillColor": BC.Color.BLACK, //文字颜色
     *   "outlineColor": BC.Color.WHITE, //边框颜色
     *   "outlineWidth": 0, //边框大小，
     *   "scaleByDistance": {
     *     "near": 0, //最近距离
     *     "nearValue": 0, //最近距离值
     *     "far": 1, //最远距离值
     *     "farValue": 0 //最远距离值
     *   }, //根据距离设置比例
     *   "translucencyByDistance": {
     *     "near": 0, //最近距离
     *     "nearValue": 0, //最近距离值
     *     "far": 1, //最远距离值
     *     "farValue": 0 //最远距离值
     *   }, //根据距离设置透明度
     *   "distanceDisplayCondition": {
     *     "near": 0, //最近距离
     *     "far": Number.MAX_VALUE //最远距离
     *   }, //根据距离设置可见
     *   "disableDepthTestDistance": 0 // 深度检测距离，用于防止剪切地形，设置为零时，将始终应用深度测试。设置为Number.POSITIVE_INFINITY时，永远不会应用深度测试。
     * }
     * ```
     */
    setStyle(style: any): this;
    /**
     * Parse from entity
     * @param entity
     * @returns {Label}
     */
    static fromEntity(entity: Cesium.Entity): Label | undefined;
}

/**
 * 标签图层
 */
export declare class LabelLayer extends Layer {
    _dataSource: Promise<Cesium.GeoJsonDataSource>;
    constructor(id: any, url?: string);
    get type(): string;
    _createLabel(entity: any): Label;
    _initLabel(): void;
    clear(): void;
    setStyle(style: any): void;
}

/**
 * 注记图元
 * @noInheritDoc
 * @example
 * ```ts
 * let position = new BC.Position(120, 20)
 * let label = new BC.LabelPrimitive(position, 'test')
 * ```
 */
export declare class LabelPrimitive extends Overlay {
    protected _position: Position;
    protected _text: string;
    /**
     *
     * @param position 坐标
     * @param text 文本
     */
    constructor(position: T_Position, text: string);
    get type(): any;
    set position(position: T_Position);
    get position(): T_Position;
    set text(text: string);
    get text(): string;
    _mountedHook(): void;
    /**
     *
     * @param  text
     * @param  textStyle
     */
    setLabel(text: string, textStyle: any): this;
    /**
     * 设置风格
     * @param style
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "font": "30px sans-serif", // CSS 字体设置
     *   "scale": 1, //比例
     *   "pixelOffset": { "x": 0, "y": 0 }, //偏移像素
     *   "heightReference": 0, //高度参照，0：位置无参照，位置是绝对的，1：位置固定在地形上 2：位置高度是指地形上方的高度。
     *   "showBackground": false, //是否显示背景
     *   "backgroundColor": BC.Color.BLACK, //背景颜色
     *   "backgroundPadding": { "x": 0, "y": 0 }, //背景间隙
     *   "fillColor": BC.Color.BLACK, //文字颜色
     *   "outlineColor": BC.Color.WHITE, //边框颜色
     *   "outlineWidth": 0, //边框大小，
     *   "scaleByDistance": {
     *     "near": 0, //最近距离
     *     "nearValue": 0, //最近距离值
     *     "far": 1, //最远距离值
     *     "farValue": 0 //最远距离值
     *   }, //根据距离设置比例
     *   "translucencyByDistance": {
     *     "near": 0, //最近距离
     *     "nearValue": 0, //最近距离值
     *     "far": 1, //最远距离值
     *     "farValue": 0 //最远距离值
     *   }, //根据距离设置透明度
     *   "distanceDisplayCondition": {
     *     "near": 0, //最近距离
     *     "far": Number.MAX_VALUE //最远距离
     *   }, //根据距离设置可见
     *   "disableDepthTestDistance": 0 // 深度检测距离，用于防止剪切地形，设置为零时，将始终应用深度测试。设置为Number.POSITIVE_INFINITY时，永远不会应用深度测试。
     * }
     * ```
     */
    setStyle(style: any): this;
}

/**
 * 图层的基类，其子类是实例化后需添加到三维场景中方可展示各类三维数据
 */
export declare abstract class Layer {
    protected _id: string;
    protected _delegate: any;
    protected _viewer: any;
    protected _state: any;
    protected _show: boolean;
    protected _isGround: boolean;
    protected _cache: Map<string, Overlay>;
    protected _attr: {};
    protected _layerEvent: LayerEvent;
    constructor(options: any);
    /**
     * 唯一标识
     */
    get id(): string;
    /**
     * 项目类型
     */
    get type(): any;
    /**
     *
     */
    get delegate(): any;
    /**
     * 是否显示
     */
    set show(show: boolean);
    /**
     * 业务属性
     */
    get show(): boolean;
    get layerEvent(): LayerEvent;
    set attr(attr: {});
    get attr(): {};
    /**
     * 图层状态
     */
    get state(): any;
    /**
     * The hook for added
     */
    protected _addedHook(): void;
    /**
     * The hook for removed
     */
    protected _removedHook(): void;
    /**
     * The layer added callback function
     * Subclasses need to be overridden
     * @param viewer
     */
    protected _onAdd(viewer: any): void;
    /**
     * The layer added callback function
     * Subclasses need to be overridden
     */
    protected _onRemove(): void;
    /**
     * The layer add overlay
     * @param overlay
     */
    protected _addOverlay(overlay: Overlay): void;
    /**
     * The layer remove overlay
     * @param overlay
     */
    protected _removeOverlay(overlay: Overlay): void;
    /**
     * 添加覆盖物
     * @param overlay 覆盖物
     * @returns {Layer}
     */
    addOverlay(overlay: Overlay): Layer;
    /**
     * 添加覆盖物数组
     * @param overlays 覆盖物数组
     * @returns {Layer}
     */
    addOverlays(overlays: Overlay[]): Layer;
    /**
     * 删除覆盖物
     * @param overlay 覆盖物
     * @returns {Layer}
     */
    removeOverlay(overlay: Overlay): Layer;
    /**
     * 根据 Id 获取覆盖物
     * @param overlayId
     * @returns 覆盖物
     */
    getOverlay(overlayId: string): Overlay | undefined;
    /**
     * 根据业务 Id 获取覆盖物
     * @param id 覆盖物业务唯一标识
     */
    getOverlayById(id: string): Overlay | undefined;
    /**
     * 根据覆盖物属性获取覆盖物
     * @param attrName 属性名称
     * @param attrVal 属性值
     * @returns 覆盖物数组
     */
    getOverlaysByAttr(attrName: string, attrVal: any): Overlay[];
    /**
     * 遍历覆盖物
     * @param method 回调函数，参数为每一个覆盖物
     * @param context 上下文
     * @returns {Layer}
     */
    eachOverlay(method: (item: Overlay) => void, context: any): Layer;
    /**
     * 获取所有覆盖物
     */
    getOverlays(): Overlay[];
    /**
     * 清空图层
     */
    abstract clear(): void;
    /**
     * 删除图层
     */
    remove(): void;
    /**
     * 添加图层到场景
     * @param viewer
     * @returns {Layer}
     */
    addTo(viewer: any): Layer;
    /**
     * 设置样式, 样式将会应用到图层的每一个覆盖物上
     * @param style
     */
    abstract setStyle(style: any): any;
    /**
     * 事件订阅
     * @param type 订阅类型
     * @param callback 订阅回调
     * @param context 上下文
     * @returns {Layer}
     */
    on(type: any, callback: any, context: any): Layer;
    /**
     * 取消事件订阅
     * @param type 订阅类型
     * @param callback 订阅回调
     * @param context 上下文
     * @returns {Layer}
     */
    off(type: any, callback: any, context: any): Layer;
    /**
     * 触发事件
     * @param type 订阅类型
     * @param params 参数
     * @returns {Layer}
     */
    fire(type: any, params: any): Layer;
    /**
     * 注册图层类型
     * @param type - 图层类型
     */
    static registerType(type: string): void;
    /**
     * 获取图层类型
     * @param type
     * @returns 图层类型
     */
    static getLayerType(type: string): string;
}

declare class LayerEvent extends Event_2 {
    constructor();
    /**
     * Register event for layer
     * @private
     */
    _registerEvent(): void;
}

/**
 * 图层组，将图层按一定的逻辑分组，方便统一管理
 * @example
 * ```ts
 * let layerGroup = new BC.LayerGroup('id')
 * viewer.addLayerGroup(layerGroup)
 * let layer = new BC.VectorLayer('layer')
 * layerGroup.addLayer(layer)
 * ```
 */
export declare class LayerGroup {
    private _id;
    private _cache;
    private _show;
    private _viewer;
    private _layerGroupEvent;
    private _state;
    /**
     * @param id 图层组唯一标识
     */
    constructor(id: string);
    /**
     * 唯一标识
     */
    get id(): string;
    /**
     * 类型
     */
    get type(): string;
    /**
     * 是否显示
     */
    set show(show: boolean);
    get show(): boolean;
    get layerGroupEvent(): LayerGroupEvent;
    /**
     * 状态
     */
    get state(): string;
    /**
     *
     * @param viewer
     */
    private _onAdd;
    /**
     *
     * @private
     */
    private _onRemove;
    /**
     * 添加图层
     * @param layer
     * @returns {LayerGroup}
     */
    addLayer(layer: Layer): LayerGroup;
    /**
     * 删除图层
     * @param layer
     * @returns {LayerGroup}
     */
    removeLayer(layer: Layer): LayerGroup;
    /**
     * 获取图层
     * @param id
     * @returns 图层
     */
    getLayer(id: string): Layer | undefined;
    /**
     * 获取所有图层，不包括地图
     * @returns 图层数组
     */
    getLayers(): Layer[];
    /**
     * 添加图层到场景
     * @param viewer
     * @returns {LayerGroup}
     */
    addTo(viewer: Viewer): this;
    /**
     * 删除图层组
     * @returns
     */
    remove(): LayerGroup;
}

declare class LayerGroupEvent extends Event_2 {
    constructor();
    /**
     * 注册图层树事件
     * @private
     */
    protected _registerEvent(): void;
}

export declare let LayerType: {};

/**
 * 镜头耀斑效果
 * @example
 * ```ts
 * viewer.effect.lensFlare.enable = true
 * ```
 */
export declare class LensFlare {
    private _viewer;
    private _delegate;
    private _enable;
    private _intensity;
    private _distortion;
    private _dirtAmount;
    private _haloWidth;
    private _selected;
    private _state;
    constructor();
    /**
     * 类型
     * @ignore
     */
    get type(): string;
    /**
     * 是否启用
     */
    set enable(enable: boolean);
    get enable(): boolean;
    /**
     * 强度
     */
    set intensity(intensity: number);
    get intensity(): number;
    /**
     * 扭曲度
     */
    set distortion(distortion: number);
    get distortion(): number;
    /**
     * 分散度
     */
    set dirtAmount(dirtAmount: number);
    get dirtAmount(): number;
    /**
     * 光圈宽度
     */
    set haloWidth(haloWidth: number);
    get haloWidth(): number;
    /**
     * 设置后期作用的覆盖物
     */
    set selected(selected: any[]);
    get selected(): any[];
    /**
     *
     * @private
     */
    private _createPostProcessStage;
    /**
     * 添加效果
     * @param viewer
     * @returns {LensFlare}
     * @ignore
     */
    addTo(viewer: Cesium.Viewer): LensFlare;
}

/**
 * 光柱图元
 * @noInheritDoc
 * @example
 * ```ts
 * let position = new BC.Position(120, 20)
 * let cylinder = new BC.LightCylinderPrimitive(position, 1000, 1, 100)
 * ```
 */
export declare class LightCylinderPrimitive extends Overlay {
    private _center;
    private _length;
    private _topRadius;
    private _bottomRadius;
    /**
     *
     * @param center 坐标
     * @param length 长度
     * @param topRadius 上半径
     * @param bottomRadius 下半径
     */
    constructor(center: T_Position, length: number, topRadius: number, bottomRadius: number);
    get type(): any;
    set center(position: T_Position);
    get center(): T_Position;
    set length(length: number);
    get length(): number;
    set topRadius(topRadius: number);
    get topRadius(): number;
    set bottomRadius(bottomRadius: number);
    get bottomRadius(): number;
    /**
     *
     * @param center
     * @param radius
     * @private
     */
    private _computeEllipsePositions;
    /**
     *
     * @param topPts
     * @param bottomPts
     * @param height
     */
    private _createCylinderInstance;
    /**
     *
     * @private
     */
    private _getCircleImage;
    /**
     *
     * @param image
     * @private
     */
    private _getParticlesImage;
    /**
     *
     * @private
     */
    private _updatePrimitives;
    /**
     *
     * @private
     */
    _mountedHook(): void;
    /**
     *
     * @param frameState
     */
    update(frameState: any): void;
    /**
     * 设置风格
     * @param style
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "color": BC.Color.BLACK //颜色
     * }
     * ```
     */
    setStyle(style: any): this;
    destroy(): void;
}

/**
 * 加载蒙层
 * @noInheritDoc
 * @example
 * ```ts
 * viewer.loadingMask.enable = true
 * ```
 */
declare class LoadingMask extends Widget {
    /**
     * @hidden
     */
    constructor();
    /**
     * @hidden
     */
    get type(): any;
    /**
     *
     * @private
     */
    _installHook(): void;
    /**
     *
     * @private
     */
    _mountContent(): void;
}

/**
 * 坐标信息
 * @noInheritDoc
 * @example
 * ```ts
 * viewer.locationBar.enable = true
 * ```
 */
declare class LocationBar extends Widget {
    private _mouseEl;
    private _cameraEl;
    private _fpsEl;
    private _msEl;
    private _lastMouseSampleTime;
    private _lastCameraSampleTime;
    private _lastFpsSampleTime;
    private _lastMsSampleTime;
    private _fpsFrameCount;
    private _msFrameCount;
    private _pickMode;
    /**
     * @hidden
     */
    constructor();
    /**
     * @hidden
     */
    get type(): any;
    set pickMode(str: any);
    get pickMode(): any;
    /**
     *
     * @private
     */
    _installHook(): void;
    /**
     *
     * @private
     */
    _bindEvent(): void;
    /**
     *
     * @private
     */
    _unbindEvent(): void;
    /**
     *
     * @private
     */
    _mountContent(): void;
    /**
     *
     * @param e
     * @private
     */
    _onMove(e: any): void;
    /**
     *
     * @private
     */
    _onCameraChanged(): void;
    /**
     *
     * @private
     */
    _onPostUpdate(): void;
}

/**
 * 地图分割
 * @noInheritDoc
 * @example
 * ```ts
 * let baseLayer_elc = BC.ImageryLayerFactory.createGoogleImageryLayer()
 * viewer.mapSplit.enable = true
 * viewer.mapSplit.addBaseLayer(baseLayer_elc, -1)
 * ```
 */
declare class MapSplit extends Widget {
    private _baseLayer;
    private _moveActive;
    /**
     * @hidden
     */
    constructor();
    /**
     * @hidden
     */
    get type(): any;
    /**
     *
     * @private
     */
    _installHook(): void;
    /**
     *
     * @private
     */
    _bindEvent(): void;
    /**
     *
     * @private
     */
    _unbindEvent(): void;
    /**
     *
     * @private
     */
    _mountContent(): void;
    /**
     *
     * @param movement
     * @private
     */
    _moveHandler(movement: any): void;
    /**
     *
     * @param baseLayer
     * @param splitDirection 分割方向，-1：左，0：无，1：右
     * @returns {MapSplit}
     */
    addBaseLayer(baseLayer: any, splitDirection?: number): this;
}

declare class MapSwitch extends Widget {
    protected _config: any;
    private _cache;
    /**
     * @hidden
     */
    constructor();
    /**
     * @hidden
     */
    get type(): any;
    /**
     * Override the superclass function
     * @private
     */
    _enableHook(): void;
    /**
     *
     * @private
     */
    _installHook(): void;
    _addItem(map: any): void;
    /**
     * add map
     * @param map
     */
    addMap(map?: {}): void;
}

export declare const Material: typeof globalThis.Cesium.Material;

/**
 * 材质基类
 */
declare class MaterialProperty {
    protected _definitionChanged: Cesium.Event;
    protected _color: any;
    protected _colorSubscription: any;
    protected _speed: any;
    protected _speedSubscription: any;
    /**
     * 颜色
     */
    color: Cesium.Color;
    /**
     * 速度
     */
    speed: number;
    constructor(options?: any);
    /* Excluded from this release type: isConstant */
    /* Excluded from this release type: definitionChanged */
    /* Excluded from this release type: getType */
    /* Excluded from this release type: getValue */
    /* Excluded from this release type: equals */
}

declare const Math_2: typeof globalThis.Cesium.Math;
export { Math_2 as Math }

export declare const Matrix3: typeof globalThis.Cesium.Matrix3;

export declare const Matrix4: typeof globalThis.Cesium.Matrix4;

/**
 * @Author: Caven
 * @Date: 2021-07-11 09:56:33
 */
export declare class Measure {
    _viewer: any;
    _layer: Cesium.CustomDataSource;
    constructor();
    get viewer(): any;
    get layer(): Cesium.CustomDataSource;
    /**
     *
     * @param options
     * @returns {Measure}
     */
    angle(options?: {}): this;
    /**
     *
     * @param options
     * @returns {Measure}
     */
    area(options?: {}): this;
    coord(options?: {}): this;
    /**
     *
     * @param options
     * @returns {Measure}
     */
    areaHeight(options?: {}): this;
    /**
     *
     * @param options
     * @returns {Measure}
     */
    areaSurface(options?: {}): this;
    /**
     *
     * @param options
     * @returns {Measure}
     */
    distance(options?: {}): this;
    /**
     *
     * @param options
     * @returns {Measure}
     */
    distanceSurface(options?: {}): this;
    /**
     *
     * @param options
     * @returns {Measure}
     */
    heading(options?: {}): this;
    /**
     *
     * @param options
     * @returns {Measure}
     */
    height(options?: {}): this;
    /**
     *
     * @param options
     * @returns {Measure}
     */
    triangleHeight(options?: {}): this;
    /**
     *
     * @param viewer
     */
    install(viewer: any): void;
    /**
     *
     * @param type
     * @param options
     * @returns {Measure}
     */
    activate(type: any, options: any): this;
    /**
     *
     * @returns {Measure}
     */
    deactivate(): this;
}

/**
 * 模型
 * @noInheritDoc
 * @example
 * ```ts
 * let position = new BC.Position(120, 20)
 * let model = new BC.Model(position, '*.glb')
 * ```
 */
export declare class Model extends Overlay {
    private _position;
    private _modelUrl;
    private _rotateAmount;
    /**
     *
     * @param position 坐标
     * @param modelUrl 模型地址
     */
    constructor(position: T_Position, modelUrl: string);
    get type(): any;
    set position(position: Position);
    get position(): Position;
    set modelUrl(modelUrl: string);
    get modelUrl(): string;
    set rotateAmount(amount: number);
    get rotateAmount(): number;
    _mountedHook(): void;
    /**
     * 设置风格
     * @param style
     * @return {Model}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "scale": 1, //比例
     *   "minimumPixelSize": 0, //指定模型的最小像素大小，而不考虑缩放
     *   "maximumScale": 0, //指定模型的最大比例
     *   "heightReference": 0, //高度参照，0：位置无参照，位置是绝对的，1：位置固定在地形上 2：位置高度是指地形上方的高度。
     *   "shadows": 0, //阴影类型，0：禁用、1：启用 、2：投射、3：接受
     *   "silhouetteColor": BC.Color.RED, //轮廓颜色
     *   "silhouetteSize": 0, //轮廓宽度
     *   "lightColor": BC.Color.RED, //模型着色时指定灯光颜色
     *   "distanceDisplayCondition": {
     *     "near": 0, //最近距离
     *     "far": Number.MAX_VALUE //最远距离
     *   } //根据距离设置可见
     * }
     * ```
     */
    setStyle(style: any): this;
    /**
     * Entity 转换为 Overlay
     * @param entity 实体
     * @param modelUrl 模型地址
     */
    static fromEntity(entity: Cesium.Entity, modelUrl: string): Model;
}

/**
 * 模型集合图元
 * @noInheritDoc
 * @example
 * ```ts
 * let positions = '120,20;120,30;122,30'
 * let model = new BC.ModelCollectionPrimitive(positions, '*.glb')
 * ```
 */
export declare class ModelCollectionPrimitive extends Overlay {
    private _positions;
    private _modelUrl;
    private _attrs;
    /**
     *
     * @param positions 坐标串
     * @param modelUrl 地址
     */
    constructor(positions: T_Position[], modelUrl: string);
    get type(): any;
    get readyPromise(): any;
    set attrs(attrs: any[]);
    get attrs(): any[];
    set positions(positions: T_Position[]);
    set modelUrl(modelUrl: string);
    get modelUrl(): string;
    private _resetDelegate;
    _mountedHook(): void;
    /**
     *
     * @param instanceId
     */
    getModelInstance(instanceId: string): any;
    /**
     *
     * @param instanceId
     */
    getAttrByInstanceId(instanceId: string): any;
    /**
     * 设置风格
     * @param style
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "scale": 1, //比例
     *   "minimumPixelSize": 0, //指定模型的最小像素大小，而不考虑缩放
     *   "maximumScale": 0, //指定模型的最大比例
     *   "heightReference": 0, //高度参照，0：位置无参照，位置是绝对的，1：位置固定在地形上 2：位置高度是指地形上方的高度。
     *   "shadows": 0, //阴影类型，0：禁用、1：启用 、2：投射、3：接受
     *   "silhouetteColor": BC.Color.RED, //轮廓颜色
     *   "silhouetteSize": 0, //轮廓宽度
     *   "lightColor": BC.Color.RED, //模型着色时指定灯光颜色
     *   "distanceDisplayCondition": {
     *     "near": 0, //最近距离
     *     "far": Number.MAX_VALUE //最远距离
     *   } //根据距离设置可见
     * }
     * ```
     */
    setStyle(style: any): this;
}

/**
 * 模型图元
 * @noInheritDoc
 * @example
 * ```ts
 * let position = new BC.Position(120, 20)
 * let model = new BC.ModelPrimitive(position, '*.glb')
 * ```
 */
export declare class ModelPrimitive extends Overlay {
    private _position;
    private _modelUrl;
    /**
     *
     * @param position 坐标
     * @param modelUrl 地址
     */
    constructor(position: T_Position, modelUrl: string);
    get type(): any;
    get readyPromise(): any;
    set position(position: T_Position);
    get position(): T_Position;
    set modelUrl(modelUrl: string);
    get modelUrl(): string;
    /**
     *
     * @private
     */
    _mountedHook(): void;
    /**
     *
     * @param name
     */
    getMaterial(name: string): any;
    /**
     *
     * @param name
     */
    getMesh(name: string): any;
    /**
     *
     * @param name
     * @returns {*}
     */
    getNode(name: string): any;
    getNodes(): any;
    /**
     * 设置风格
     * @param style
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "scale": 1, //比例
     *   "minimumPixelSize": 0, //指定模型的最小像素大小，而不考虑缩放
     *   "maximumScale": 0, //指定模型的最大比例
     *   "heightReference": 0, //高度参照，0：位置无参照，位置是绝对的，1：位置固定在地形上 2：位置高度是指地形上方的高度。
     *   "shadows": 0, //阴影类型，0：禁用、1：启用 、2：投射、3：接受
     *   "silhouetteColor": BC.Color.RED, //轮廓颜色
     *   "silhouetteSize": 0, //轮廓宽度
     *   "lightColor": BC.Color.RED, //模型着色时指定灯光颜色
     *   "distanceDisplayCondition": {
     *     "near": 0, //最近距离
     *     "far": Number.MAX_VALUE //最远距离
     *   } //根据距离设置可见
     * }
     * ```
     */
    setStyle(style: any): this;
}

declare class ModelSection {
    name: string;
    _longitude: number;
    _latitude: number;
    _height: number;
    _heading: number;
    _pitch: number;
    _roll: number;
    tile: Tileset;
    plane: Cesium.Entity;
    showPlane: boolean;
    clippingPlane: Cesium.ClippingPlane;
    show: boolean;
    constructor(position: Position, tile: Tileset);
    set longitude(val: number);
    set latitude(val: number);
    set height(val: number);
    set heading(val: number);
    set pitch(val: number);
    set roll(val: number);
    get longitude(): number;
    get latitude(): number;
    get height(): number;
    get heading(): number;
    get pitch(): number;
    get roll(): number;
    private rotatingByMatrix4;
    private getInverseTransform;
    private getClippingPlane;
    getTilesCilpiingPlane(): void;
    update(): void;
}

/**
 * 单体化图元
 * @noInheritDoc
 * @example
 * ```ts
 * let monomer = new BC.MonomerPrimitive('120,20;120,30;122,30')
 * monomer.setStyle({
 *   height:100,
 *   extrudedHeight:200,
 *   color: BC.Color.AQUA.withAlpha(0.3),
 *   outline: false,
 *   classificationType: 2
 * })
 * ```
 */
export declare class MonomerPrimitive extends Overlay {
    private _positions;
    /**
     *
     * @param positions 坐标串
     */
    constructor(positions: string | T_Position[]);
    get type(): any;
    set positions(positions: string | T_Position[]);
    /**
     * 单体化坐标
     */
    get positions(): string | T_Position[];
    /**
     * 单体化高度
     */
    get height(): number;
    set height(value: number);
    /**
     * 单体化拉伸高度
     */
    get extrudedHeight(): number;
    set extrudedHeight(value: number);
    /**
     * 单体化颜色
     */
    get color(): Cesium.Color;
    set color(value: Cesium.Color);
    /**
     * 单体化边框
     */
    get outline(): boolean;
    set outline(value: boolean);
    set classificationType(value: number);
    /**
     * 分类 是否影响地形，3D切片或同时影响这两者。0:地形、1:3D切片、2：两者
     */
    get classificationType(): number;
    protected _mountedHook(): void;
    /**
     * 设置风格
     * @param style
     * @returns {WaterPrimitive}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "height": 1, //高度
     *   "extrudedHeight": 0, //拉升高度
     *   "outline": false, //是否显示边框
     *   "color": BC.Color.BLUE, //单体化颜色
     *   "classificationType": 2, //分类 是否影响地形，3D切片或同时影响这两者。0:地形、1:3D切片、2：两者
     * }
     * ```
     */
    setStyle(style: any): this;
}

/**
 * Mouse events in 3D scene, optimized Cesium event model
 */
declare class MouseEvent_2 extends Event_2 {
    _viewer: Viewer;
    _selected: any;
    constructor(viewer: any);
    /**
     * Register Cesium mouse events
     * @private
     */
    _setInputAction(): void;
    /**
     *
     * Gets the mouse information for the mouse event
     * @param position
     * @private
     *
     */
    _getMouseInfo(position: any): {
        target: any;
        windowPosition: any;
        position: any;
        wgs84Position: any;
        surfacePosition: any;
        wgs84SurfacePosition: any;
    };
    /**
     * Gets the drill pick overlays for the mouse event
     * @param position
     * @returns {[]}
     * @private
     */
    _getDrillInfos(position: any): any[];
    /**
     * Return the Overlay id
     * @param target
     * @returns {any}
     * @private
     */
    _getOverlayId(target: any): any;
    /**
     * Returns the target information for the mouse event
     * @param target
     * @returns {{instanceId: *, overlay: undefined, feature: undefined, layer: undefined}}
     * @private
     */
    _getTargetInfo(target: any): {
        layer: any;
        overlay: any;
        feature: any;
        instanceId: any;
    };
    /**
     * Trigger subscription event
     * @param type
     * @param mouseInfo
     * @private
     */
    _raiseEvent(type: any, mouseInfo?: any): void;
    /**
     * Default click event handler
     * @param movement
     * @returns {boolean}
     * @private
     */
    _clickHandler(movement: any): boolean;
    /**
     * Default dbClick event handler
     * @param movement
     * @returns {boolean}
     * @private
     */
    _dbClickHandler(movement: any): boolean;
    /**
     * Default rightClick event handler
     * @param movement
     * @returns {boolean}
     * @private
     */
    _rightClickHandler(movement: any): boolean;
    /**
     * Default mousemove event handler
     * @param movement
     * @returns {boolean}
     * @private
     */
    _mouseMoveHandler(movement: any): boolean;
    /**
     * Default mouse left down event handler
     * @param movement
     * @private
     */
    _leftDownHandler(movement: any): boolean;
    /**
     * Default mouse left up event handler
     * @param movement
     * @private
     */
    _leftUpHandler(movement: any): void;
    /**
     * Default mouse right down event handler
     * @param movement
     * @private
     */
    _rightDownHandler(movement: any): boolean;
    /**
     * Default mouse right up event handler
     * @param movement
     * @private
     */
    _rightUpHandler(movement: any): void;
    /**
     * Default mouse wheel event handler
     * @param movement
     * @private
     */
    _mouseWheelHandler(movement: any): void;
}

export declare enum MouseEventType {
    /**
     * (场景、图层、覆盖物)鼠标左键按下事件
     */
    LEFT_DOWN = 0,
    /**
     * (场景、图层、覆盖物)鼠标左键抬升事件
     */
    LEFT_UP = 1,
    /**
     * (场景、图层、覆盖物)鼠标点击事件
     */
    LEFT_CLICK = 2,
    /**
     * (场景、图层、覆盖物)鼠标左键双击事件
     */
    LEFT_DOUBLE_CLICK = 3,
    /**
     * (场景、图层、覆盖物)鼠标右键按下事件
     */
    RIGHT_DOWN = 5,
    /**
     * (场景、图层、覆盖物)鼠标右键抬升事件
     */
    RIGHT_UP = 6,
    /**
     * (场景、图层、覆盖物)鼠标右键点击事件
     */
    RIGHT_CLICK = 7,
    /**
     * (场景、图层、覆盖物)鼠标滚轮按下事件
     */
    MIDDLE_DOWN = 10,
    /**
     * (场景、图层、覆盖物)鼠标滚轮抬升事件
     */
    MIDDLE_UP = 11,
    /**
     * (场景、图层、覆盖物)鼠标滚轮点击事件
     */
    MIDDLE_CLICK = 12,
    /**
     * (场景、图层、覆盖物)鼠标移动事件
     */
    MOUSE_MOVE = 15,
    /**
     * (场景、图层、覆盖物)鼠标滚轮事件
     */
    WHEEL = 16,
    /**
     * 触控屏上双指开始事件
     */
    PINCH_START = 17,
    /**
     * 触控屏上双指结束事件
     */
    PINCH_END = 18,
    /**
     * 触控屏上双指移动事件
     */
    PINCH_MOVE = 19,
    /**
     * 长按事件
     */
    LONG_PRESS = 20,
    /**
     * 覆盖物鼠标移入事件
     */
    MOUSE_OVER = "mouseover",
    /**
     * 覆盖物鼠标移出事件
     */
    MOUSE_OUT = "mouseout"
}

/**
 * 鼠标模式  0：左键拖动，中键翻转(默认)，1：左键拖动，右键翻转
 */
export declare enum MouseMode {
    /**
     * 左键拖动，中键翻转(默认)
     */
    LEFT_MIDDLE = 0,
    /**
     * 左键拖动，右键翻转
     */
    LEFT_RIGHT = 1
}

export declare enum MultiViewportMode {
    NONE = 0,
    HORIZONTAL = 1,
    VERTICAL = 2,
    QUAD = 3,
    TRIPLE = 4,
    VerticalTrisection = 5
}

declare class MVTImageryProvider {
    _destroyed: boolean;
    ready: boolean;
    tilingScheme: any;
    rectangle: any;
    tileSize: any;
    tileWidth: any;
    tileHeight: any;
    maximumLevel: any;
    minimumLevel: any;
    tileDiscardPolicy: any;
    _error: Cesium.Event;
    credit: any;
    proxy: any;
    hasAlphaChannel: any;
    sourceFilter: any;
    _accessToken: any;
    _enablePickFeatures: any;
    readyPromise: Promise<boolean>;
    _style: any;
    mapboxRenderer: any;
    /**
     * create a MVTImageryProvider Object
     * @param {MVTImageryProviderOptions} options MVTImageryProvider options as follow:
     * @param {Resource | string | StyleSpecification} options.style - mapbox style object or url Resource.
     * @param {string} options.accessToken - mapbox style accessToken.
     * @param {RequestTransformFunction} options.transformRequest - use transformRequest to modify tile requests.
     * @param {Number} [options.tileSize = 256] - can be 256 or 512. defaults to 256.
     * @param {Number} [options.maximumLevel = 18] - if cesium zoom level exceeds maximumLevel, layer will be invisible, defaults to 18.
     * @param {Number} [options.minimumLevel = 0] - if cesium zoom level belows minimumLevel, layer will be invisible, defaults to 0.
     * @param {Boolean} [options.showCanvas = false] - if show canvas for debug.
     * @param {Boolean} [options.enablePickFeatures = true] - enable pickFeatures or not, defaults to true.
     * @param {Function} options.sourceFilter - sourceFilter is used to filter which source participate in pickFeature process.
     * @param {WebMercatorTilingScheme | GeographicTilingScheme} [options.tilingScheme = WebMercatorTilingScheme] - Cesium tilingScheme, defaults to WebMercatorTilingScheme(EPSG: 3857).
     * @param {Credit} options.credit - A credit contains data pertaining to how to display attributions/credits for certain content on the screen.
     * @example
     * const imageryProvider = new MVTImageryProvider({
     style: 'https://demotiles.maplibre.org/style.json'
     });
     */
    constructor(options: any);
    /**
     * get mapbox style json obj
     */
    get style(): any;
    get isDestroyed(): boolean;
    /**
     * Gets an event that will be raised if an error is encountered during processing.
     * @memberof GeoJsonDataSource.prototype
     * @type {Event}
     */
    get errorEvent(): Cesium.Event<(...args: any[]) => void>;
    _build(url: any, options?: any): Promise<void>;
    static fromUrl(url: any, options?: {}): Promise<MVTImageryProvider>;
    _preLoad(data: any): Promise<any>;
    _createTile(): HTMLCanvasElement;
    /**
     * reset tile cache
     */
    _resetTileCache(): void;
    _getTilesSpec(coord: any, source: any): any[];
    requestImage(x: any, y: any, level: any, releaseTile?: boolean): Promise<unknown>;
    pickFeatures(x: any, y: any, zoom: any, longitude: any, latitude: any): any;
    destroy(): void;
}

/**
 * 夜视效果
 * @example
 * ```ts
 * viewer.effect.night.enable = true
 * ```
 */
export declare class NightVision {
    private _enable;
    private _selected;
    private _state;
    private _viewer;
    private _delegate;
    constructor();
    /**
     * 类型
     * @ignore
     */
    get type(): string;
    /**
     * 是否启用
     */
    set enable(enable: boolean);
    get enable(): boolean;
    /**
     * 设置后期作用的覆盖物
     */
    set selected(selected: any[]);
    get selected(): any[];
    /**
     *
     * @private
     */
    private _createPostProcessStage;
    /**
     * 添加效果
     * @param viewer
     * @returns {NightVision}
     * @ignore
     */
    addTo(viewer: Cesium.Viewer): NightVision;
}

/**
 * 覆盖物基类，该类无法实例化
 */
export declare class Overlay {
    protected _id: string;
    protected _bid: string;
    protected _delegate: any;
    protected _layer: any;
    protected _state: any;
    protected _show: boolean;
    protected _style: any;
    protected _attr: {};
    protected _allowDrillPicking: boolean;
    protected _contextMenu: any[];
    protected _overlayEvent: OverlayEvent;
    constructor();
    /**
     * 唯一标识
     * @readonly
     */
    get overlayId(): string;
    /**
     * 覆盖物类型
     * @readonly
     */
    get type(): string;
    set id(id: string);
    /**
     * 业务唯一标识
     */
    get id(): string;
    set show(show: boolean);
    /**
     * 是否显示
     */
    get show(): boolean;
    set attr(attr: {});
    /**
     * 业务属性
     */
    get attr(): {};
    set allowDrillPicking(allowDrillPicking: boolean);
    /**
     * 是否可以穿透选择，默认值：false
     */
    get allowDrillPicking(): boolean;
    get overlayEvent(): OverlayEvent;
    get delegate(): any;
    /**
     * 覆盖物状态
     * @readonly
     */
    get state(): any;
    set contextMenu(menus: any[]);
    get contextMenu(): any[];
    /**
     *
     * @param type
     * @returns {any}
     */
    protected _getLayerCollection(type: string): any;
    /**
     * The hook for mount layer
     * Subclasses need to be overridden
     * @private
     */
    protected _mountedHook(): void;
    /**
     * The hook for added
     * @returns {boolean}
     * @private
     */
    protected _addedHook(): boolean;
    /**
     * The hook for removed
     * Subclasses need to be overridden
     * @private
     */
    _removedHook(): void;
    /**
     * Add handler
     * @param layer
     * @private
     */
    _onAdd(layer: any): void;
    /**
     * Remove handler
     * @private
     */
    _onRemove(): void;
    /**
     * Sets Text with Style
     * @param text
     * @param textStyle
     * @returns {Overlay}
     */
    setLabel(text: any, textStyle: Cesium.LabelGraphics): this;
    /**
     * 设置风格
     * @param style
     * @returns {Overlay}
     */
    setStyle(style: any): this;
    /**
     * Removes from layer
     * @returns {Overlay}
     */
    remove(): this;
    /**
     * adds to layer
     * @param layer
     * @returns {Overlay}
     */
    addTo(layer: any): this;
    /**
     * Subscribe event
     * @param type
     * @param callback
     * @param context
     * @returns {Overlay}
     */
    on(type: string, callback: any, context: any): this;
    /**
     * Unsubscribe event
     * @param type
     * @param callback
     * @param context
     * @returns {Overlay}
     */
    off(type: any, callback: any, context: any): this;
    /**
     * Trigger subscription event
     * @param type
     * @param params
     * @returns {Overlay}
     */
    fire(type: any, params: any): this;
    /**
     *
     * @param type
     */
    static registerType(type: string): void;
    /**
     *
     * @param type
     * @returns {*|undefined}
     */
    static getOverlayType(type: string): any;
}

declare class OverlayEvent extends Event_2 {
    constructor();
    /**
     * Register event for overlay
     * @protected
     */
    protected _registerEvent(): void;
}

export declare let OverlayType: any;

export declare class Parse {
    /**
     * Parses all kinds of coordinates to position
     * @param position
     * @returns {Position}
     */
    static parsePosition(position: string | Position | string[] | number[]): Position;
    /**
     * Parses all kinds of coordinates array to position array
     * @param positions
     * @returns {unknown[]}
     */
    static parsePositions(positions: string | Array<Position | number | string | Object>): Position[];
    /**
     * Parses point position to array
     * @param position
     * @returns {*[]}
     */
    static parsePointCoordToArray(position: Position): any[];
    /**
     * Parses polyline positions to array
     * @param positions
     * @returns {[]}
     */
    static parsePolylineCoordToArray(positions: any[]): any[];
    /**
     * Parses polygon positions to array
     * @param positions
     * @param loop
     * @returns {[][]}
     */
    static parsePolygonCoordToArray(positions: any[], loop?: boolean): any[][];
}

declare class PathEvent extends Event_2 {
    constructor();
    /**
     *
     * @private
     */
    _registerEvent(): void;
}

/**
 * 平面
 * @noInheritDoc
 * @example
 * ```ts
 * let position = new BC.Position(120, 20)
 * let plane = new BC.Plane(position, 20, 30, { normal: 'x' })
 * ```
 */
export declare class Plane extends Overlay {
    private _position;
    private _width;
    private _height;
    private _normal;
    private _distance;
    /**
     *
     * @param position 坐标
     * @param width 宽度
     * @param height 高度
     * @param plane 面板格式
     */
    constructor(position: T_Position, width: number, height: number, plane?: any);
    get type(): any;
    set position(position: T_Position);
    get position(): T_Position;
    set width(width: number);
    get width(): number;
    set height(height: number);
    get height(): number;
    set distance(distance: number);
    get distance(): number;
    _mountedHook(): void;
    /**
     * 设置风格
     * @param style
     * @returns {Plane}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "fill": true, //是否用提供的材料填充多边形。
     *   "material": BC.Color.WHITE, //材质
     *   "outline": false, //是否显示边框
     *   "outlineColor": BC.Color.BLACK, //边框颜色
     *   "outlineWidth": 0, //边框宽度
     *   "shadows": 0, //阴影类型，0：禁用、1：启用 、2：投射、3：接受
     *   "distanceDisplayCondition": {
     *     "near": 0, //最近距离
     *     "far": Number.MAX_VALUE //最远距离
     *   } //根据距离设置可见
     * }
     * ```
     */
    setStyle(style: any): this;
}

/**
 * 三维场景中的辅助工具，方便在场景中进行标绘、位置编辑
 * @noInheritDoc
 * @example
 * ```ts
 * let plot = new BC.Plot(viewer, {})
 * plot.draw(BC.OverlayType.POINT, (overlay) => {}, {})
 * ```
 */
export declare class Plot {
    private _viewer;
    private _options;
    private _layer;
    private _currentWorker;
    private _state;
    /**
     *
     * @param viewer - 场景
     * @param options - 属性
     * @example
     * ```json
     * //属性参数(可选)
     * {
     *   "icon_center": "**.png", // 自定义的中心点图标
     *   "icon_anchor": "**.png", //自定义的锚点图标
     *   "icon_midAnchor": "**.png", //自定义的中心锚点图标
     *   "icon_size": [12, 12],//自定义的中心锚点大小
     *   "clampToModel":false // 点位是否获取模型表面坐标
     * }
     * ```
     */
    constructor(viewer: Viewer, options?: {});
    /**
     * @hidden
     */
    get viewer(): Viewer;
    /**
     * @hidden
     */
    get layer(): Cesium.CustomDataSource;
    /**
     * @hidden
     */
    get state(): string;
    /**
     *
     * @param type - 类型
     * @param style - 风格
     * @private
     */
    private _createDrawWorker;
    /**
     *
     * @param overlay - 覆盖物
     * @private
     */
    private _createEditWorker;
    /**
     *
     * @param type - 绘制类型
     * @param callback - 标绘完成的回调函数，参数为overlay
     * @param style - 标绘的覆盖物样式设置
     * @param clampToModel - 点位是否获取模型表面坐标
     * @returns {Plot}
     */
    draw(type: string, callback: Function, style?: any, clampToModel?: boolean): this;
    /**
     *
     * @param overlay - 覆盖物对象
     * @param callback - 标绘完成的回调函数，参数为overlay
     * @param clampToModel - 点位是否获取模型表面坐标
     * @returns {Plot}
     */
    edit(overlay: Overlay, callback: Function, clampToModel?: boolean): this;
    /**
     * 停止绘制
     */
    stop(): any;
    /**
     * @hidden
     */
    destroy(): this;
}

export declare class PlotUtil {
    /**
     * 计算两点距离
     * @param pnt1
     * @param pnt2
     * @returns {number}
     */
    static distance(pnt1: any, pnt2: any): number;
    /**
     * @param points
     * @returns {number}
     */
    static wholeDistance(points: any): number;
    /**
     * @param points
     * @returns {number}
     */
    static getBaseLength(points: any): number;
    /**
     * @param pnt1
     * @param pnt2
     * @returns {number[]}
     */
    static mid(pnt1: any, pnt2: any): number[];
    /**
     * @param pnt1
     * @param pnt2
     * @param pnt3
     * @returns {[*, *]|[*, *]|[*, number]}
     */
    static getCircleCenterOfThreePoints(pnt1: any, pnt2: any, pnt3: any): any[];
    /**
     * @param pntA
     * @param pntB
     * @param pntC
     * @param pntD
     * @returns {(*|number)[]|*[]}
     */
    static getIntersectPoint(pntA: any, pntB: any, pntC: any, pntD: any): any[];
    /**
     * @param startPnt
     * @param endPnt
     * @returns {number}
     */
    static getAzimuth(startPnt: any, endPnt: any): any;
    /**
     * @param pntA
     * @param pntB
     * @param pntC
     * @returns {number}
     */
    static getAngleOfThreePoints(pntA: any, pntB: any, pntC: any): number;
    /**
     * @param pnt1
     * @param pnt2
     * @param pnt3
     * @returns {boolean}
     */
    static isClockWise(pnt1: any, pnt2: any, pnt3: any): boolean;
    /**
     * @param t
     * @param startPnt
     * @param endPnt
     * @returns {*[]}
     */
    static getPointOnLine(t: any, startPnt: any, endPnt: any): any[];
    /**
     * @param t
     * @param startPnt
     * @param cPnt1
     * @param cPnt2
     * @param endPnt
     * @returns {number[]}
     */
    static getCubicValue(t: any, startPnt: any, cPnt1: any, cPnt2: any, endPnt: any): number[];
    /**
     * @param startPnt
     * @param endPnt
     * @param angle
     * @param distance
     * @param clockWise
     * @returns {*[]}
     */
    static getThirdPoint(startPnt: any, endPnt: any, angle: any, distance: any, clockWise: any): any[];
    /**
     * @param center
     * @param radius
     * @param startAngle
     * @param endAngle
     * @returns {[]}
     */
    static getArcPoints(center: any, radius: any, startAngle: any, endAngle: any): any[];
    /**
     * @param t
     * @param pnt1
     * @param pnt2
     * @param pnt3
     * @returns {*[][]}
     */
    static getBisectorNormals(t: any, pnt1: any, pnt2: any, pnt3: any): any[];
    /**
     * @param pnt1
     * @param pnt2
     * @param pnt3
     * @returns {number[]}
     */
    static getNormal(pnt1: any, pnt2: any, pnt3: any): number[];
    /**
     * @param t
     * @param controlPoints
     * @returns {[]}
     */
    static getCurvePoints(t: any, controlPoints: any): any[];
    /**
     * @description: 获取两点的垂直夹角
     * @param {type}
     * @return:
     */
    static getAnglePitch(from: Cesium.Cartesian3, to: Cesium.Cartesian3): number;
    /**
     * @param t
     * @param controlPoints
     * @returns {number[]}
     */
    static getLeftMostControlPoint(t: any, controlPoints: any): any[];
    /**
     * @param t
     * @param controlPoints
     * @returns {number[]}
     */
    static getRightMostControlPoint(t: any, controlPoints: any): any[];
    /**
     * @param points
     * @returns {[]|*}
     */
    static getBezierPoints(points: any): any;
    /**
     *
     * @param n
     * @param index
     * @returns {number}
     */
    static getBinomialFactor(n: any, index: any): number;
    /**
     * @param n
     * @returns {number}
     */
    static getFactorial(n: any): number;
    /**
     * @param points
     * @returns {[]|*}
     */
    static getQBSplinePoints(points: any): any;
    /**
     * @param k
     * @param t
     * @returns {number}
     */
    static getQuadricBSplineFactor(k: any, t: any): number;
}

/**
 * 圆
 * @noInheritDoc
 * @example
 * ```ts
 * let position = new BC.Position(120, 20)
 * let point = new BC.Point(position)
 * point.setStyle({
 *   pixelSize: 10,
 * })
 * ```
 */
export declare class Point extends Overlay {
    private _position;
    /**
     *
     * @param position 坐标
     */
    constructor(position: T_Position);
    get type(): any;
    set position(position: T_Position);
    get position(): T_Position;
    _mountedHook(): void;
    /**
     * Set style
     * @param style
     * @returns {Point}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "pixelSize": 1, //像素大小
     *   "heightReference": 0, //高度参照，0：位置无参照，位置是绝对的，1：位置固定在地形上 2：位置高度是指地形上方的高度。
     *   "color": BC.Color.WHITE, //颜色
     *   "outlineColor": BC.Color.WHITE, //边框颜色
     *   "outlineWidth": 0, //边框大小，
     *   "scaleByDistance": {
     *     "near": 0, //最近距离
     *     "nearValue": 0, //最近距离值
     *     "far": 1, //最远距离值
     *     "farValue": 0 //最远距离值
     *   }, //根据距离设置比例
     *   "translucencyByDistance": {
     *     "near": 0, //最近距离
     *     "nearValue": 0, //最近距离值
     *     "far": 1, //最远距离值
     *     "farValue": 0 //最远距离值
     *   }, //根据距离设置透明度
     *   "distanceDisplayCondition": {
     *     "near": 0, //最近距离
     *     "far": Number.MAX_VALUE //最远距离
     *   }, //根据距离设置可见
     *   "disableDepthTestDistance": 0 // 深度检测距离，用于防止剪切地形，设置为零时，将始终应用深度测试。设置为Number.POSITIVE_INFINITY时，永远不会应用深度测试。
     * }
     * ```
     */
    setStyle(style: any): this;
    /**
     * Entity 转换为 Overlay
     * @param entity
     * @returns {Point}
     */
    static fromEntity(entity: Cesium.Entity): Point | undefined;
}

/**
 * 点图元
 * @noInheritDoc
 * @example
 * ```ts
 * let position = new BC.Position(120, 20)
 * let point = new BC.PointPrimitive(position)
 * point.setStyle({
 *   pixelSize: 10,
 * })
 * ```
 */
export declare class PointPrimitive extends Overlay {
    private _position;
    /**
     *
     * @param position 坐标
     */
    constructor(position: T_Position);
    get type(): any;
    set position(position: T_Position);
    get position(): T_Position;
    _mountedHook(): void;
    /**
     * Set style
     * @param style
     * @returns {PointPrimitive}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "pixelSize": 1, //像素大小
     *   "heightReference": 0, //高度参照，0：位置无参照，位置是绝对的，1：位置固定在地形上 2：位置高度是指地形上方的高度。
     *   "color": BC.Color.WHITE, //颜色
     *   "outlineColor": BC.Color.WHITE, //边框颜色
     *   "outlineWidth": 0, //边框大小，
     *   "scaleByDistance": {
     *     "near": 0, //最近距离
     *     "nearValue": 0, //最近距离值
     *     "far": 1, //最远距离值
     *     "farValue": 0 //最远距离值
     *   }, //根据距离设置比例
     *   "translucencyByDistance": {
     *     "near": 0, //最近距离
     *     "nearValue": 0, //最近距离值
     *     "far": 1, //最远距离值
     *     "farValue": 0 //最远距离值
     *   }, //根据距离设置透明度
     *   "distanceDisplayCondition": {
     *     "near": 0, //最近距离
     *     "far": Number.MAX_VALUE //最远距离
     *   }, //根据距离设置可见
     *   "disableDepthTestDistance": 0 // 深度检测距离，用于防止剪切地形，设置为零时，将始终应用深度测试。设置为Number.POSITIVE_INFINITY时，永远不会应用深度测试。
     * }
     * ```
     */
    setStyle(style: any): this;
}

/**
 * 面
 * @noInheritDoc
 * @example
 * ```ts
 * let polygon = new BC.Polygon('120,20;120,30;122,30')
 * polygon.setStyle({
 *   height: 10,
 * })
 * ```
 */
export declare class Polygon extends Overlay {
    private _positions;
    private _holes;
    /**
     *
     * @param positions 坐标串
     */
    constructor(positions: string | T_Position[]);
    get type(): any;
    set positions(positions: string | T_Position[]);
    get positions(): string | T_Position[];
    set holes(holes: T_Position[][]);
    get holes(): T_Position[][];
    get center(): Position;
    get area(): number;
    /**
     *
     * @private
     */
    private _computeHierarchy;
    _mountedHook(): void;
    /**
     * Sets text
     * @param text
     * @param textStyle
     * @returns {Polygon}
     */
    setLabel(text: string, textStyle: any): this;
    /**
     * 设置风格
     * @param style
     * @returns {Polygon}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "height": 1, //高度
     *   "heightReference": 0, //高度参照，0：位置无参照，位置是绝对的，1：位置固定在地形上 2：位置高度是指地形上方的高度。
     *   "extrudedHeight": 0, //拉升高度
     *   "stRotation": 0, //旋转角度
     *   "fill": true, //是否用提供的材料填充多边形。
     *   "material": BC.Color.WHITE, //材质
     *   "outline": false, //是否显示边框
     *   "outlineColor": BC.Color.BLACK, //边框颜色
     *   "outlineWidth": 0, //边框宽度
     *   "closeTop": true, //顶面是否闭合
     *   "closeBottom": true, //底面是否闭合
     *   "shadows": 0, //阴影类型，0：禁用、1：启用 、2：投射、3：接受
     *   "distanceDisplayCondition": {
     *     "near": 0, //最近距离
     *     "far": Number.MAX_VALUE //最远距离
     *   }, //根据距离设置可见
     *   "classificationType": 2, //分类 是否影响地形，3D切片或同时影响这两者。0:地形、1:3D切片、2：两者
     *   "zIndex": 0 //层级
     * }
     * ```
     */
    setStyle(style: any): this;
    /**
     * 单独处理贴地行为，0:贴地形、1:贴3D切片、2：两者都贴、-1：都不贴
     * @param classificationType
     * @returns {Polygon}
     */
    dealClamp(classificationType: any): void;
    /**
     * Entity 转换为 Overlay
     * @param entity
     * @returns {Polygon}
     */
    static fromEntity(entity: Cesium.Entity): Polygon | undefined;
}

/**
 * 线
 * @noInheritDoc
 * @example
 * ```ts
 * let polyline = new BC.Polyline('120,20;120,30')
 * polyline.setStyle({
 *   width: 10,
 * })
 * ```
 */
export declare class Polyline extends Overlay {
    private _positions;
    /**
     *
     * @param positions 坐标串
     */
    constructor(positions: string | T_Position[]);
    get type(): any;
    set positions(positions: string | T_Position[]);
    get positions(): string | T_Position[];
    get center(): Position;
    get distance(): number;
    _mountedHook(): void;
    /**
     * Sets Text
     * @param text
     * @param textStyle
     * @returns {Polyline}
     */
    setLabel(text: string, textStyle: any): this;
    /**
     * 设置风格
     * @param style
     * @returns {Polyline}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "width": 1, //线宽
     *   "material": BC.Color.WHITE, //材质
     *   "clampToGround": false, //是否贴地
     *   "shadows": 0, //阴影类型，0：禁用、1：启用 、2：投射、3：接受
     *   "distanceDisplayCondition": {
     *     "near": 0, //最近距离
     *     "far": Number.MAX_VALUE //最远距离
     *   }, //根据距离设置可见
     *   "classificationType": 2, //分类 是否影响地形，3D切片或同时影响这两者。0:地形、1:3D切片、2：两者
     *   "zIndex": 0 //层级
     * }
     * ```
     */
    setStyle(style: any): this;
    /**
     * Entity 转换为 Overlay
     * @param entity
     * @returns {Polyline}
     */
    static fromEntity(entity: Cesium.Entity): Polyline | undefined;
}

export declare const PolylineArrowMaterialProperty: typeof globalThis.Cesium.PolylineArrowMaterialProperty;

export declare const PolylineDashMaterialProperty: typeof globalThis.Cesium.PolylineDashMaterialProperty;

/**
 * 放射线材质
 * @noInheritDoc
 * @example
 * ```ts
 * let material = new BC.PolylineEmissionMaterialProperty({
 *   color: BC.Color.WHITE,
 * })
 * ```
 */
export declare class PolylineEmissionMaterialProperty extends MaterialProperty {
    /**
     * 颜色
     */
    color: Cesium.Color;
    /**
     * @param options 属性
     * @param options.color 颜色
     */
    constructor(options?: {
        color: Cesium.Color;
    });
    /* Excluded from this release type: getType */
    /* Excluded from this release type: getValue */
    /* Excluded from this release type: equals */
}

/**
 * 闪烁线材质
 * @noInheritDoc
 * @example
 * ```ts
 * let material = new BC.PolylineFlickerMaterialProperty({
 *   color: BC.Color.WHITE,
 * })
 * ```
 */
export declare class PolylineFlickerMaterialProperty extends MaterialProperty {
    /**
     * 颜色
     */
    color: Cesium.Color;
    /**
     * 速度
     */
    speed: number;
    /**
     * @param options 属性
     */
    constructor(options?: {
        /**
         * 颜色
         * @defaultValue BC.Color.fromBytes(0, 255, 255, 255)
         */
        color: Cesium.Color;
        /**
         * 速度
         * @defaultValue 1
         */
        speed: number;
    });
    /* Excluded from this release type: getType */
    /* Excluded from this release type: getValue */
    /* Excluded from this release type: equals */
}

/**
 * 流动线材质
 * @noInheritDoc
 * @example
 * ```ts
 * let material = new BC.PolylineFlowMaterialProperty({
 *   color: BC.Color.WHITE,
 * })
 * ```
 */
export declare class PolylineFlowMaterialProperty extends MaterialProperty {
    private _percent;
    private _percentSubscription;
    private _gradient;
    private _gradientSubscription;
    /**
     * 颜色
     * @defaultValue BC.Color.fromBytes(0, 255, 255, 255)
     */
    color: Cesium.Color;
    /**
     * 速度
     * @defaultValue 1
     */
    speed: number;
    /**
     * 比例
     */
    percent: number;
    /**
     * 透明程度
     */
    gradient: number;
    constructor(options?: {
        /**
         * 颜色
         * @defaultValue BC.Color.fromBytes(0, 255, 255, 255)
         */
        color: Cesium.Color;
        /**
         * 速度
         * @defaultValue 1
         */
        speed: number;
        /**
         * 比例
         */
        percent: number;
        /**
         * 透明程度
         */
        gradient: number;
    });
    /* Excluded from this release type: getType */
    /* Excluded from this release type: getValue */
    /* Excluded from this release type: equals */
}

export declare const PolylineGlowMaterialProperty: typeof globalThis.Cesium.PolylineGlowMaterialProperty;

/**
 * 图片轨迹线材质
 * @noInheritDoc
 * @example
 * ```ts
 * let material = new BC.PolylineImageTrailMaterialProperty({
 *   color: BC.Color.WHITE,
 *   image: '**\/*.png',
 *   repeat: { x: 10, y: 1 },
 * })
 * ```
 */
export declare class PolylineImageTrailMaterialProperty extends MaterialProperty {
    private _image;
    private _imageSubscription;
    private _repeat;
    private _repeatSubscription;
    /**
     * 颜色
     * @defaultValue BC.Color.fromBytes(0, 255, 255, 255)
     */
    color: Cesium.Color;
    /**
     * 速度
     * @defaultValue 1
     */
    speed: number;
    /**
     * 图片地址
     */
    image: string;
    /**
     * 重复规则
     */
    repeat: Cesium.Cartesian2;
    /**
     * 属性
     * @param options
     */
    constructor(options?: {
        /**
         * 颜色
         * @defaultValue BC.Color.fromBytes(0, 255, 255, 255)
         */
        color: Cesium.Color;
        /**
         * 速度
         * @defaultValue 1
         */
        speed: number;
        /**
         * 图片地址
         */
        image: string;
        /**
         * 重复规则
         */
        repeat: Cesium.Cartesian2;
    });
    /* Excluded from this release type: getType */
    /* Excluded from this release type: getValue */
    /* Excluded from this release type: equals */
}

/**
 * 发光线材质
 * @noInheritDoc
 * @example
 * ```ts
 * let material = new BC.PolylineLightingMaterialProperty({
 *   color: BC.Color.WHITE,
 * })
 * ```
 */
export declare class PolylineLightingMaterialProperty extends MaterialProperty {
    private _image;
    private _imageSubscription;
    /* Excluded from this release type: image */
    /**
     * 颜色
     */
    color: Cesium.Color;
    constructor(options?: {
        /**
         * 颜色
         */
        color: Cesium.Color;
    });
    /* Excluded from this release type: getType */
    /* Excluded from this release type: getValue */
    /* Excluded from this release type: equals */
}

/**
 * 发光轨迹线材质
 * @noInheritDoc
 * @example
 * ```ts
 * let material = new BC.PolylineLightingTrailMaterialProperty({
 *   color: BC.Color.WHITE,
 * })
 * ```
 */
export declare class PolylineLightingTrailMaterialProperty extends MaterialProperty {
    private _image;
    private _imageSubscription;
    /* Excluded from this release type: image */
    /**
     * 颜色
     */
    color: Cesium.Color;
    /**
     * 速度
     */
    speed: number;
    /**
     * @param options 属性
     */
    constructor(options?: {
        /**
         * 颜色
         */
        color: Cesium.Color;
        /**
         * 速度
         */
        speed: number;
    });
    /* Excluded from this release type: getType */
    /* Excluded from this release type: getValue */
    /* Excluded from this release type: equals */
}

export declare const PolylineOutlineMaterialProperty: typeof globalThis.Cesium.PolylineOutlineMaterialProperty;

/**
 * 线图元
 * @noInheritDoc
 * @example
 * ```ts
 * let polyline = new BC.PolylinePrimitive('120,20;120,30')
 * polyline.setStyle({
 *   width: 10,
 * })
 * ```
 */
export declare class PolylinePrimitive extends Overlay {
    private _positions;
    /**
     *
     * @param positions 坐标串
     */
    constructor(positions: T_Position[]);
    get type(): any;
    set positions(positions: T_Position[]);
    get positions(): T_Position[];
    get center(): Position;
    get distance(): number;
    _mountedHook(): void;
    /**
     * 设置风格
     * @param style
     * @returns {PolylinePrimitive}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "width": 1, //线宽
     *   "material": BC.Color.WHITE, //材质
     *   "clampToGround": false, //是否贴地
     *   "shadows": 0, //阴影类型，0：禁用、1：启用 、2：投射、3：接受
     *   "distanceDisplayCondition": {
     *     "near": 0, //最近距离
     *     "far": Number.MAX_VALUE //最远距离
     *   }, //根据距离设置可见
     *   "classificationType": 2, //分类 是否影响地形，3D切片或同时影响这两者。0:地形、1:3D切片、2：两者
     *   "zIndex": 0 //层级
     * }
     * ```
     */
    setStyle(style: any): this;
}

/**
 * 颜色轨迹线材质
 * @noInheritDoc
 * @example
 * ```ts
 * let material = new BC.PolylineTrailMaterialProperty({
 *   color: BC.Color.WHITE,
 * })
 * ```
 */
export declare class PolylineTrailMaterialProperty extends MaterialProperty {
    /**
     * 颜色
     */
    color: Cesium.Color;
    /**
     * 速度
     */
    speed: number;
    /**
     * @param options 属性
     */
    constructor(options?: {
        /**
         * 颜色
         * @defaultValue BC.Color.fromBytes(0, 255, 255, 255)
         */
        color: Cesium.Color;
        /**
         * 速度
         * @defaultValue 1
         */
        speed: number;
    });
    /* Excluded from this release type: getType */
    /* Excluded from this release type: getValue */
    /* Excluded from this release type: equals */
}

/**
 * 管道
 * @noInheritDoc
 * @example
 * ```ts
 * function computeCircle(radius) {
 *   var positions = []
 *   for (var i = 0; i < 360; i++) {
 *     var radians = BC.Math.toRadians(i)
 *     positions.push({
 *       x: radius * Math.cos(radians),
 *       y: radius * Math.sin(radians),
 *     })
 *   }
 *   return positions
 * }
 *
 * let polylineVolume = new BC.PolylineVolume(
 *   '-90.0,32.0,0.0;-90.0,36.0,100000.0;-94.0,36.0,0.0;',
 *   computeCircle(60000)
 * )
 * ```
 */
export declare class PolylineVolume extends Overlay {
    private _positions;
    private _shape;
    /**
     *
     * @param positions 坐标串
     * @param shape 形状
     */
    constructor(positions: string | T_Position[], shape: Cesium.Property | Array<Cesium.Cartesian2>);
    get type(): any;
    set positions(positions: string | T_Position[]);
    get positions(): string | T_Position[];
    set shape(shape: Cesium.Property | Array<Cesium.Cartesian2>);
    get shape(): Cesium.Property | Array<Cesium.Cartesian2>;
    _mountedHook(): void;
    /**
     *
     * @param  text
     * @param  textStyle
     */
    setLabel(text: string, textStyle: any): this;
    /**
     * 设置风格
     * @param style
     * @returns {PolylineVolume}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "cornerType": 0, //转角类别，0：圆角、1：直角、2：斜角
     *   "fill": true, //是否用提供的材料填充多边形。
     *   "material": BC.Color.WHITE, //材质
     *   "outline": false, //是否显示边框
     *   "outlineColor": BC.Color.BLACK, //边框颜色
     *   "outlineWidth": 0, //边框宽度
     *   "shadows": 0, //阴影类型，0：禁用、1：启用 、2：投射、3：接受
     *   "distanceDisplayCondition": {
     *     "near": 0, //最近距离
     *     "far": Number.MAX_VALUE //最远距离
     *   } //根据距离设置可见
     * }
     * ```
     */
    setStyle(style: any): this;
    /**
     * Parses from entity
     * @param entity
     * @param shape
     * @returns {PolylineVolume|any}
     */
    static fromEntity(entity: Cesium.Entity, shape: Cesium.Property | Array<Cesium.Cartesian2>): PolylineVolume | undefined;
}

export declare class PolylineVolumePrimitive extends Overlay {
    private _positions;
    private _shape;
    /**
     *
     * @param positions 坐标串
     * @param holes 空心坐标串
     */
    constructor(positions: string | T_Position[], shape: any[]);
    get type(): any;
    set positions(positions: string | T_Position[]);
    get positions(): string | T_Position[];
    /**
     *
     * @private
     */
    _mountedHook(): void;
    /**
     * 设置风格
     * @param style
     * @returns {WaterPrimitive}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "height": 1, //高度
     *   "extrudedHeight": 0, //拉升高度
     *   "stRotation": 0, //旋转角度
     *   "outline": false, //是否显示边框
     *   "closeTop": true, //顶面是否闭合
     *   "closeBottom": true, //底面是否闭合
     *   "classificationType": 2, //分类 是否影响地形，3D切片或同时影响这两者。0:地形、1:3D切片、2：两者
     *   "baseWaterColor": Color.WHITE, // 水体颜色
     *   "blendColor": Color.WHITE, // 混合颜色
     *   "specularMap": "", // 镜面图
     *   "normalMap": "", // 法线图
     *   "frequency": 1000, //波纹数量
     *   "animationSpeed": 0.03, // 动画速度
     *   "amplitude": 10, //水波振幅
     *   "specularIntensity": 10 //镜面反射强度
     * }
     * ```
     */
    setStyle(style: any): this;
}

/**
 * 气泡窗口
 * @noInheritDoc
 * @example
 * ```ts
 * let popup = viewer.popup
 * popup.setContent('<div></div>')
 * ```
 */
declare class Popup extends Widget {
    /**
     * 配置
     * @example
     * ```json
     * // 配置（可选）
     * // 配置后会影响全局的popup的显示样式，请慎重。
     * {
     *   "position": "center", // popup的位于鼠标的点击位置的方向,有：center，left ，right
     *   "customClass": "custom" // 添加自定义的Css 类名到popup中，多个用空格隔开
     * }
     * ```
     */
    private _config;
    private _position;
    /**
     * @hidden
     */
    constructor();
    /**
     * @hidden
     */
    get type(): any;
    /**
     * @hidden
     */
    set config(config: any);
    /**
     * binds event
     * @private
     */
    _bindEvent(): void;
    /**
     *
     * @private
     */
    _mountContent(): void;
    /**
     *
     * @private
     */
    _installHook(): void;
    /**
     *
     * @param windowCoord
     * @private
     */
    _updateWindowCoord(windowCoord: any): void;
    /**
     *
     * @private
     */
    _setCustomClass(): void;
    /**
     * Setting  wrapper
     * @param wrapper
     * @returns {Widget}
     */
    setWrapper(wrapper: any): this;
    /**
     *
     * Setting widget position
     * @param {*} position
     *
     */
    setPosition(position: any): this;
    /**
     *
     * @param {*} position
     * @param {*} content
     */
    showAt(position: any, content: any): this;
}

export declare class Position {
    _lng: number;
    _lat: number;
    _alt: number;
    _heading: number;
    _pitch: number;
    _roll: number;
    constructor(lng?: number, lat?: number, alt?: number, heading?: number, pitch?: number, roll?: number);
    set lng(lng: number);
    get lng(): number;
    set lat(lat: number);
    get lat(): number;
    set alt(alt: number);
    get alt(): number;
    set heading(heading: number);
    get heading(): number;
    set pitch(pitch: number);
    get pitch(): number;
    set roll(roll: number);
    get roll(): number;
    /**
     *
     * @returns {string}
     */
    serialize(): string;
    /**
     * Calculate the distance between two positions
     * @param target
     * @returns {number}
     */
    distance(target: any): number;
    /**
     * clone a position
     * @returns {Position}
     */
    clone(): Position;
    /**
     * clone a position
     * @deprecated
     * @returns {Position}
     */
    copy(): Position;
    /**
     *
     * @returns {*[]}
     */
    toArray(): any[];
    /**
     *
     * @returns {string}
     */
    toString(): string;
    /**
     *
     * @returns {{lng, heading, alt, roll, pitch, lat}}
     */
    toObject(): {
        lng: any;
        heading: any;
        alt: any;
        roll: any;
        pitch: any;
        lat: any;
    };
    /**
     *
     * @param arr
     * @returns {Position}
     */
    static fromArray(arr: number[] | string[]): Position;
    /**
     *
     * @param str
     * @returns {Position}
     */
    static fromString(str: string): Position;
    /**
     *
     * @param obj
     * @returns {Position}
     */
    static fromObject(obj: {
        lng: number;
        lat: number;
        alt: number;
        heading: number;
        pitch: number;
        roll: number;
    }): Position;
    /**
     * Deserialize
     * @param valStr
     * @returns {Position}
     */
    static deserialize(valStr: string): Position;
}

/**
 * 图元图层，用于添加各类图元数据，将图元数据按一定的逻辑分组，方便统一管理
 * @noInheritDoc
 * @example
 * ```ts
 * let layer = new BC.PrimitiveLayer('id')
 * viewer.addLayer(layer)
 * ```
 */
export declare class PrimitiveLayer extends Layer {
    private _points;
    private _labels;
    private _billboards;
    private _polylines;
    private _clouds;
    /**
     * @param id 图层唯一标识
     */
    constructor(id: any);
    /**
     * 类型
     */
    get type(): string;
    /**
     * 点图元数据集合
     */
    get points(): any;
    /**
     * 标签图元数据集合
     */
    get labels(): any;
    /**
     * 广告牌图元数据集合
     */
    get billboards(): any;
    /**
     * 线图元数据集合
     */
    get polylines(): any;
    /**
     * 云数据集合
     */
    get clouds(): any;
    add(): void;
    /**
     * 清除图层
     */
    clear(): PrimitiveLayer;
    setStyle(style: any): void;
}

/**
 * 雷达线材质
 * @noInheritDoc
 * @example
 * ```ts
 * let material = new BC.RadarLineMaterialProperty({
 *   color: BC.Color.WHITE,
 * })
 * ```
 */
export declare class RadarLineMaterialProperty extends MaterialProperty {
    /**
     * 颜色
     */
    color: Cesium.Color;
    /**
     * 速度
     */
    speed: number;
    /**
     * @param options 属性
     */
    constructor(options?: {
        /**
         * 颜色
         * @defaultValue BC.Color.fromBytes(0, 255, 255, 255)
         */
        color: Cesium.Color;
        /**
         * 速度
         * @defaultValue 1
         */
        speed: number;
    });
    /* Excluded from this release type: getType */
    /* Excluded from this release type: getValue */
    /* Excluded from this release type: equals */
}

/**
 * 雷达扫描
 * @example
 * ```ts
 * let radarScan = new BC.RadarScan(viewer, '120, 20', 200)
 * radarScan.start()
 * ```
 */
export declare class RadarScan extends Animation_2 {
    private _position;
    private _radius;
    private _color;
    private _speed;
    private _delegate;
    /**
     * @param viewer 3D场景
     * @param position 雷达位置
     * @param radius 扫描半径
     * @param options 选项
     */
    constructor(viewer: Viewer, position: Position | string | string[] | number[], radius: number, options?: any);
    /* Excluded from this release type: type */
    protected _bindEvent(): void;
    protected _unbindEvent(): void;
    private _mountContent;
    /**
     * 开始
     */
    start(): this;
    /**
     * 停止
     */
    stop(): this;
}

/**
 * 扫描雷达材质
 * @noInheritDoc
 * @example
 * ```ts
 * let material = new BC.RadarSweepMaterialProperty({
 *   color: BC.Color.WHITE,
 * })
 * ```
 */
export declare class RadarSweepMaterialProperty extends MaterialProperty {
    /**
     * 颜色
     */
    color: Cesium.Color;
    /**
     * 速度
     */
    speed: number;
    /**
     * @param options 属性
     */
    constructor(options?: {
        /**
         * 颜色
         * @defaultValue BC.Color.fromBytes(0, 255, 255, 255)
         */
        color: Cesium.Color;
        /**
         * 速度
         * @defaultValue 1
         */
        speed: number;
    });
    /* Excluded from this release type: getType */
    /* Excluded from this release type: getValue */
    /* Excluded from this release type: equals */
}

/**
 * 波纹雷达材质
 * @noInheritDoc
 * @example
 * ```ts
 * let material = new BC.RadarWaveMaterialProperty({
 *   color: BC.Color.WHITE,
 * })
 * ```
 */
export declare class RadarWaveMaterialProperty extends MaterialProperty {
    /**
     * 颜色
     */
    color: Cesium.Color;
    /**
     * 速度
     */
    speed: number;
    /**
     * @param options 属性
     */
    constructor(options?: {
        /**
         * 颜色
         * @defaultValue BC.Color.fromBytes(0, 255, 255, 255)
         */
        color: Cesium.Color;
        /**
         * 速度
         * @defaultValue 1
         */
        speed: number;
    });
    /* Excluded from this release type: getType */
    /* Excluded from this release type: getValue */
    /* Excluded from this release type: equals */
}

/**
 * 雨天效果
 * @example
 * ```ts
 * viewer.weather.rain.enable = true
 * viewer.weather.rain.speed = 2
 * ```
 */
export declare class Rain {
    private _id;
    private _viewer;
    private _delegate;
    private _enable;
    private _speed;
    private _mixNum;
    private _state;
    constructor();
    /**
     * 类型
     */
    get type(): string;
    /**
     * 是否启用
     */
    set enable(enable: boolean);
    get enable(): boolean;
    /**
     * 速度
     */
    set speed(speed: number);
    get speed(): number;
    set mixNum(mixNum: number);
    get mixNum(): number;
    /**
     *
     */
    private _createPostProcessStage;
    /* Excluded from this release type: addTo */
}

export declare const Rect: typeof globalThis.Cesium.Rectangle;

/**
 * 矩形
 * @noInheritDoc
 * @example
 * ```ts
 * let rectangle = new BC.Rectangle('-90.0,32.0;-94.0,36.0;')
 * ```
 */
export declare class Rectangle extends Overlay {
    private _positions;
    /**
     *
     * @param positions 坐标串
     */
    constructor(positions: string | T_Position[]);
    get type(): any;
    set positions(positions: string | T_Position[]);
    get positions(): string | T_Position[];
    _mountedHook(): void;
    /**
     * @param text
     * @param textStyle
     * @returns {Rectangle}
     */
    setLabel(text: string, textStyle: any): this;
    /**
     * 设置风格
     * @param style
     * @returns {Rectangle}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "height": 1, //高度
     *   "heightReference": 0, //高度参照，0：位置无参照，位置是绝对的，1：位置固定在地形上 2：位置高度是指地形上方的高度。
     *   "extrudedHeight": 0, //拉升高度
     *   "rotation": 0, //顺时针旋转角度
     *   "stRotation": 0, //逆时针旋转角度
     *   "fill": true, //是否用提供的材料填充多边形。
     *   "material": BC.Color.WHITE, //材质
     *   "outline": false, //是否显示边框
     *   "outlineColor": BC.Color.BLACK, //边框颜色
     *   "outlineWidth": 0, //边框宽度
     *   "shadows": 0, //阴影类型，0：禁用、1：启用 、2：投射、3：接受
     *   "distanceDisplayCondition": {
     *     "near": 0, //最近距离
     *     "far": Number.MAX_VALUE //最远距离
     *   }, //根据距离设置可见
     *   "classificationType": 2, //分类 是否影响地形，3D切片或同时影响这两者。0:地形、1:3D切片、2：两者
     *   "zIndex": 0 //层级
     * }
     * ```
     */
    setStyle(style: any): this;
}

export declare class RiverPrimitive extends Overlay {
    private _positions;
    private _holes;
    /**
     *
     * @param positions 坐标串
     */
    constructor(positions: string | T_Position[], style: any);
    get type(): any;
    set positions(positions: string | T_Position[]);
    /**
     * 坐标
     */
    get positions(): string | T_Position[];
    /**
     * 高度
     */
    get height(): number;
    set height(value: number);
    /**
     * 颜色
     */
    get baseWaterColor(): Cesium.Color;
    set baseWaterColor(value: Cesium.Color);
    protected _mountedHook(): void;
    /**
     * 设置风格
     * @param style
     * @returns {RiverPrimitive}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "height": 1, //高度
     *   "stRotation": 0, //旋转角度
     *   "outline": false, //是否显示边框
     *   "closeTop": true, //顶面是否闭合
     *   "closeBottom": true, //底面是否闭合
     *   "classificationType": 2, //分类 是否影响地形，3D切片或同时影响这两者。0:地形、1:3D切片、2：两者
     *   "baseWaterColor": BC.Color.WHITE, // 水体颜色
     *   "blendColor": BC.Color.WHITE, // 混合颜色
     *   "specularMap": "", // 镜面图
     *   "normalMap": "", // 法线图
     *   "frequency": 1000, //波纹数量
     *   "animationSpeed": 0.03, // 动画速度
     *   "amplitude": 10, //水波振幅
     *   "specularIntensity": 10 //镜面反射强度
     * }
     * ```
     */
    setStyle(style: any): this;
}

/**
 * 漫游控制
 * @example
 * ```ts
 * let rc = new BC.RoamingController(viewer)
 * ```
 */
export declare class RoamingController {
    private _viewer;
    private _viewOption;
    private _cache;
    private _activedPath;
    /**
     * @param viewer 3D 场景
     */
    constructor(viewer: Viewer);
    /**
     *
     * @returns {boolean}
     * @private
     */
    private _onPostRender;
    /**
     * 添加路径
     * @param path 路径
     * @returns {RoamingController}
     */
    addPath(path: RoamingPath): RoamingController;
    /**
     * 添加路径数组
     * @param paths 路径数组
     * @returns {RoamingController}
     */
    addPaths(paths: RoamingPath[]): RoamingController;
    /**
     * 移除路径
     * @param path
     * @returns {RoamingController}
     */
    removePath(path: RoamingPath): RoamingController;
    /**
     * 根据唯一标识获取路径
     * @param id 唯一标识
     * @returns {*|undefined}
     */
    getPath(id: string): RoamingPath | undefined;
    /**
     * 获取所有路径
     * @returns 返回漫游控制下的所有路径
     */
    getPaths(): RoamingPath[];
    /**
     * 激活漫游
     * @param path 路径
     * @param onProcess 进度回调
     * @returns {RoamingController}
     * @example
     * ```ts
     * // 漫游参数（可选）
     * {
     *   "pitch": 0, // 俯仰角
     *   "range": 1000 // 距离
     * }
     * ```
     */
    activate(path: RoamingPath, _onProgress?: (process: number) => void): RoamingController;
    pause(): void;
    /**
     * 结束漫游
     * @returns {RoamingController}
     */
    deactivate(): RoamingController;
    /**
     * 移除所有路径
     * @returns {RoamingController}
     */
    clear(): RoamingController;
}

/**
 * 漫游路径
 * @example
 * ```ts
 * let path = new BC.RoamingPath('120.121,32.1213;121.132,32.1213', 20)
 * rc.addPath(path)
 * ```
 */
export declare class RoamingPath {
    private _id;
    private _bid;
    private _positions;
    private _speed;
    private _timeLine;
    private _sampledPosition;
    private _velocityOrientation;
    private _actived;
    private _startTime;
    private _endTime;
    private _currentTime;
    private _pathEvent;
    private _state;
    private _viewer;
    private _heading;
    private _pitch;
    private _range;
    private _preState;
    private _progress;
    private _onProgress;
    /**
     *
     * @param positions 坐标串
     * @param duration 间隔时间，单位：秒
     * @param pathMode 路径模式：speed(匀速) / time(等时)
     */
    constructor(positions: string | Array<Position | number | string | Object>, options: {
        heading?: number;
        pitch?: number;
        range?: number;
        speed?: number;
    });
    /**
     * 唯一标识
     */
    get pathId(): string;
    /**
     * 业务唯一标识
     */
    set id(id: any);
    get id(): any;
    /**
     * 坐标串
     */
    set positions(postions: string | Array<Position | number | string>);
    /**
     * 获取坐标串
     */
    get positions(): Position[];
    /**
     * 漫游速度，m/s
     */
    set speed(speed: any);
    get speed(): any;
    /**
     * 漫游偏航角度
     */
    get heading(): number;
    set heading(heading: number);
    /**
     * 漫游俯仰角
     */
    get pitch(): number;
    set pitch(pitch: number);
    /**
     * 视角高度
     */
    get range(): number;
    set range(range: number);
    get pathEvent(): PathEvent;
    /**
     * 是否激活
     */
    set actived(actived: boolean);
    get actived(): boolean;
    /**
     * 状态
     */
    get state(): string;
    /**
     * 进度
     */
    get progress(): number;
    set progress(progress: number);
    start(viewer: Viewer, _onProgress?: (process: number) => void): void;
    /**
     * 暂停
     */
    pauseRoam(): void;
    /**
     * 停止漫游
     */
    stopRoam(): void;
    private _tickEventFun;
    private _endEventFun;
    private _onAdd;
    private _onRemove;
    private changeView;
    /**
     *
     * @param viewer
     * @param viewOption
     * @private
     */
    private _onPostRender;
    /**
     *
     */
    private _resetTimeLine;
    private Bearing;
}

/**
 * S3M图层
 * @example
 * ```ts
 * let layer = new BC.S3MLayer('id','**.scp')
 * viewer.addLayer(layer)
 * ```
 */
export declare class S3MLayer extends Layer {
    private _url;
    private _options;
    /**
     * @param id 图层唯一标识
     * @param url 数据地址
     * @param options 属性配置
     */
    constructor(id: string, url: string, options?: typeof ConstructorOptions);
    /* Excluded from this release type: type */
    /**
     * 获取当图元准备渲染时解析的Promise
     */
    get readyPromise(): Promise<any>;
    protected _onAdd(viewer: any): void;
    protected _onRemove(): void;
    clear(): void;
    setStyle(style: any): void;
}

/**
 * 扫描圆图元
 * @noInheritDoc
 * @example
 * ```ts
 * let scanCirclePrimitive = new BC.ScanCirclePrimitive('120,20', 1000)
 * ```
 */
export declare class ScanCirclePrimitive extends Overlay {
    private _position;
    private _radius;
    /**
     *
     * @param position 坐标
     * @param radius 半径
     */
    constructor(position: T_Position, radius: number);
    get type(): any;
    set position(position: T_Position);
    get position(): T_Position;
    set radius(radius: number);
    get radius(): number;
    /**
     *
     * @private
     */
    private _setAppearance;
    _mountedHook(): void;
    /**
     * 设置风格
     * @param style
     * @returns {ScanCirclePrimitive}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "speed": 5, //速度
     *   "color": BC.Color.WHITE //颜色
     * }
     * ```
     */
    setStyle(style?: any): this;
}

export declare enum SceneEventType {
    CAMERA_MOVE_END = "cameraMoveEnd",
    CAMERA_CHANGED = "cameraChanged",
    PRE_UPDATE = "preUpdate",
    POST_UPDATE = "postUpdate",
    PRE_RENDER = "preRender",
    POST_RENDER = "postRender",
    MORPH_COMPLETE = "morphComplete",
    CLOCK_TICK = "clockTick",
    RENDER_ERROR = "renderError"
}

export declare const SceneMode: typeof globalThis.Cesium.SceneMode;

/**
 * 场景分割
 * @noInheritDoc
 * @example
 * ```ts
 * let tileset = new BC.Tileset('tileset.json')
 * tileset.setSplitDirection(1)
 * viewer.sceneSplit.enable = true
 * viewer.sceneSplit.addTileset(tileset)
 * ```
 */
declare class SceneSplit extends Widget {
    private _tileset;
    private _baseLayer;
    private _moveActive;
    /**
     * @hidden
     */
    constructor();
    /**
     * @hidden
     */
    get type(): any;
    /**
     *
     * @private
     */
    _installHook(): void;
    /**
     *
     * @private
     */
    _bindEvent(): void;
    /**
     *
     * @private
     */
    _unbindEvent(): void;
    /**
     *
     * @private
     */
    _mountContent(): void;
    /**
     *
     * @param movement
     * @private
     */
    _moveHandler(movement: any): void;
    /**
     *
     * @param tileset
     * @return {SceneSplit}
     */
    addTileset(tileset: any): this;
    /**
     *
     * @param baseLayer
     * @returns {SceneSplit}
     */
    addBaseLayer(baseLayer: any): this;
}

export declare const ShadowMode: typeof globalThis.Cesium.ShadowMode;

/**
 * 描边效果
 * @example
 * ```ts
 * viewer.effect.silhouette.enable = true
 * ```
 */
export declare class Silhouette {
    private _viewer;
    private _delegate;
    private _enable;
    private _color;
    private _length;
    private _selected;
    private _state;
    constructor();
    /**
     * 类型
     * @ignore
     */
    get type(): string;
    /**
     * 是否启用
     */
    set enable(enable: boolean);
    get enable(): boolean;
    /**
     * 颜色
     */
    set color(color: Cesium.Color);
    get color(): Cesium.Color;
    /**
     * 长度
     */
    set length(length: number);
    get length(): number;
    /**
     * 设置后期作用的覆盖物
     */
    set selected(selected: any[]);
    get selected(): any[];
    /**
     *
     * @private
     */
    private _createPostProcessStage;
    /**
     * 添加效果
     * @param viewer
     * @returns {Silhouette}
     * @ignore
     */
    addTo(viewer: Cesium.Viewer): Silhouette;
}

export declare const SkyBox: typeof globalThis.Cesium.SkyBox;

export declare class SkyLine {
    _viewer: Viewer;
    postProccessStageComposite: Cesium.PostProcessStageComposite;
    constructor();
    get viewer(): Viewer;
    closeSkyLine(): void;
    openSkyLine(customWidth: number): void;
    destroy(): void;
    /**
     *
     * @param viewer
     */
    install(viewer: Viewer): void;
    uninstall(viewer: any): void;
}

export declare class SlightLine {
    _viewer: any;
    _db: Cesium.CustomDataSource;
    _plot: Plot;
    _depthFailMaterial: any;
    _visibleColor: any;
    _hiddenColor: any;
    constructor(options: any);
    get viewer(): any;
    get db(): Cesium.CustomDataSource;
    get plot(): Plot;
    get visibleColor(): any;
    set visibleColor(val: any);
    get hiddenColor(): any;
    set hiddenColor(val: any);
    get depthFailMaterial(): any;
    set depthFailMaterial(val: any);
    drawLine(): void;
    add(origin: any, target: any): Cesium.Entity[];
    clear(): void;
    destroy(): void;
    /**
     *
     * @param viewer
     */
    install(viewer: Viewer): void;
    uninstall(viewer: any): void;
}

export declare class SlopeAspect {
    _viewer: Viewer;
    _db: Cesium.CustomDataSource;
    constructor();
    get viewer(): Viewer;
    GetSubRectangles(positions: Position[], precision?: number): any[];
    pointInPolygon(point: any, polygon: any): any;
    getPolygonSlopeFromTerrain(positions: Position[]): string;
    computePolygonHeightRange(e: any): {
        maxHeight: number;
        minHeight: number;
        maxPoint: any;
        minPoint: any;
    };
    computeRectangleBounds(rectangle: Cesium.Rectangle): Position[];
    splitPositions(positions: any, splitCount: any): any;
    destroy(): void;
    get db(): Cesium.CustomDataSource;
    clear(): void;
    /**
     *
     * @param viewer
     */
    install(viewer: Viewer): void;
    uninstall(viewer: any): void;
}

/**
 * 雪天效果
 * @example
 * ```ts
 * viewer.weather.snow.enable = true
 * viewer.weather.snow.speed = 2
 * ```
 */
export declare class Snow {
    private _id;
    private _viewer;
    private _delegate;
    private _enable;
    private _speed;
    private _state;
    constructor();
    /**
     * 类型
     */
    get type(): string;
    /**
     * 是否启用
     */
    set enable(enable: boolean);
    get enable(): boolean;
    /**
     * 速度
     */
    set speed(speed: number);
    get speed(): number;
    /**
     *
     * @private
     */
    private _createPostProcessStage;
    /* Excluded from this release type: addTo */
}

export declare class Sunshine extends Event_2 {
    _viewer: Viewer;
    _interval: any;
    _currentTime: number;
    constructor();
    get viewer(): Viewer;
    get currentTime(): number;
    set currentTime(val: number);
    closeSunshine(): void;
    openSunshine(option: any): void;
    destroy(): void;
    /**
     *
     * @param viewer
     */
    install(viewer: Viewer): void;
    uninstall(viewer: any): void;
}

export declare type T_Position = string | Position | string[] | number[];

/**
 * 燕尾箭头
 * @noInheritDoc
 * @example
 * ```ts
 * let tailedAttackArrow = new BC.TailedAttackArrow('-90.0,32.0;-94.0,36.0;-94.0,38.0')
 * ```
 */
export declare class TailedAttackArrow extends Overlay {
    /**
     * @hidden
     */
    private _positions;
    /**
     * @hidden
     */
    private headHeightFactor;
    /**
     * @hidden
     */
    private headWidthFactor;
    /**
     * @hidden
     */
    private neckHeightFactor;
    /**
     * @hidden
     */
    private neckWidthFactor;
    /**
     * @hidden
     */
    private tailWidthFactor;
    /**
     * @hidden
     */
    private headTailFactor;
    /**
     * @hidden
     */
    private swallowTailFactor;
    /**
     * @hidden
     */
    private _primitive;
    /**
     * @param {T_Position} positions
     * @return {*}
     */
    constructor(positions: T_Position[]);
    get type(): any;
    set positions(positions: T_Position[]);
    get positions(): T_Position[];
    protected _updatePrimitive(): void;
    _getArrowPoints(positions: any): any[];
    _getArrowHeadPoints(points: any, tailLeft: any, tailRight: any): any[];
    protected _getArrowBodyPoints(points: any, neckLeft: any, neckRight: any, tailWidthFactor: any): any[];
    protected _getHierarchy(): Cesium.PolygonHierarchy;
    _mountedHook(): void;
    setLabel(text: string, textStyle: any): this;
    /**
     * 设置箭头风格
     * 详情参考：@see {@link Polygon}
     * @param style
     * @returns {TailedAttackArrow}
     */
    setStyle(style: any): this;
}

declare class TdtImageryProvider extends Cesium_2.UrlTemplateImageryProvider {
    constructor(options?: any);
}

declare class TencentImageryProvider extends Cesium_2.UrlTemplateImageryProvider {
    constructor(options?: any);
}

/**
 * 地形工厂, 用于创建地形
 * @example
 * ```ts
 * let terrain = BC.ImageryLayerFactory.createUrlTerrain({
 * url: '****',
 * })
 * viewer.addTerrain(terrain)
 * ```
 */
export declare class TerrainFactory {
    /**
     * 创建默认地形
     * @param options 属性
     * @returns
     */
    static createEllipsoidTerrain(options: any): Cesium.EllipsoidTerrainProvider;
    /**
     * 根据 url 创建地形
     * @param options
     * @returns
     */
    static createUrlTerrain(options: any): Cesium.CesiumTerrainProvider;
    /**
     * 创建谷歌地形
     * @param options
     * @returns
     */
    static createGoogleTerrain(options: any): Cesium.GoogleEarthEnterpriseTerrainProvider;
    /**
     * 创建 Arcgis 地形
     * @param options
     * @returns
     */
    static createArcgisTerrain(options: any): Cesium.ArcGISTiledElevationTerrainProvider;
    /**
     * 创建 VR 地形
     * @param options
     * @returns
     */
    static createVRTerrain(options: any): Cesium.VRTheWorldTerrainProvider;
    /**
     * 根据类型创建地形
     * @param type 类型，参考：BC.TerrainType
     * @param options 属性
     * @returns {any}
     */
    static createTerrain(type: any, options: any): any;
}

/**
 * 地形类型
 */
export declare enum TerrainType {
    /**
     * 无地形
     */
    NONE = "none",
    /**
     * xyz 格式地形
     */
    XYZ = "xyz",
    /**
     * 谷歌地形
     */
    ARCGIS = "arcgis",
    /**
     * arcgis 地形
     */
    GOOGLE = "google",
    /**
     * VR 地形
     */
    VR = "vr"
}

/**
 * tiles模型
 * @noInheritDoc
 * @example
 * ```ts
 * let position = new BC.Position(120, 20)
 * let tileset = new BC.Tileset('tileset.json')
 * tileset.setPosition(position)
 * ```
 */
export declare class Tileset extends Overlay {
    private _tileVisibleCallback;
    private _properties;
    private _fragmentShader;
    private _replaceFS;
    modelSection: ModelSection;
    /**
     *
     * @param url 地址
     * @param options 参数
     */
    constructor(url: string, options?: {});
    get type(): any;
    get readyPromise(): any;
    /**
     *
     * @private
     */
    _bindVisibleEvent(): void;
    /**
     * Updates tile
     * @param tile
     * @private
     */
    _updateTile(tile: any): void;
    /**
     * Sets position
     * @param position
     */
    setPosition(position: T_Position): this;
    addClippingPlane(position: Position): void;
    /**
     *
     * @param heading
     * @param pitch
     * @param roll
     */
    setHeadingPitchRoll(heading: number, pitch: number, roll: number): this;
    /**
     *
     * @param text
     * @param textStyle
     */
    setLabel(text: string, textStyle: any): this;
    /**
     * Clamps To Ground
     */
    clampToGround(): this;
    /**
     * Sets height
     * @param height
     * @param isAbsolute
     */
    setHeight(height: number, isAbsolute?: boolean): this;
    /**
     * Sets scale
     * @param scale
     */
    setScale(scale: number): this;
    /**
     * Sets feature property
     * @param properties
     */
    setProperties(properties: any): this;
    /**
     * Sets feature FS
     * @param fragmentShader
     */
    setCustomShader(fragmentShader: any): this;
    /**
     *
     * @param fragmentShader
     * @return {Tileset}
     */
    replaceFS(fragmentShader: any): this;
    /**
     *
     * @param fragmentShader
     */
    appendFS(fragmentShader: any): this;
    /**
     *
     * @param splitDirection
     */
    setSplitDirection(splitDirection: any): this;
    /**
     * 设置风格
     * @param style
     * @example
     * ```js
     * let style = new BC.TilesetStyle({
     *   color: {
     *     conditions: [
     *       ['${Height} >= 100', 'color("purple", 0.5)'], //Height 为模型设置的属性
     *       ['${Height} >= 50', 'color("red")'],
     *       ['true', 'color("blue")'],
     *     ],
     *   },
     *   show: '${Height} > 0',
     * })
     * ```
     */
    setStyle(style: any): this;
    /**
     * 压平面集合
     */
    get flattenPolygons(): any;
    setFlatten(flattens: any): void;
    /**
     * 压平是否挖坑
     * @param discard 是否挖坑
     */
    setFlattenDiscard(discard: boolean): void;
}

/**
 * tileset压平
 * @example
 * ```ts
 * let flatten = new BC.TilesetFlatten(tileset,{
 *   height: 700,
 *   positions: '107.286395196, 29.3973740521; 107.2879760011, 29.3979339817; 107.2904175612, 29.396687132; 107.2903524223, 29.3953845625; 107.2875578653, 29.3948557041; 107.2858593979, 29.3956097313'
 * });
 * ```
 */
export declare class TilesetFlatten {
    private _tileset;
    private _flattenPolygon;
    /**
     * @param tileset 需要压平的tileset
     * @param options 属性
     */
    constructor(tileset: Tileset, options?: {
        /**
         * 高度
         */
        height: number;
        /**
         * 压平面坐标点
         */
        positions: string | T_Position[];
        /**
         * 是否启用
         */
        enabled: boolean;
    });
    /**
     * 压平面坐标点
     */
    get positions(): T_Position[];
    set positions(positions: string | T_Position[]);
    /**
     * 压平面高度
     */
    get height(): number;
    set height(value: number);
    /**
     * 是否启用
     */
    set enabled(value: boolean);
    get enabled(): boolean;
    /**
     * 销毁压平面
     */
    destroy(): void;
}

/**
 * 3dTiles 图层，用于添加 3dTiles 模型数据
 * @noInheritDoc
 * @example
 * ```ts
 * let layer = new BC.TilesetLayer('id')
 * viewer.addLayer(layer)
 * ```
 */
export declare class TilesetLayer extends Layer {
    /**
     * @param id 图层唯一标识
     */
    constructor(id: string);
    /**
     * 类型
     */
    get type(): string;
    /**
     * 清空图层
     */
    clear(): TilesetLayer;
    setStyle(style: any): void;
}

/**
 * 模型分割
 * @noInheritDoc
 * @example
 * ```ts
 * let tileset = new BC.Tileset('tileset.json')
 * tileset.setSplitDirection(1)
 * viewer.tilesetSplit.enable = true
 * viewer.tilesetSplit.addTileset(tileset)
 * ```
 */
declare class TilesetSplit extends Widget {
    private _tileset;
    private _moveActive;
    /**
     * @hidden
     */
    constructor();
    /**
     * @hidden
     */
    get type(): any;
    /**
     *
     * @private
     */
    _installHook(): void;
    /**
     *
     * @private
     */
    _bindEvent(): void;
    /**
     *
     * @private
     */
    _unbindEvent(): void;
    /**
     *
     * @private
     */
    _mountContent(): void;
    /**
     *
     * @param movement
     * @private
     */
    _moveHandler(movement: any): void;
    /**
     *
     * @param tileset
     * @return {TilesetSplit}
     */
    addTileset(tileset: any): this;
}

export declare const TilesetStyle: typeof globalThis.Cesium.Cesium3DTileStyle;

/**
 * 提示框
 * @noInheritDoc
 * @example
 * ```ts
 * let tooltip = viewer.tooltip
 * tooltip.enable = true
 * tooltip.showAt({ x: 100, y: 100 }, '测试')
 * ```
 */
declare class Tooltip extends Widget {
    /**
     * @hidden
     */
    constructor();
    /**
     * @hidden
     */
    get type(): any;
    /**
     *
     * @private
     */
    _installHook(): void;
    /**
     *
     * @param {*} windowCoord
     *
     */
    _updateWindowCoord(windowCoord: any): void;
    /**
     *
     * @param {*} position
     * @param {*} content
     *
     */
    showAt(position: {
        x: number;
        y: number;
    } | undefined, content: string | Element): this;
}

/**
 * TopoJson 图层，用于加载 TopoJson 格式数据
 * @noInheritDoc
 * @example
 * ```ts
 * let layer = new BC.GeoJsonLayer('id', '**\/**.geojson')
 * layer.eachOverlay((item) => {
 *   // item 为一个entity,
 *   if (item.polyline) {
 *     //todo
 *     let polyline = BC.Polyline.fromEntity(item)
 *   }
 *   if (item.polygon) {
 *     //todo
 *     let polygon = BC.Polygon.fromEntity(item)
 *   }
 *   if (item.billboard) {
 *     //todo
 *     let point = BC.Point.fromEntity(item)
 *     let divIcon = BC.DivIcon.fromEntity(item)
 *     let billboard = BC.Billboard.fromEntity(item)
 *   }
 * })
 * ```
 */
export declare class TopoJsonLayer extends GeoJsonLayer {
    /**
     * @param id 图层唯一标识
     * @param url 数据地址
     * @param options 属性配置
     */
    constructor(id: string, url: string, options?: {});
    /**
     * 类型
     */
    get type(): string;
}

/**
 * 轨迹
 * @example
 * ```ts
 * let tc = new BC.TrackController(viewer)
 * let track = new BC.Track('120.121,32.1213;121.132,32.1213', 20)
 * tc.addTrack(track)
 * ```
 */
export declare class Track {
    private _id;
    private _bid;
    private _positions;
    private _duration;
    private _callback;
    private _options;
    private _controller;
    private _sampledPosition;
    private _velocityOrientation;
    private _viewed;
    private _delegate;
    private _pathPositions;
    private _path;
    private _positionIndex;
    private _timeLine;
    private _startTime;
    private _endTime;
    private _trackEvent;
    private _state;
    /**
     * @param positions 坐标串
     * @param duration 间隔时间，单位：秒
     * @param callback 每一个点位到达回调函数，参数有：position(位置信息),isLast(是否为最后的点位)
     * @param options 配置参数
     */
    constructor(positions: string | Array<Position | number | string | Object>, duration: number, callback: (position: Position, isLast: boolean) => void, options: typeof DEF_OPTS);
    /**
     * 唯一标识
     */
    get trackId(): string;
    /**
     * 业务唯一标识
     */
    set id(id: any);
    get id(): any;
    /**
     * 坐标串
     */
    set positions(postions: any);
    get positions(): any;
    /**
     * 间隔时间，单位：秒
     */
    set duration(duration: any);
    get duration(): any;
    /**
     * 开始时间，设置后会独立于控制器的开始时间
     */
    set startTime(startTime: any);
    get startTime(): any;
    set viewed(viewed: boolean);
    get viewed(): boolean;
    get trackEvent(): TrackEvent_2;
    /**
     * 状态
     */
    get state(): string;
    /**
     * add to entities
     * @param controller
     */
    private _onAdd;
    /**
     * remove from entities
     */
    private _onRemove;
    /**
     *
     * @param viewer
     * @param viewOption
     */
    private _onPostRender;
    /**
     * Sets camera position
     * @param viewer
     * @param viewOption
     */
    private _setCameraView;
    /**
     *
     * @param params
     * @returns {boolean}
     */
    private _resetTimeLine;
    /**
     * 添加点位
     * @param position 点位
     * @param duration 间隔，单位：秒
     * @returns 当前轨迹
     */
    addPosition(position: Position | string, duration: number): this;
    /**
     * 设置模型
     * @param modelPath 模型路径
     * @param style 样式，详情参考：{@link overlay.Model}
     * @returns 当前轨迹
     */
    setModel(modelPath: string, style: Object): this;
    /**
     * 设置图标
     * @param icon 图标路径
     * @param style 样式，参考：{@link overlay.Billboard}
     * @returns 当前轨迹
     */
    setBillboard(icon: string, style: Object): this;
    /**
     * 设置文本
     * @param text 文本
     * @param style 样式，参考：{@link overlay.Label}
     * @returns 当前轨迹
     */
    setLabel(text: string, style: Object): this;
    /**
     * 设置路径
     * @param visible 是否可见
     * @param style 样式，参考：{@link overlay.Polyline}
     * @returns 当前轨迹
     */
    setPath(visible: boolean, style?: Object): this;
}

/**
 * 历史轨迹控制
 * @example
 * ```ts
 * let tc = new BC.TrackController(viewer)
 * ```
 */
export declare class TrackController {
    private _viewer;
    private _cache;
    private _delegete;
    private _activedTrack;
    private _viewMode;
    private _viewOption;
    private _stopTime;
    private _state;
    /**
     * @param viewer 3D 场景
     */
    constructor(viewer: any);
    get delegate(): Cesium.EntityCollection;
    get state(): string;
    /**
     * @private
     */
    private _onPostRender;
    /**
     * 添加轨迹
     * @param track 轨迹
     * @returns {TrackController}
     */
    addTrack(track: Track): TrackController;
    /**
     * 添加轨迹数组
     * @param tracks 轨迹数组
     * @returns {TrackController}
     */
    addTracks(tracks: Track[]): TrackController;
    /**
     * 根据业务唯一标识获取轨迹
     * @param id 业务唯一标识
     * @returns 轨迹
     */
    getTrack(id: string): Track | undefined;
    /**
     * 移除轨迹
     * @param track 轨迹
     * @returns {TrackController}
     */
    removeTrack(track: Track): TrackController;
    /**
     * 获取所有轨迹
     * @returns 轨迹数组
     */
    getTracks(): Track[];
    /**
     * 播放
     * @returns {TrackController}
     */
    play(): TrackController;
    /**
     * 暂停
     */
    pause(): this;
    /**
     * 继续播放
     */
    restore(): this;
    /**
     * 跟踪某一条路径
     * @param track 路径
     * @param viewOption 配置信息
     * @returns {TrackController}
     * @example
     * ```ts
     * // 属性参数（可选）
     * {
     *   "mode": null, // 视角模式：BC.TrackViewMode
     *   "pitch": 0, // 俯仰角，第一视角有效
     *   "range": 1000 // 距离
     * }
     * ```
     */
    viewTrack(track: Track, viewOption?: any): TrackController;
    /**
     * 取消跟踪某一条轨迹
     * @param track 轨迹
     * @returns {TrackController}
     */
    releaseTrack(track: Track): TrackController;
    /**
     * 移除所有路径
     * @returns {TrackController}
     */
    clear(): TrackController;
}

declare class TrackEvent_2 extends Event_2 {
    constructor();
    /**
     *
     * @private
     */
    _registerEvent(): void;
}

/**
 * 轨迹视角模式
 */
export declare const TrackViewMode: {
    /**
     *  第一人称视角
     */
    FP: string;
    /**
     *  第三人称视角
     */
    TP: string;
    /**
     * 跟随视角
     */
    TRACKED: string;
    /**
     * 自由视角
     */
    FREE: string;
};

/**
 * 轨迹线图元
 * @noInheritDoc
 * @example
 * ```ts
 * let trailLinePrimitive = new BC.TrailLinePrimitive('120,20;120,30;122,30')
 * ```
 */
export declare class TrailLinePrimitive extends Overlay {
    private _positions;
    private _width;
    /**
     *
     * @param positions 坐标串
     * @param width 宽度
     */
    constructor(positions: string | T_Position[], width?: number);
    get type(): any;
    set positions(positions: string | T_Position[]);
    get positions(): string | T_Position[];
    /**
     *
     * @private
     */
    private _setAppearance;
    _mountedHook(): void;
    /**
     * 设置风格
     * @param style
     * @returns {TrailLinePrimitive}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "speed": 5, //速度
     *   "color": BC.Color.WHITE //颜色
     * }
     * ```
     */
    setStyle(style?: any): this;
}

export declare class Transform {
    /**
     * Transforms Cartesian To WGS84
     * @param cartesian
     * @returns {Position}
     */
    static transformCartesianToWGS84(cartesian: Cesium.Cartesian3): Position;
    /**
     * Transforms WGS84 To Cartesian
     * @param position
     * @returns {Cartesian3}
     */
    static transformWGS84ToCartesian(position: Position): Cesium.Cartesian3;
    /**
     * Transforms WGS84 To Cartographic
     * @param position
     * @returns {Cartographic}
     */
    static transformWGS84ToCartographic(position: {
        lng: number;
        lat: number;
        alt: number;
    }): Cesium.Cartographic;
    /**
     * Transforms Cartesian Array To WGS84 Array
     * @param cartesianArr
     * @returns {*|*[]}
     */
    static transformCartesianArrayToWGS84Array(cartesianArr: any[]): Position[];
    /**
     * Transforms WGS84 Array To Cartesian Array
     * @param WGS84Arr
     * @returns {*|*[]}
     */
    static transformWGS84ArrayToCartesianArray(WGS84Arr: any[]): Cesium.Cartesian3[];
    /**
     * Transforms WGS84 To Mercator
     * @param position
     * @returns {Position}
     */
    static transformWGS84ToMercator(position: {
        lng: number;
        lat: number;
        alt: number;
    }): Position;
    /**
     * Transforms Mercator To WGS84
     * @param position
     * @returns {Position}
     */
    static transformMercatorToWGS84(position: {
        lng: number;
        lat: number;
        alt: number;
    }): Position;
    /**
     * Transforms Window To WGS84
     * @param position
     * @param viewer
     * @returns {Position}
     */
    static transformWindowToWGS84(position: any, viewer: {
        scene: any;
    }): Position;
    /**
     * Transforms WGS84 To Window
     * @param position
     * @param viewer
     * @returns {Cartesian2}
     */
    static transformWGS84ToWindow(position: any, viewer: {
        scene: any;
    }): Cesium.Cartesian2;
}

export declare const UniformType: typeof globalThis.Cesium.UniformType;

/**
 * 工具类
 */
export declare class Util {
    /**
     * 创建uuid
     * @param prefix 前缀，默认为 D
     * @returns {string}
     */
    static uuid(prefix?: string): string;
    /**
     * 属性合并
     * @param dest 目标对象
     * @param sources 需要合并的属性
     * @returns 目标对象
     */
    static merge(dest: Object, ...sources: Array<any>): any;
    /**
     * 按空格分割字符串
     * @param str 需要被分割的字符串
     */
    static splitWords(str: any): string[];
    /**
     * 将给定的属性合并到`obj`对象的`options`属性中，返回结果`options`
     * @param {*} obj
     * @param {*} options
     */
    static setOptions(obj: any, options: any): any;
    /**
     * 返回四舍五入到指定小数位的数字，默认情况下返回到6位小数。
     * @param num 数字
     * @param digits 小数位数
     * @returns
     */
    static formatNum(num: number, digits: number): number;
    /**
     * 去除字符串中的空格
     * @param {*} str
     */
    static trim(str: any): any;
    /**
     *  创建空图片
     * @returns Base64编码格式的图片
     */
    static emptyImageUrl(): string;
    /**
     *
     * 检查Position是否有效
     * @param position
     */
    static checkPosition(position: Object): boolean;
    /**
     * 对函数进行防抖处理，调用函数后将在设置时间后执行
     * @param fn
     * @param delay
     * @returns {function(): void}
     */
    static debounce(fn: () => void, delay: number): () => void;
    /**
     * 创建一个限制函数，该函数每次最多只能调用一次
     * @param fn 函数
     * @param delay 调用间隔
     * @returns {function(): void}
     */
    static throttle(fn: () => void, delay: number): () => void;
    /**
     * 将Base64编码的数据转换为二进制数据
     * @param dataUrl Base64编码的数据
     * @returns
     */
    static dataURLtoBlob(dataUrl: string): Blob;
}

/**
 * 矢量图层，用于添加各类矢量数据（点、线、面等），将矢量数据按一定的逻辑分组，方便统一管理
 * @noInheritDoc
 */
export declare class VectorLayer extends Layer {
    /**
     * @param id 图层唯一标识
     */
    constructor(id: string);
    /**
     * 类型
     */
    get type(): string;
    /**
     * 清空图层
     */
    clear(): VectorLayer;
    setStyle(style: any): void;
}

export declare const VerticalOrigin: typeof globalThis.Cesium.VerticalOrigin;

/**
 * 视频图元
 * @noInheritDoc
 * @example
 * ```ts
 * let videoEl = new document.getElementById('video')
 * let videoPrimitive = new BC.VideoPrimitive('120,20;120,30;122,30', videoEl)
 * ```
 */
export declare class VideoPrimitive extends Overlay {
    private _positions;
    private _video;
    /**
     *
     * @param positions 坐标串
     * @param video 视频地址
     */
    constructor(positions: string | T_Position[], video: string);
    get type(): any;
    set positions(positions: string | T_Position[]);
    get positions(): string | T_Position[];
    set video(video: string);
    get video(): string;
    /**
     *
     * @private
     */
    _setAppearance(): void;
    _mountedHook(): void;
    /**
     * 设置风格
     * @param style
     * @returns {VideoPrimitive}
     */
    setStyle(style: any): this;
}

/**
 * 3D 场景主要接口，在给定的 DivId 中构建三维场景
 * @noInheritDoc
 * @example
 * ```html
 * <div id="viewer-container"></div>
 * ```
 *
 * ```ts
 * let viewer = BC.Viewer('viewer-container')
 * global.viewer = viewer // 添加到全局变量
 * ```
 */
export declare class Viewer {
    private _delegate;
    private _viewerEvent;
    private _sceneEvent;
    private _viewerOption;
    private _cameraOption;
    private _dcContainer;
    private _baseLayerPicker;
    private _layerGroupCache;
    private _layerCache;
    private _mouseEvent;
    cesiumWidget: Cesium.CesiumWidget;
    tooltip: Tooltip;
    compass: Compass;
    popup: Popup;
    contextMenu: ContextMenu;
    mapSwitch: MapSwitch;
    mapSplit: MapSplit;
    locationBar: LocationBar;
    hawkeyeMap: HawkeyeMap;
    distanceLegend: DistanceLegend;
    zoomController: ZoomController;
    loadingMask: LoadingMask;
    tilesetSplit: TilesetSplit;
    sceneSplit: SceneSplit;
    /**
     *
     * @param id - 容器id
     * @param options - 参数
     * @example
     * ```json
     * //属性参数（可选）
     * {
     *   "contextOptions": {
     *     "webgl": {
     *       "alpha": false, //背景
     *       "depth": true,
     *       "stencil": false,
     *       "antialias": true,
     *       "powerPreference": "high-performance",
     *       "premultipliedAlpha": true,
     *       "preserveDrawingBuffer": false,
     *       "failIfMajorPerformanceCaveat": false
     *     },
     *     "allowTextureFilterAnisotropic": true
     *   },
     *   "sceneMode": 3 //1: 2.5D，2: 2D，3: 3D
     * }
     * ```
     */
    constructor(id: string | HTMLElement, options?: {});
    /**
     * 获取Cesium原生Viewer
     */
    get delegate(): Cesium.Viewer;
    /**
     * 框架自定义容器
     * @readonly
     */
    get dcContainer(): any;
    /**
     * 场景
     * @readonly
     */
    get scene(): Cesium.Scene;
    /**
     * 相机
     * @readonly
     */
    get camera(): Cesium.Camera;
    /**
     * canvas节点
     * @readonly
     */
    get canvas(): HTMLCanvasElement;
    /**
     * viewer数据源
     * @readonly
     */
    get dataSources(): Cesium.DataSourceCollection;
    /**
     * 影像类图层组
     * @readonly
     */
    get imageryLayers(): Cesium.ImageryLayerCollection;
    /**
     * 地形
     * @readonly
     */
    get terrainProvider(): Cesium.TerrainProvider;
    /**
     * 实体集合
     * @readonly
     */
    get entities(): Cesium.EntityCollection;
    /**
     * 预处理集合
     * @readonly
     */
    get postProcessStages(): Cesium.PostProcessStageCollection;
    /**
     * 时钟
     */
    get clock(): Cesium.Clock;
    /**
     * viewer私有事件
     */
    get viewerEvent(): ViewerEvent;
    get mouseEvent(): MouseEvent_2;
    /**
     * 摄像头位置
     */
    get cameraPosition(): Position;
    /**
     * 层级
     */
    get resolution(): number;
    /**
     * 当前视角范围
     */
    get viewBounds(): Cesium.Rectangle;
    /**
     * 层级
     */
    get level(): any;
    /***
     * 添加图层组
     * @param layerGroup - 图层组
     * @private
     */
    _addLayerGroup(layerGroup: LayerGroup): void;
    /**
     *
     * @param layerGroup
     * @private
     */
    private _removeLayerGroup;
    /**
     * 添加图层
     * @param layer - 图层
     * @private
     */
    private _addLayer;
    /**
     * 移除图层
     * @param layer 图层
     * @private
     */
    _removeLayer(layer: Layer): void;
    /**
     * 设置属性
     * @param options 属性
     * @returns {Viewer}
     * @example
     * ```json
     * // 属性参数(可选)
     * {
     *   "shadows": false, // 是否开启阴影
     *   "resolutionScale": 1, // 设置渲染分辨率的缩放比例
     *   "showAtmosphere": true, //是否显示大气层
     *   "showSun": true, //是否显示太阳
     *   "showMoon": true, //是否显示月亮
     *   "enableFxaa": true, //是否开启抗锯齿
     *   "msaaSamples": 1, //msaa抗拒出取样度
     *   "cameraController": {
     *     // 相机控制
     *     "enableRotate": true, // 是否可以旋转
     *     "enableTilt": true, // 是否可以翻转
     *     "enableTranslate": true, // 是否可以平移
     *     "enableZoom": true, // 是否可以缩放
     *     "enableCollisionDetection": true, // 是否支持碰撞检测
     *     "minimumZoomDistance": 1.0, // 最小缩放距离
     *     "maximumZoomDistance": 40489014.0 // 最大缩放距离
     *   },
     *   "globe": {
     *     "show": true, // 是否显示地球
     *     "showGroundAtmosphere": true, // 显示地面大气
     *     "enableLighting": false, //是否开启灯光，开启后地球会根据当前时间启用灯光
     *     "depthTestAgainstTerrain": false, //是否开启深度检测
     *     "tileCacheSize": 100, // 默认瓦片缓存大小
     *     "preloadSiblings": false, //是否应预加载渲染同级图块
     *     "terrainExaggeration": 1, //地形夸张系数
     *     "terrainExaggerationRelativeHeight": 1, //地形相对高度夸张系数
     *     "baseColor": new DC.Color(0, 0, 0.5, 1), //地球默认底色
     *     "filterColor": new DC.Color(0, 0, 0, 0), //瓦片过滤色
     *     "translucency": {
     *       //地表透明
     *       "enabled": false, // 是否开启地表透明
     *       "backFaceAlpha": 1, // 地球背面透明度
     *       "backFaceAlphaByDistance": null, //根据距离设置地球背面透明度: {near:400,nearValue:0.2,far:800,farValue:1}
     *       "frontFaceAlpha": 1, // 地球正面透明度
     *       "frontFaceAlphaByDistance": null //根据距离设置地球正面透明度: {near:400,nearValue:0.2,far:800,farValue:1}
     *     }
     *   },
     *   "skyBox": {
     *     "sources": {}, // 六个面的贴图
     *     "show": true, //是否显示
     *     "offsetAngle": 0 //旋转角度
     *   }
     * }
     * ```
     */
    setOptions(options: any): this;
    /**
     * 设置翻转角度
     * @param min 最小角度
     * @param max 最大角度
     * @returns {Viewer}
     */
    setPitchRange(min?: number, max?: number): this;
    /**
     * @param west
     * @param south
     * @param east
     * @param north
     * @returns {Viewer}
     */
    setBounds(west: any, south: any, east: any, north: any): this;
    /**
     * 改变场景模式，
     * @param sceneMode - 场景模式 2：2D，2.5：2.5D，3：3D
     * @param duration - 间隔时间
     * @returns {Viewer}
     */
    changeSceneMode(sceneMode: any, duration?: number): this;
    /**
     * 改变鼠标使用模式
     * @param mouseMode - 鼠标模式
     * @returns {Viewer}
     */
    changeMouseMode(mouseMode: MouseMode): this;
    /**
     * 添加基础图层
     * @param baseLayers 基础地图图层
     * @param options 属性
     * @returns {Viewer}
     */
    addBaseLayer(baseLayers: Cesium.ImageryProvider | Cesium.TerrainProvider | Array<Cesium.ImageryProvider> | Array<Cesium.TerrainProvider>, options?: any): this;
    /**
     * 修改基础图层
     * @param index 图层索引
     * @returns {Viewer}
     */
    changeBaseLayer(index: any): this;
    /**
     *
     * @param windowPosition
     * @returns {Promise}
     */
    getImageryLayerInfo(windowPosition: any): Promise<Cesium.ImageryLayerFeatureInfo[]>;
    /**
     * 添加地形
     * @param terrain 地形图层
     * @param options 属性
     * @returns {Viewer}
     */
    addTerrain(terrain: any, options?: any): this;
    /**
     * 修改地形
     * @param index 图层索引
     * @returns {Viewer}
     */
    changeTerrain(index: any): this;
    /**
     * 移除地形
     * @returns {Viewer}
     */
    removeTerrain(): this;
    /**
     * 添加图层组
     * @param layerGroup 图层组
     * @returns {Viewer}
     */
    addLayerGroup(layerGroup: LayerGroup): this;
    /**
     * 移除图层组
     * @param layerGroup - 图层组
     * @returns {Viewer}
     */
    removeLayerGroup(layerGroup: LayerGroup): this;
    /**
     * 根据id获取图层组
     * @param id - 图层组id
     * @returns {undefined}
     */
    getLayerGroup(id: string): LayerGroup;
    /**
     * 添加图层
     * @param layer
     * @returns {Viewer}
     */
    addLayer(layer: Layer): this;
    /**
     * 移除图层
     * @param layer 图层
     * @returns {Viewer}
     */
    removeLayer(layer: Layer): this;
    /**
     * 检查是否有某个图层
     * @param layer
     * @returns {boolean}
     */
    hasLayer(layer: Layer): boolean;
    /**
     * 根据id获取图层
     * @param id
     * @returns {*|undefined}
     */
    getLayer(id: string): any;
    /**
     * 获取全部图层
     * @returns {[]}
     */
    getLayers(): any[];
    /**
     * 遍历所有图层
     * @param method 回调函数
     * @param context 上下文
     * @returns {Viewer}
     */
    eachLayer(method: Function, context: any): this;
    /**
     * 根据图层属性获取图层
     * @param attrName 属性名称
     * @param attrVal 属性值
     * @returns 图层数组
     */
    getLayersByAttr(attrName: string, attrVal: any): Layer[];
    /**
     * 飞行到
     * @param target - 目标
     * @param duration -飞到位置的时间（s）
     * @returns {Viewer}
     */
    flyTo(target: any, duration?: number): this;
    /**
     * 缩放到
     * @param target 目标
     * @returns {Viewer}
     */
    zoomTo(target: any): this;
    /**
     * 飞到具体位置
     * @param position 坐标
     * @param completeCallback 回调函数
     * @param duration 间隔时间
     * @returns {Viewer}
     */
    flyToPosition(position: T_Position, completeCallback: any, duration: any): this;
    /**
     * 缩放到具体位置
     * @param position 位置
     * @param completeCallback 回调函数
     * @returns {Viewer}
     */
    zoomToPosition(position: T_Position, completeCallback: any): this;
    /**
     * 飞到指定范围
     * @param bounds 范围
     * @param hpr 方位角
     * @param completeCallback 回调函数
     * @param duration 间隔时间
     * @return {Viewer}
     */
    flyToBounds(bounds: any, { heading, pitch, roll }: {
        heading?: number;
        pitch?: number;
        roll?: number;
    }, completeCallback: any, duration?: any): this;
    /**
     * 缩放到指定范围
     * @param bounds 范围
     * @param hpr 方位角
     * @param completeCallback 回调函数
     * @return {Viewer}
     */
    zoomToBounds(bounds: any, { heading, pitch, roll }: {
        heading?: number;
        pitch?: number;
        roll?: number;
    }, completeCallback: any): this;
    /**
     * 事件订阅
     * @param type 类型
     * @param callback 回调函数
     * @param context 上下文
     * @returns {Viewer}
     */
    on(type: any, callback: any, context: any): this;
    /**
     * 事件订阅一次
     * @param type 类型
     * @param callback 回调函数
     * @param context 上下文
     * @returns {Viewer}
     */
    once(type: any, callback: any, context: any): this;
    /**
     * 事件订阅取消
     * @param type 类型
     * @param callback 回调函数
     * @param context 上下文
     * @returns {Viewer}
     */
    off(type: any, callback: any, context: any): this;
    /**
     * 销毁
     */
    destroy(): this;
    /**
     * 导出场景
     * @param name
     * @returns {Viewer}
     */
    exportScene(name: string): this;
    /**
     * @hidden
     * @param plugin
     * @returns {Viewer}
     */
    use(plugin: any): this;
    /**
     * @hidden
     * @param plugin
     * @returns {Viewer}
     */
    unuse(plugin: any): this;
}

declare class ViewerEvent extends Event_2 {
    constructor();
    /**
     * 注册viewer事件
     * @private
     */
    _registerEvent(): void;
}

export declare class ViewShed3D {
    private viewer;
    private datasource;
    private radar;
    /** 观测位置 */
    private viewPosition;
    private cameraPosition;
    /** 方向角 -180~180 */
    private _direction;
    /** 机方向与地平面的角度 */
    private _pitch;
    /** 可视域水平夹角,默认为 `90` */
    private _horizontalViewAngle;
    /** 可视域垂直夹角,默认为`60` */
    private _verticalViewAngle;
    /** 可视区域颜色,默认为`green` */
    private _visibleAreaColor;
    /** 不可见区域颜色,默认为`red` */
    private _invisibleAreaColor;
    /** 可视距离,单位`米` */
    private _visualRange;
    _defaultColorTexture: any;
    lightCamera: any;
    private shadowMap;
    private postStage;
    frustumQuaternion: any;
    constructor(options: ViewShedOptions);
    get visibleAreaColor(): Cesium.Color;
    set visibleAreaColor(val: Cesium.Color);
    get invisibleAreaColor(): Cesium.Color;
    set invisibleAreaColor(val: Cesium.Color);
    get horizontalViewAngle(): number;
    set horizontalViewAngle(val: number);
    get verticalViewAngle(): number;
    set verticalViewAngle(val: number);
    get direction(): number;
    set direction(val: number);
    get pitch(): number;
    set pitch(val: number);
    get visualRange(): number;
    set visualRange(val: number);
    setCameraView(): void;
    createShadowMap(): void;
    updateViewShed(): void;
    getFrustumQuaternion(cpos: any, viewPosition: any): Cesium.Quaternion;
    clearAll(): void;
    removeProcessStageById(id: string): void;
    findProcessStageById(id: string): Cesium.PostProcessStage | Cesium.PostProcessStageComposite;
    createPostStage(): void;
    update(frameState: any): void;
    getSceneDepthTexture(viewer: any): any;
    removeRadar(): void;
    resetRadar(): void;
    addRadar(): void;
}

export declare class ViewShedFactory {
    _viewer: Viewer;
    _plotUtil: Plot;
    _viewShed: ViewShed3D;
    constructor();
    get viewer(): Viewer;
    get plotUtil(): Plot;
    get viewShed(): ViewShed3D;
    set viewShed(val: ViewShed3D);
    createViewShed(): void;
    clear(): void;
    destroy(): void;
    /**
     *
     * @param viewer
     */
    install(viewer: Viewer): void;
    uninstall(viewer: any): void;
}

declare interface ViewShedOptions {
    cameraPosition: Cesium.Cartesian3;
    /** 视图 */
    viewer: Cesium.Viewer;
    /** 观测位置 */
    viewPosition: Cesium.Cartesian3;
    /** 观测方位角 默认为`0`,范围`0~360` */
    direction: number;
    /** 俯仰角,范围`-90~90`,默认为`0` */
    pitch: number;
    /** 可视域水平夹角,默认为 `90`,范围`0~360` */
    horizontalViewAngle?: number;
    /** 可视域垂直夹角,默认为`60`,范围`0~180` */
    verticalViewAngle?: number;
    /** 可视区域颜色,默认为`green` */
    visibleAreaColor?: Cesium.Color;
    /** 不可见区域颜色,默认为`red` */
    invisibleAreaColor?: Cesium.Color;
    /** 可视距离,单位`米`,默认为`100` */
    visualRange?: number;
}

/**
 * 墙
 * @noInheritDoc
 * @example
 * ```ts
 * let wall = new BC.Wall('-90.0,32.0,1000;-94.0,36.0,1000;')
 * ```
 */
export declare class Wall extends Overlay {
    private _positions;
    /**坐标串 */
    constructor(positions: string | T_Position[]);
    get type(): any;
    set positions(positions: string | T_Position[]);
    get positions(): string | T_Position[];
    _mountedHook(): void;
    /**
     *
     * @param  text
     * @param  textStyle
     */
    setLabel(text: string, textStyle: any): this;
    /**
     * 设置风格
     * @param style
     * @returns {Wall}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "fill": true, //是否用提供的材料填充多边形。
     *   "material": BC.Color.WHITE, //材质
     *   "outline": false, //是否显示边框
     *   "outlineColor": BC.Color.BLACK, //边框颜色
     *   "outlineWidth": 0, //边框宽度
     *   "shadows": 0, //阴影类型，0：禁用、1：启用 、2：投射、3：接受
     *   "distanceDisplayCondition": {
     *     "near": 0, //最近距离
     *     "far": Number.MAX_VALUE //最远距离
     *   }, //根据距离设置可见
     *   "classificationType": 2 //分类 是否影响地形，3D切片或同时影响这两者。0:地形、1:3D切片、2：两者
     * }
     * ```
     */
    setStyle(style: any): this;
    /**
     * Entity 转换为 Overlay
     * @param entity
     * @returns {Wall}
     */
    static fromEntity(entity: Cesium.Entity): Wall | undefined;
}

/**
 * 图片轨迹墙体材质
 * @noInheritDoc
 * @example
 * ```ts
 * let material = new BC.WallImageTrailMaterialProperty({
 *   color: BC.Color.WHITE,
 * })
 * ```
 */
export declare class WallImageTrailMaterialProperty extends MaterialProperty {
    private _image;
    private _imageSubscription;
    private _repeat;
    private _repeatSubscription;
    /**
     * 颜色
     * @defaultValue BC.Color.fromBytes(0, 255, 255, 255)
     */
    color: Cesium.Color;
    /**
     * 速度
     * @defaultValue 1
     */
    speed: number;
    /**
     * 图片地址
     */
    image: string;
    /**
     * 重复规则
     */
    repeat: Object;
    constructor(options?: {
        /**
         * 颜色
         * @defaultValue BC.Color.fromBytes(0, 255, 255, 255)
         */
        color: Cesium.Color;
        /**
         * 速度
         * @defaultValue 1
         */
        speed: number;
        /**
         * 图片地址
         */
        image: string;
        /**
         * 重复规则
         */
        repeat: Cesium.Cartesian2;
    });
    /* Excluded from this release type: getType */
    /* Excluded from this release type: getValue */
    /* Excluded from this release type: equals */
}

/**
 * 流动墙材质
 * @noInheritDoc
 * @example
 * ```ts
 * let material = new BC.WallLineTrailMaterialProperty({
 *   color: BC.Color.WHITE,
 * })
 * ```
 */
export declare class WallLineTrailMaterialProperty extends MaterialProperty {
    private _image;
    private _imageSubscription;
    private _repeat;
    private _repeatSubscription;
    /**
     * 颜色
     * @defaultValue BC.Color.fromBytes(0, 255, 255, 255)
     */
    color: Cesium.Color;
    /**
     * 速度
     * @defaultValue 1
     */
    speed: number;
    /* Excluded from this release type: image */
    /**
     * 重复规则
     */
    repeat: Object;
    constructor(options?: {
        /**
         * 颜色
         * @defaultValue BC.Color.fromBytes(0, 255, 255, 255)
         */
        color: Cesium.Color;
        /**
         * 速度
         * @defaultValue 1
         */
        speed: number;
        /**
         * 重复规则
         */
        repeat: Cesium.Cartesian2;
    });
    /* Excluded from this release type: getType */
    /* Excluded from this release type: getValue */
    /* Excluded from this release type: equals */
}

/**
 * 流动墙材质
 * @noInheritDoc
 * @example
 * ```ts
 * let material = new BC.WallTrailMaterialProperty({
 *   color: BC.Color.WHITE,
 * })
 * ```
 */
export declare class WallTrailMaterialProperty extends MaterialProperty {
    private _image;
    private _imageSubscription;
    /**
     * 颜色
     * @defaultValue BC.Color.fromBytes(0, 255, 255, 255)
     */
    color: Cesium.Color;
    /**
     * 速度
     * @defaultValue 1
     */
    speed: number;
    /* Excluded from this release type: image */
    constructor(options?: {
        /**
         * 颜色
         * @defaultValue BC.Color.fromBytes(0, 255, 255, 255)
         */
        color: Cesium.Color;
        /**
         * 速度
         * @defaultValue 1
         */
        speed: number;
    });
    /* Excluded from this release type: getType */
    /* Excluded from this release type: getValue */
    /* Excluded from this release type: equals */
}

/**
 * 电弧球材质
 * @noInheritDoc
 * @example
 * ```ts
 * let material = new BC.WaterMaterialProperty({
 *   color: BC.Color.WHITE,
 * })
 * ```
 */
export declare class WaterMaterialProperty {
    private _definitionChanged;
    private _baseWaterColor;
    private _baseWaterColorSubscription;
    /**
     * 水体颜色
     */
    baseWaterColor: Cesium.Color;
    private _blendColor;
    private _blendColorSubscription;
    /**
     * 混合颜色
     */
    blendColor: Cesium.Color;
    private _specularMap;
    private _specularMapSubscription;
    /**
     * 镜面图
     */
    specularMap: string;
    private _normalMap;
    private _normalMapSubscription;
    /**
     * 法线图
     */
    normalMap: string;
    /**
     * 波纹数量
     */
    frequency: number;
    /**
     * 动画速度
     */
    animationSpeed: number;
    /**
     * 水波振幅
     */
    amplitude: number;
    /**
     * 镜面反射强度
     */
    specularIntensity: number;
    /**
     *
     * @param options
     */
    constructor(options: {
        /**
         * 水体颜色
         */
        baseWaterColor?: Cesium.Color;
        /**
         * 混合颜色
         */
        blendColor?: Cesium.Color;
        /**
         * 镜面图
         */
        specularMap?: string;
        /**
         * 法线图
         */
        normalMap?: string;
        /**
         * 波纹数量
         */
        frequency?: number;
        /**
         * 动画速度
         */
        animationSpeed?: number;
        /**
         * 水波振幅
         */
        amplitude?: number;
        /**
         * 镜面反射强度
         */
        specularIntensity?: number;
    });
    /* Excluded from this release type: isConstant */
    /* Excluded from this release type: definitionChanged */
    /* Excluded from this release type: getType */
    /* Excluded from this release type: getValue */
    /* Excluded from this release type: equals */
}

/**
 * 水面图元
 * @noInheritDoc
 * @example
 * ```ts
 * let water = new BC.WaterPrimitive('120,20;120,30;122,30')
 * water.setStyle({
 *   baseWaterColor: BC.Color.AQUA.withAlpha(0.3),
 *   normalMap: 'examples/images/icon/waterNormalsSmall.jpg',
 *   frequency: 1000.0,
 *   animationSpeed: 0.01,
 *   amplitude: 10,
 *   specularIntensity: 10,
 * })
 * ```
 */
export declare class WaterPrimitive extends Overlay {
    private _positions;
    private _holes;
    /**
     *
     * @param positions 坐标串
     * @param holes 空心坐标串
     */
    constructor(positions: string | T_Position[], holes?: T_Position[][]);
    get type(): any;
    set positions(positions: string | T_Position[]);
    get positions(): string | T_Position[];
    /**
     *
     * @private
     */
    private _setAppearance;
    _mountedHook(): void;
    /**
     * 设置风格
     * @param style
     * @returns {WaterPrimitive}
     * @example
     * ```json
     * // 样式参数(可选)
     * {
     *   "height": 1, //高度
     *   "extrudedHeight": 0, //拉升高度
     *   "stRotation": 0, //旋转角度
     *   "outline": false, //是否显示边框
     *   "closeTop": true, //顶面是否闭合
     *   "closeBottom": true, //底面是否闭合
     *   "classificationType": 2, //分类 是否影响地形，3D切片或同时影响这两者。0:地形、1:3D切片、2：两者
     *   "baseWaterColor": BC.Color.WHITE, // 水体颜色
     *   "blendColor": BC.Color.WHITE, // 混合颜色
     *   "specularMap": "", // 镜面图
     *   "normalMap": "", // 法线图
     *   "frequency": 1000, //波纹数量
     *   "animationSpeed": 0.03, // 动画速度
     *   "amplitude": 10, //水波振幅
     *   "specularIntensity": 10 //镜面反射强度
     * }
     * ```
     */
    setStyle(style: any): this;
}

/**
 * 天气效果
 */
export declare class Weather {
    private _comps;
    constructor();
    /**
     * 雾天
     */
    get fog(): Fog;
    /**
     * 雨天
     */
    get rain(): Rain;
    /**
     * 雪天
     */
    get snow(): Snow;
    /**
     * 云
     */
    get cloud(): Cloud;
    /* Excluded from this release type: install */
}

export declare const WebMercatorTilingScheme: typeof globalThis.Cesium.WebMercatorTilingScheme;

declare class Widget {
    protected _viewer: Viewer | undefined;
    protected _enable: boolean;
    protected _wrapper: any;
    protected _ready: boolean;
    protected _state: string;
    constructor();
    set enable(enable: boolean);
    get enable(): boolean;
    get state(): string;
    /**
     * mount content
     * @private
     */
    protected _mountContent(): void;
    /**
     * binds event
     * @private
     */
    protected _bindEvent(): void;
    /**
     * Unbinds event
     * @private
     */
    protected _unbindEvent(): void;
    /**
     * When enable modifies the hook executed, the subclass copies it as required
     * @private
     */
    protected _enableHook(): void;
    /**
     * Updating the Widget location requires subclass overrides
     * @param windowCoord
     * @private
     */
    protected _updateWindowCoord(windowCoord: any): void;
    /**
     * Hook for installed
     * @private
     */
    protected _installHook(): void;
    /**
     * Installs to viewer
     * @param viewer
     */
    install(viewer: any): void;
    /**
     * Setting  wrapper
     * @param wrapper
     * @returns {Widget}
     */
    setWrapper(wrapper: any): this;
    /**
     * Setting widget content
     * @param content
     * @returns {Widget}
     */
    setContent(content: string | Element): this;
    /**
     * hide widget
     */
    hide(): void;
    /**
     * Registers type
     * @param type
     */
    static registerType(type: any): void;
    /**
     *
     * @param type
     */
    static getWidgetType(type: any): any;
}

export declare const writeTextToCanvas: typeof globalThis.Cesium.writeTextToCanvas;

/**
 * 缩放控制
 * @noInheritDoc
 * @example
 * ```ts
 * viewer.zoomController.enable = true
 * ```
 */
declare class ZoomController extends Widget {
    private _zoomInEl;
    private _zoomOutEl;
    private _refreshEl;
    /**
     * @hidden
     */
    constructor();
    /**
     * @hidden
     */
    get type(): any;
    /**
     *
     * @param scene
     * @returns {Cartesian3}
     * @private
     */
    private _getCameraFocus;
    /**
     *
     * @param camera
     * @param focus
     * @param scalar
     * @returns {Cartesian3}
     * @private
     */
    private _getCameraPosition;
    /**
     *
     * @returns {boolean}
     * @private
     */
    _zoomIn(): boolean;
    /**
     *
     * @private
     */
    private _refresh;
    /**
     *
     * @returns {boolean}
     * @private
     */
    _zoomOut(): boolean;
    /**
     *
     * @private
     */
    _installHook(): void;
    /**
     *
     * @private
     */
    _mountContent(): void;
}

export { }

}
declare const __AUTHOR__: string;
declare const __VERSION__: string;
declare const __TIME__: string;
declare const __HOME_PAGE__: string;