import { BoundingBox, SnappingRegions, BoxCoordinates, XYCoordinates, Vertex, BetweenParams, XYOrTopLeft } from "./types";
import DockableBox from "./dockableBox";
declare class BoxMath {
    static isPointOnSegment(point: XYCoordinates, segment: BoundingBox): boolean;
    /**
     * @function {function name}
     * @param  {type} req {description}
     * @return {type} {description}
     */
    static getVertices(req: BoxCoordinates): Vertex[];
    /**
     * @function {function name}
     * @param  {type} bounds     {description}
     * @param  {type} bufferSize {description}
     * @return {type} {description}
     */
    static getSnappingRegions(bounds: BoxCoordinates, bufferSize?: number): SnappingRegions;
    /**
     * @function {function name}
     * @param  {type} bounds {description}
     * @return {type} {description}
     */
    static getWindowBoundingBox(bounds: BoxCoordinates): BoundingBox;
    static between(params: BetweenParams): boolean;
    /**
     * @function {function name}
     * @param  {type} window1 {description}
     * @param  {type} window2 {description}
     * @return {type} {description}
     */
    static intersectBoundingBoxes(window1: BoundingBox, window2: BoundingBox): boolean;
    /**
     * @function {function name}
     * @param  {type} num {description}
     * @param  {type} pct {description}
     * @return {type} {description}
     */
    static getPct(num: number, pct: number): number;
    /**
     * @function {function name}
     * @param  {type} num {description}
     * @param  {type} pct {description}
     * @return {type} {description}
     */
    static scaleProportionately(num: number, pct: number): number;
    /**
     * @function {function name}
     * @param  {type} num1 {description}
     * @param  {type} num2 {description}
     * @return {type} {description}
     */
    static getPercentChange(num1: number, num2: number): number;
    /**
     * Gets the area of the overlap between two rectangles.
     * @param {*} rect1
     * @param {*} rect2
     */
    static getOverlap(rect1: BoxCoordinates, rect2: BoxCoordinates): number;
    /**
     * Checks if point is in box (inclusive)
     */
    static isPointInBox(point: XYOrTopLeft, box: {
        top: number;
        left: number;
        width: number;
        height: number;
        right?: number;
        bottom?: number;
    }): boolean;
    static cornersInBox(corners: Vertex[], box: DockableBox): string[];
    /**
     * Going back to our example earlier. Remember, A is the larger box that encompasses B and C. In this case, only two corners are within A. (bottom left, bottom right).
            +-------------------+
            |                   |
            |                   |
            |                   |
            |                   |
            |         B         |
            |                   |
            |                   |
            |                   |
            +-------------------+
            |                   |
            |                   |
            |                   |
            |                   |
            |         C         |
            |                   |
            |                   |
            |                   |
            |                   |
            |                   |
            +-------------------+
        * */
    static clipWithTwoSharedCorners({ clip, cornersInBox, box, }: {
        clip: DockableBox;
        cornersInBox: string[];
        box: DockableBox;
    }): DockableBox;
    /** **
    * In this case, A is the wide horizontal box. B is the tall vertical box. Their bottom left corners align at point X.
    *  In this case, only one corner (bottom left of B) is within the bounds of A.

                    B
            +------------------+
            |                  |
            |                  |
            |                  |
            |                  |
            |                  |
            |                  |
            |                  |
            |                  |
            |                  |
            |                  |
            |                  |
            +---------------------------------------------------------------------+
            |                  |                                                  |
            |                  |                                                  |
            |                  |                                                  |
            |                  |                  CLIP                            |  A
            |                  |                                                  |
            |                  |                                                  |
            +------------------+--------------------------------------------------+
            X
        */
    static clipWithOneSharedCorner({ clip, cornersInBox, rectA, rectB, edge, }: {
        clip: DockableBox;
        cornersInBox: string[];
        rectA: DockableBox;
        rectB: DockableBox;
        edge: string;
    }): DockableBox;
    /**
     * Clip A with B. return where the boxes don't intersect.
     * @param {DockableBox} rectA
     * @param {DockableBox} rectB
     *
     * @memberof BoxMath
     */
    static clipRect(rectA: DockableBox, rectB: DockableBox, edge: string): DockableBox;
}
export default BoxMath;
//# sourceMappingURL=boxMath.d.ts.map