import type { NobjcObject } from "objc-js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSCopying } from "../Foundation/NSCopying.js";
import type { _NSIndexPath } from "../Foundation/NSIndexPath.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _VNRequestRevisionProviding } from "./VNRequestRevisionProviding.js";
export declare class _VNContour extends _NSObject {
    static alloc(): _VNContour;
    static new(): _VNContour;
    init(): _VNContour;
    /**
     * @brief Returns a VNContour object that is a child of this VNContour at the specified index. @param childContourIndex The index into the childContours array. @param error The error returned if the child contour cannot be provided. @return The VNContour object at the specified index path, or nil of a failure occurs.
     */
    childContourAtIndex$error$(childContourIndex: number, error: NobjcObject | null): _VNContour | null;
    /**
     * @brief Simplifies the contour's collection of points into a polygon using the Ramer Douglas Peucker Algorithm. @discussion See <https://en.wikipedia.org/wiki/Ramer–Douglas–Peucker_algorithm> @param epsilon Points that have a perpendicular distance to the line segment they are on which are greater than epsilon are kept, others are eliminated. @param error The error returned if a simplified contour cannot be created. @return A new VNContour object with a simplified polygon consisting of a subset of the points that defined the original VNContour.
     */
    polygonApproximationWithEpsilon$error$(epsilon: number, error: NobjcObject | null): _VNContour | null;
    /**
     * @brief The path to the target VNContour as it is stored in the owning VNContoursObservation's hierarchy of contours.
     */
    indexPath(): _NSIndexPath;
    /**
     * @brief The total number of child contours in the target contour. @discussion The use of this property is preferred over childContours.count due to the cost of building the child objects.
     */
    childContourCount(): number;
    /**
     * @brief The array of the contours enclosed by the target contour. @discussion This property may come with the cost of instantiating new VNContour objects; therefore, clients are strongly encouraged to hold the results in a local variable instead of repeatedly invoking it.
     */
    childContours(): _NSArray;
    /** @brief The number of points that describe the contour. */
    pointCount(): number;
    /**
     * @brief The array of points in normalized coordinates that describe the contour. @discussion Provides the address of a buffer containing the array of (x,y) points stored as a simd_float2 value. This buffer is owned by the target object and is guaranteed to exist as long as this VNContour instance exists.
     */
    normalizedPoints(): NobjcObject;
    /**
     * @brief The contour represented as a CGPath in normalized coordinates. @details The path is owned by this object and therefore will be alive as long as the the observation is alive.
     */
    normalizedPath(): NobjcObject;
    /**
     * @brief The aspect ratio of the contour from the original image aspect ratio expressed as width/height
     */
    aspectRatio(): number;
}
export interface _VNContour extends _NSCopying, _VNRequestRevisionProviding {
}
