import { BaseAnnotator } from "./BaseAnnotator";
import InternalConfig from "../utils/InternalConfig";
import { AnnotatorContainer } from "../AnnotatorContainer";
import { StrokeType } from "../model/Styles";
import DrawStyle from "../model/Styles";
export declare class LineAnnotator extends BaseAnnotator {
    static readonly xtype: string;
    private backLineSVG;
    private resizeElement1;
    private resizeElement2;
    /**
     * Current dragging resize element.
     */
    private currentResizeElement;
    protected x1: number;
    protected y1: number;
    protected x2: number;
    protected y2: number;
    private lineStartX;
    private lineStartY;
    private screenX;
    private screenY;
    protected arrowEndHead: SVGElement;
    protected arrowStartHead: SVGElement;
    constructor(config: InternalConfig, parent: AnnotatorContainer);
    protected createLine(config: InternalConfig): void;
    private addResizeEvents;
    protected onResizeTouchStart: (evt: TouchEvent) => void;
    protected onResizeMouseDown: (evt: MouseEvent) => void;
    clean(): void;
    private onResizeDown;
    private onResizeMouseUp;
    moveBy(dx: number, dy: number, evt: MouseEvent): void;
    protected onMouseUp: (evt: MouseEvent) => void;
    processMouseUp: () => void;
    private arrangeResizeElements;
    private arrangeElement;
    setDrawStyle(drawStyle: DrawStyle): void;
    setOpacity(opacity: number): void;
    setDrawColor(color: string): void;
    setSelected(selected: boolean): void;
    containsPoint(px: number, py: number): boolean;
    intersects(x: number, y: number, w: number, h: number): boolean;
    static intersectsRect(x1: number, y1: number, x2: number, y2: number, x: number, y: number, w: number, h: number): boolean;
    private static linesIntersect;
    private static area2;
    private static between;
    setStrokeType(strokeType: StrokeType): void;
    setStrokeWidth(width: number): void;
    toXML(): Element;
    fromXML(element: Element): void;
    private setCoordinates;
    toJSON(): Object;
    fromJSON(obj: any): void;
    getType(): string;
}
