import { EventBus, Position, Icon, OpenInfoWindow, CloseInfoWindow, Label, LabelPlacement } from '.';
import { ProxyMap, Path, ILineStyle, ILabelStyle } from '../types';
/** Polyline样式 */
export interface IPolylineStyle {
    /** 轮廓线 */
    line?: ILineStyle;
    /** 文本标签 */
    label: ILabelStyle;
}
/** Polyline配置 */
export interface IPolyline<T = any> {
    /** ID */
    id: number;
    /** 名称 */
    name?: string;
    /** 路径 */
    path: Path;
    /** 样式 */
    style?: IPolylineStyle;
    /** 文本标签 */
    label?: {
        /** 文本内容 */
        text: string;
        /** 最小展示层级，地图小于此层级时默认隐藏label */
        minShowZoom?: number;
        /** 是否显示 */
        visible?: boolean;
    };
    /** 业务数据 */
    data?: T;
    /** 是否可见 */
    visible?: boolean;
}
export interface IPolylineOptions {
    labelBasePlacement?: LabelPlacement;
}
export type PolylineEventName = 'click' | 'dblclick' | 'rightclick';
/** 基础Polyline类 */
export declare abstract class BasePolyline<T = any> extends EventBus<PolylineEventName> {
    protected _top: ProxyMap;
    /** ID */
    protected _id: number;
    /** 名称 */
    protected _name?: string;
    /** 路径 */
    protected _path: Position[];
    /** 样式 */
    protected _style: IPolylineStyle;
    /** 图标 */
    protected _icon?: Icon;
    /** 文本标签 */
    protected _label?: Label;
    /** 业务数据 */
    protected _data?: T;
    /** 是否可见 */
    protected _visible: boolean;
    /** label基础方位 */
    protected _labelBasePlacement: LabelPlacement;
    constructor(_top: ProxyMap, polyline: IPolyline<T>, options: IPolylineOptions);
    private genLabel;
    /** ID */
    get id(): number;
    /** 名称 */
    get name(): string | undefined;
    /** 位置 */
    get path(): Position[];
    /** 图标 */
    get icon(): Icon | undefined;
    /** 业务数据 */
    get data(): T | undefined;
    /**
     * 设置名称
     * @param name 名称
     */
    setName(name: string): void;
    /**
     * 设置路径
     * @param path 路径
     */
    setPath(path: Path): void;
    /**
     * 设置样式
     * @param style 样式
     */
    setStyle(style: IPolylineStyle): void;
    /**
     * 设置业务数据
     * @param data 业务数据
     */
    setData(data: T): void;
    /**
     * 显示
     */
    show(): void;
    /**
     * 隐藏
     */
    hidden(): void;
    /**
     * 显示label
     */
    showLabel(): void;
    /**
     * 隐藏label
     */
    hiddenLabel(): void;
    /**
     * 获取折线的总长度(米)
     */
    getLength(): number;
    /**
     * 判断坐标是否在折线内
     * @param point 点位坐标
     */
    contains(point: Position): boolean;
    /**
     * 获取当前折线的矩形范围对象
     */
    getBounds(): import('./Bounds').IBounds;
    /**
     * 查找距离质心最近的点
     */
    findClosestPointToCentroid(points: Position[]): Position | null;
}
interface PolylineInstance {
    [key: string]: any;
    remove(): void;
}
/** 抽象Polyline类 */
export declare abstract class AbstractPolyline<T = any> extends BasePolyline<T> {
    /**
     * 获取所有资源实例
     */
    abstract getInstances(): PolylineInstance[];
    /**
     * 删除线段
     */
    abstract remove(): void;
    /**
     * 地图中心点平移至线段
     */
    abstract panTo?(): void;
    /**
     * 打开信息窗口
     */
    abstract openInfoWindow?: OpenInfoWindow;
    /**
     * 关闭信息窗口
     */
    abstract closeInfoWindow?: CloseInfoWindow;
}
export {};
