import { BaseObject } from "../core/BaseObject";
import { BoundingBoxType } from "../core/DragonBones";
/**
 * - The base class of bounding box data.
 * @see dragonBones.RectangleData
 * @see dragonBones.EllipseData
 * @see dragonBones.PolygonData
 * @version DragonBones 5.0
 * @language en_US
 */
export declare abstract class BoundingBoxData extends BaseObject {
    /**
     * - The bounding box type.
     * @version DragonBones 5.0
     * @language en_US
     */
    type: BoundingBoxType;
    /**
     * @private
     */
    color: number;
    /**
     * @private
     */
    width: number;
    /**
     * @private
     */
    height: number;
    protected _onClear(): void;
    /**
     * - Check whether the bounding box contains a specific point. (Local coordinate system)
     * @version DragonBones 5.0
     * @language en_US
     */
    abstract containsPoint(pX: number, pY: number): boolean;
    /**
     * - Check whether the bounding box intersects a specific segment. (Local coordinate system)
     * @version DragonBones 5.0
     * @language en_US
     */
    abstract intersectsSegment(xA: number, yA: number, xB: number, yB: number, intersectionPointA: {
        x: number;
        y: number;
    } | null, intersectionPointB: {
        x: number;
        y: number;
    } | null, normalRadians: {
        x: number;
        y: number;
    } | null): number;
}
/**
 * - The rectangle bounding box data.
 * @version DragonBones 5.1
 * @language en_US
 */
export declare class RectangleBoundingBoxData extends BoundingBoxData {
    static toString(): string;
    /**
     * - Compute the bit code for a point (x, y) using the clip rectangle
     */
    private static _computeOutCode;
    /**
     * @private
     */
    static rectangleIntersectsSegment(xA: number, yA: number, xB: number, yB: number, xMin: number, yMin: number, xMax: number, yMax: number, intersectionPointA?: {
        x: number;
        y: number;
    } | null, intersectionPointB?: {
        x: number;
        y: number;
    } | null, normalRadians?: {
        x: number;
        y: number;
    } | null): number;
    protected _onClear(): void;
    /**
     * @inheritDoc
     */
    containsPoint(pX: number, pY: number): boolean;
    /**
     * @inheritDoc
     */
    intersectsSegment(xA: number, yA: number, xB: number, yB: number, intersectionPointA?: {
        x: number;
        y: number;
    } | null, intersectionPointB?: {
        x: number;
        y: number;
    } | null, normalRadians?: {
        x: number;
        y: number;
    } | null): number;
}
/**
 * - The ellipse bounding box data.
 * @version DragonBones 5.1
 * @language en_US
 */
export declare class EllipseBoundingBoxData extends BoundingBoxData {
    static toString(): string;
    /**
     * @private
     */
    static ellipseIntersectsSegment(xA: number, yA: number, xB: number, yB: number, xC: number, yC: number, widthH: number, heightH: number, intersectionPointA?: {
        x: number;
        y: number;
    } | null, intersectionPointB?: {
        x: number;
        y: number;
    } | null, normalRadians?: {
        x: number;
        y: number;
    } | null): number;
    protected _onClear(): void;
    /**
     * @inheritDoc
     */
    containsPoint(pX: number, pY: number): boolean;
    /**
     * @inheritDoc
     */
    intersectsSegment(xA: number, yA: number, xB: number, yB: number, intersectionPointA?: {
        x: number;
        y: number;
    } | null, intersectionPointB?: {
        x: number;
        y: number;
    } | null, normalRadians?: {
        x: number;
        y: number;
    } | null): number;
}
/**
 * - The polygon bounding box data.
 * @version DragonBones 5.1
 * @language en_US
 */
export declare class PolygonBoundingBoxData extends BoundingBoxData {
    static toString(): string;
    /**
     * @private
     */
    static polygonIntersectsSegment(xA: number, yA: number, xB: number, yB: number, vertices: Array<number>, intersectionPointA?: {
        x: number;
        y: number;
    } | null, intersectionPointB?: {
        x: number;
        y: number;
    } | null, normalRadians?: {
        x: number;
        y: number;
    } | null): number;
    /**
     * @private
     */
    x: number;
    /**
     * @private
     */
    y: number;
    /**
     * - The polygon vertices.
     * @version DragonBones 5.1
     * @language en_US
     */
    readonly vertices: Array<number>;
    protected _onClear(): void;
    /**
     * @inheritDoc
     */
    containsPoint(pX: number, pY: number): boolean;
    /**
     * @inheritDoc
     */
    intersectsSegment(xA: number, yA: number, xB: number, yB: number, intersectionPointA?: {
        x: number;
        y: number;
    } | null, intersectionPointB?: {
        x: number;
        y: number;
    } | null, normalRadians?: {
        x: number;
        y: number;
    } | null): number;
}
