import type { Point } from '../utils/geometry/points.js';
export interface FeretDiameter {
    /**
     * Start and end point of the Feret diameter.
     */
    points: Point[];
    /**
     * Length of the diameter.
     */
    length: number;
    /**
     * Angle between the diameter and a horizontal line in degrees.
     */
    angle: number;
    /**
     * Calliper lines that pass by endpoints of Feret diameters.
     */
    calliperLines: [[Point, Point], [Point, Point]];
}
export interface Feret {
    /**
     * Smaller Feret diameter.
     */
    minDiameter: FeretDiameter;
    /**
     * Bigger Feret diameter.
     */
    maxDiameter: FeretDiameter;
    /**
     * Ratio between the smaller and the bigger diameter.
     * Expresses how elongated the shape is. This is a value between 0 and 1.
     */
    aspectRatio: number;
}
/**
 * Minimum bounding rectangle of a mask.
 */
export interface Mbr {
    /**
     * Vertices of the MBR in clockwise order.
     */
    points: Point[];
    /**
     * Perimeter of the MBR.
     */
    perimeter: number;
    /**
     * Surface of the MBR.
     */
    surface: number;
    /**
     * Width of the rectangle.
     */
    width: number;
    /**
     * Height of the rectangle.
     */
    height: number;
    /**
     * Angle between the rectangle and a horizontal line in radians.
     */
    angle: number;
    /**
     * Ratio between width and height.
     */
    aspectRatio: number;
}
export interface GetBorderPointsOptions {
    /**
     * Whether to include borders around holes inside the mask.
     * When `false`, the mask is solid-filled before processing, so only the outer contour is returned.
     * When `true`, pixels bordering interior holes are returned as well.
     * @default `false`
     */
    innerBorders?: boolean;
    /**
     * Whether to use 8-connectivity instead of 4-connectivity when detecting border pixels.
     * When `false`, a pixel is considered a border only if at least one of its 4 orthogonal
     * neighbors (up, down, left, right) is unset.
     * When `true`, diagonal neighbors are also considered, so a pixel touching an unset pixel
     * only by a corner is also returned as a border point.
     * @default `false`
     */
    allowCorners?: boolean;
}
/**
 * Convex Hull polygon of a mask.
 */
export interface ConvexHull {
    /**
     * Vertices of the convex Hull in clockwise order.
     */
    points: Point[];
    /**
     * Perimeter of the convex Hull.
     */
    perimeter: number;
    /**
     * Surface of the convex Hull.
     */
    surface: number;
}
//# sourceMappingURL=maskAnalysis.types.d.ts.map