import { PointModel } from './../primitives/point-model';
import { Corners } from '../core/elements/drawing-element';
import { DrawingElement } from '../core/elements/drawing-element';
import { Container } from './../core/containers/container';
import { TextStyleModel } from './../core/appearance-model';
import { IElement } from '../objects/interface/IElement';
/**
 * @param {PointModel} reference - reference
 * @param {PointModel} start - start
 * @param {PointModel} end - end
 * @private
 * @returns {PointModel} - PointModel
 */
export declare function findNearestPoint(reference: PointModel, start: PointModel, end: PointModel): PointModel;
/**
 * @param {IElement} obj - obj
 * @param {PointModel} position - position
 * @param {number} padding - padding
 * @private
 * @returns {DrawingElement} - DrawingElement
 */
export declare function findElementUnderMouse(obj: IElement, position: PointModel, padding?: number): DrawingElement;
/**
 * @param {Container} container - container
 * @param {PointModel} position - position
 * @param {number} padding - padding
 * @private
 * @returns {number} - number
 */
export declare function findTargetElement(container: Container, position: PointModel, padding?: number): DrawingElement;
/**
 * @param {Segment} lineUtil1 - lineUtil1
 * @param {Segment} lineUtil2 - lineUtil2
 * @private
 * @returns {Intersection} - Intersection
 */
export declare function intersect3(lineUtil1: Segment, lineUtil2: Segment): Intersection;
/**
 * @param {PointModel} start1 - start1
 * @param {PointModel} end1 - end1
 * @param {PointModel} start2 - start2
 * @param {PointModel} end2 - end2
 * @private
 * @returns {PointModel} - PointModel
 */
export declare function intersect2(start1: PointModel, end1: PointModel, start2: PointModel, end2: PointModel): PointModel;
/**
 * @param {number} x1 - x1
 * @param {number} y1 - y1
 * @param {number} x2 - x2
 * @param {number} y2 - y2
 * @private
 * @returns {Segment} - Segment
 */
export declare function getLineSegment(x1: number, y1: number, x2: number, y2: number): Segment;
/**
 * @param {DrawingElement} element - element
 * @param {Corners} corners - corners
 * @param {number} padding - padding
 * @private
 * @returns {PointModel[]} - PointModel[]
 */
export declare function getPoints(element: DrawingElement, corners: Corners, padding?: number): PointModel[];
/**
 * @param {PointModel} src - src
 * @param {PointModel} tar - tar
 * @private
 * @returns {string} - string
 */
export declare function getBezierDirection(src: PointModel, tar: PointModel): string;
/**
 * @param {TextStyleModel} changedObject - changedObject
 * @param {DrawingElement} target - target
 * @private
 * @returns {void} - void
 */
export declare function updateStyle(changedObject: TextStyleModel, target: DrawingElement): void;
/**
 * @param {DrawingElement} element - element
 * @param {number} sw - sw
 * @param {number} sh - sh
 * @param {DrawingElement} refObject - refObject
 * @private
 * @returns {void} - void
 */
export declare function scaleElement(element: DrawingElement, sw: number, sh: number, refObject: DrawingElement): void;
/**
 * @param {PointModel} mousePosition - mousePosition
 * @param {PointModel} corner - corner
 * @param {number} padding - padding
 * @private
 * @returns {boolean} - boolean
 */
export declare function contains(mousePosition: PointModel, corner: PointModel, padding: number): boolean;
/**
 * @param {number} x - x
 * @param {number} y - y
 * @param {number} w - w
 * @param {number} h - h
 * @param {number} angle - angle
 * @param {number} offsetX - offsetX
 * @param {number} offsetY - offsetY
 * @param {PointModel} cornerPoint - cornerPoint
 * @private
 * @returns {PointModel} - PointModel
 */
export declare function getPoint(x: number, y: number, w: number, h: number, angle: number, offsetX: number, offsetY: number, cornerPoint: PointModel): PointModel;
/**
 * @hidden
 * Segment interface
 */
export interface Segment {
    x1: number;
    y1: number;
    x2: number;
    y2: number;
}
/**
 * @hidden
 * Intersection interface
 */
export interface Intersection {
    enabled: boolean;
    intersectPt: PointModel;
}
/**
 * @hidden
 * Info interface
 */
export interface Info {
    ctrlKey?: boolean;
    shiftKey?: boolean;
}
