import Graphic from '@arcgis/core/Graphic';
import GraphicsLayer from '@arcgis/core/layers/GraphicsLayer';
import MapView from '@arcgis/core/views/MapView';
import SceneView from '@arcgis/core/views/SceneView';
import Sketch from '@arcgis/core/widgets/Sketch';
import SketchViewModel from '@arcgis/core/widgets/Sketch/SketchViewModel';
interface sketchViewOptions {
    creationMode?: 'single' | 'continuous' | 'update' | undefined;
    /**
     * 最大允许绘制的图形数量
     */
    maxAllowedGraphics?: number;
    /**
     * 图形图层配置
     */
    GraphicsLayer?: {};
    /**
     * 绘制工具显示的元素
     */
    sketchVisibleElements?: {};
    /**
     * 绘制工具显示的位置
     */
    sketchPosition?: string;
    /**
     * 绘制工具默认是否显示
     *
     * @type {boolean}
     * @memberof sketchViewOptions
     */
    defaultSketchVisible?: boolean;
    sketchViewModelItemSymbol?: {
        polylineSymbol?: any;
        polygonSymbol?: any;
        pointSymbol?: any;
    };
}
interface ITPoint {
    x: number;
    y: number;
}
declare type LinearUnits = 'meters' | 'feet' | 'kilometers' | 'miles' | 'nautical-miles' | 'yards' | number;
export default class SketchView {
    private viewer;
    graphicsLayer: GraphicsLayer;
    TextGraphicsLayer: GraphicsLayer;
    sketchViewModel: SketchViewModel;
    sketch: Sketch;
    options: sketchViewOptions;
    constructor(view: MapView | SceneView, options?: sketchViewOptions);
    updateSketch(ring: number[][]): void;
    cancelSketch(): void;
    init(): void;
    /**
     * 初始化绘图
     *
     * @param {*} data
     * @param {string} [type='crossArea']
     * @param {boolean} [reverse=false] 是否反转
     * @returns
     * @memberof SketchView
     */
    initPoint(data: any, type?: string, reverse?: boolean): void;
    /**
     * 初始化进口道融合区
     *
     * @param {any[]} data
     * @memberof SketchView
     */
    initEntranceFusionZone(data: any[]): void;
    initCrossArea(data: any): Graphic;
    /**
     * 初始进出口道计算区域
     *
     * @param {*} data
     * @param {boolean} [reverse=false] 是否反转
     * @returns
     * @memberof SketchView
     */
    initSectionArea(data: any, reverse?: boolean): any;
    createPolylineGraphic(paths: any, lineSymbol: any, attributes: any): Graphic;
    createPolygonGraphic(rings: any, lineSymbol: any, attributes: any): Graphic;
    on(callback?: (type: string, points: any, event?: any) => void): void;
    /**
     * 获取当前绘制的计算区域
     * @returns
     */
    graphicPoint(): any[];
    /**
     * 获取进口道区域
     *
     * @memberof SketchView
     */
    getEntranceRoad(): any;
    /**
     * 获进口道融合区
     *
     * @param {armData} armData 进口道编号区域
     * @param {number[]} armNoList 进口道编号列表
     * @returns
     * @memberof SketchView
     */
    getEntranceFusionZone(armNoList: number[]): {
        graphics: {
            [key: number]: {
                point: any;
                type: string;
                attributes: any;
            };
        };
        rawData: {
            point: any;
            type: string;
            attributes: any;
        }[];
    };
    /**
     * 获取进口道所在的进口道编号
     *
     * @param {armData} armData 进口道编号区域
     * @param {*} graphicPolygon 绘制的区域
     * @returns
     * @memberof SketchView
     */
    private getIntersectionArea;
    private filterData;
    /**
     *
     *
     * @private
     * @param {*} geometry
     * @param {boolean} [isFilterData=true] 是否过滤首尾相同点数据
     * @returns
     * @memberof SketchView
     */
    private getGraphicPoint;
    close(): void;
    show(): void;
    removeAll(): void;
    /**
     *  获取两点的角度
     *
     * @param {ITPoint} startPoint
     * @param {ITPoint} endPoint
     * @returns
     * @memberof SketchView
     */
    getAngle(startPoint: ITPoint, endPoint: ITPoint): number;
    /**
     *  获取线平移后的坐标
     *
     * @param {Polyline} lineGeometry 线的几何图形
     * @param {number} distance 平移的距离，默认米
     * @param {LinearUnits} [offsetUnit='meters']
     * @returns
     * @memberof SketchView
     */
    getShiftLine(lineGeometry: __esri.Geometry, distance: number, offsetUnit?: LinearUnits): __esri.Geometry | __esri.Geometry[];
    /**
     * 设置线的平移
     *
     * @param {number} distance 平移的距离，默认米
     * @param {LinearUnits} [offsetUnit='meters'] 平移的单位
     * @param {*} symbol 线的样式
     * @memberof SketchView
     */
    setShiftLine(distance: number, offsetUnit?: LinearUnits, symbol?: any): void;
    /**
     * 移除平移线
     *
     * @memberof SketchView
     */
    removeShiftLine(): void;
    /**
     * 移除绘制的线
     *
     * @memberof SketchView
     */
    removeDraw(): void;
    addGraphic(geometry: any, symbol?: any, attributes?: any): void;
    /**
     * 获取方向
     *
     * @param {ITPoint} startPoint 起点
     * @param {ITPoint} endPoint 终点
     * @returns
     * @memberof SketchView
     */
    getDirection(startPoint: ITPoint, endPoint: ITPoint): 0 | 1 | 2 | 3;
    findLayerById(id: string): __esri.Layer;
    /**
     *  根据id查找平移线graphic
     *
     * @param {string} id
     * @returns
     * @memberof SketchView
     */
    findShiftLineGraphicsById(id: string): Graphic;
    /**
     *  删除指定的图形
     * @param graphic 删除指定的图形
     */
    remove(graphic: any): void;
    /**
     *  设置最大允许绘制的图形数量
     * @param num  数量
     */
    setMaxAllowedGraphics(num: number): void;
    destroy(): void;
}
export {};
