import { Point } from '../Point.js';
import { ILineSketchOptions, IVisualizationRectilinearLineShape } from '../VisualizationTypes.js';
import { GeoDirection, IWorkspaceEdge } from '../types.js';
export declare const startWest: unique symbol;
export declare const startEast: unique symbol;
export declare const startSouth: unique symbol;
export declare const startNorth: unique symbol;
export declare const sketchEastEast: unique symbol;
export declare const sketchEastWest: unique symbol;
export declare const sketchEastSouth: unique symbol;
export declare const sketchEastNorth: unique symbol;
export declare const sketchNorthWest: unique symbol;
export declare const sketchNorthEast: unique symbol;
export declare const sketchNorthSouth: unique symbol;
export declare const sketchNorthNorth: unique symbol;
export declare const sketchWestSouth: unique symbol;
export declare const sketchWestWest: unique symbol;
export declare const sketchWestEast: unique symbol;
export declare const sketchWestNorth: unique symbol;
export declare const sketchSouthNorth: unique symbol;
export declare const sketchSouthWest: unique symbol;
export declare const sketchSouthSouth: unique symbol;
export declare const sketchSouthEast: unique symbol;
export declare const ElbowThreshold = 24;
/**
 * A class that draws a rectilinear line
 */
export declare class RectilinearLine {
    ep: Point;
    sp: Point;
    source: DOMRect;
    target: DOMRect;
    others?: IWorkspaceEdge[];
    /**
     * The default padding to use when computing distance between the line and an object.
     */
    overlapPadding: number;
    /**
     * The list of all points (start + end + control points)
     */
    coordinates: Point[];
    /**
     * The list of all control points.
     */
    controlPoints: Point[];
    transformOrigin: string;
    /**
     * The delta between Y coordinates
     */
    dx: number;
    /**
     * The delta between Y coordinates
     */
    dy: number;
    /**
     * Half distance between start.x and end.x
     */
    halfX: number;
    /**
     * Half distance between start.y and end.y
     */
    halfY: number;
    constructor(config: ILineSketchOptions);
    /**
     * Sketches a regular line.
     * @returns Computed model for the association.
     */
    sketch(): IVisualizationRectilinearLineShape | null;
    /**
     * Adds a control point to the list of points.
     */
    addCP(x?: number, y?: number): Point;
    /**
     * Computes the line that starts on the west side of the source object
     * and end in the `end`
     * @param end The direction where the line ends.
     */
    [startWest](end: GeoDirection): void;
    [sketchWestSouth](): void;
    [sketchWestWest](): void;
    [sketchWestEast](): void;
    [sketchWestNorth](): void;
    /**
     * Computes the line that starts on the west side of the source object
     * and end in the `end`
     * @param end The direction where the line ends.
     */
    [startSouth](end: GeoDirection): void;
    [sketchSouthNorth](): void;
    [sketchSouthWest](): void;
    [sketchSouthSouth](): void;
    [sketchSouthEast](): void;
    /**
     * Computes the line that starts on the west side of the source object
     * and end in the `end`
     * @param end The direction where the line ends.
     */
    [startEast](end: GeoDirection): void;
    [sketchEastEast](): void;
    [sketchEastWest](): void;
    [sketchEastSouth](): void;
    [sketchEastNorth](): void;
    /**
     * Computes the line that starts on the west side of the source object
     * and end in the `end`
     * @param end The direction where the line ends.
     */
    [startNorth](end: GeoDirection): void;
    [sketchNorthWest](): void;
    [sketchNorthEast](): void;
    [sketchNorthSouth](): void;
    [sketchNorthNorth](): void;
}
//# sourceMappingURL=RectilinearLine.d.ts.map