import { Vector3 } from 'three';
import { Arc } from '../DatabaseServices/Entity/Arc';
import { Circle } from '../DatabaseServices/Entity/Circle';
import { Curve } from '../DatabaseServices/Entity/Curve';
import { Ellipse } from '../DatabaseServices/Entity/Ellipse';
import { Line } from '../DatabaseServices/Entity/Line';
/**
 * 相交延伸选项.
 *
 * @export
 * @enum {number}
 */
export declare enum IntersectOption {
    /**
     * 两者都不延伸
     */
    ExtendNone = 0,
    /**
     * 延伸自身
     */
    ExtendThis = 1,
    /**
     * 延伸参数
     */
    ExtendArg = 2,
    /**
     * 延伸两者
     */
    ExtendBoth = 3
}
export interface IntersectResult {
    pt: Vector3;
    thisParam: number;
    argParam: number;
}
export declare function reverseIntersectOption(intType: IntersectOption): IntersectOption;
export declare function IntersectCircleAndCircle(cu1: Circle | Arc, cu2: Circle | Arc, tolerance?: number): IntersectResult[];
/**
 * 计算圆与圆弧的交点.
 *
 * @export
 * @param {Circle} circle 圆
 * @param {Arc} arc 圆弧
 * @param {IntersectOption} extType 延伸选项
 * @returns 交点集合
 */
export declare function IntersectCircleAndArc(circle: Circle, arc: Arc, extType: IntersectOption, tolerance?: number): IntersectResult[];
/**
 * 计算圆弧与圆弧的交点
 *
 * @export
 * @param {Arc} arc1 圆弧
 * @param {Arc} arc2 圆弧
 * @param {IntersectOption} extType 延伸选项
 * @returns 交点集合
 */
export declare function IntersectArcAndArc(arc1: Arc, arc2: Arc, extType: IntersectOption, tolerance?: number): IntersectResult[];
export declare function IntersectEllipseAndLine(l: Line, el: Ellipse, extType: IntersectOption, tolerance?: number): IntersectResult[];
export declare function IntersectLineAndCircle(line: Line, circle: Circle, extType: IntersectOption, tolerance?: number): IntersectResult[];
export declare function IntersectLineAndArc(line: Line, arc: Arc, extType: IntersectOption, tolerance?: number): IntersectResult[];
export declare function IntersectLAndLFor2D(p1: Vector3, p2: Vector3, p3: Vector3, p4: Vector3): Vector3;
export declare function IntersectLAndLFor2D2(p1: Vector3, p2: Vector3, p3: Vector3, p4: Vector3): Vector3[];
export declare function IntersectLine3AndLine3(p1: Vector3, p2: Vector3, p3: Vector3, p4: Vector3, epsilon?: number): Vector3;
export declare function IntersectLineAndLine(l1: Line, l2: Line, extType: IntersectOption, fuzz?: number): IntersectResult[];
export declare function IntersectPolylineAndCurve(pl: Curve, cu: Curve, extType: IntersectOption, tolerance?: number): IntersectResult[];
export declare function IntersectCurveAndCurve(pl: Curve, cu: Curve, extType: IntersectOption, tolerance?: number): IntersectResult[];
export declare function IntersectLineAndEllipseFor2D(l: Line, el: Ellipse): {
    pt: Vector3;
    thisParam: number;
    argParam: number;
}[];
export declare function IntersectEllipseAndCircleOrArc(el: Ellipse, cir: Circle | Arc, type: IntersectOption): IntersectResult[];
export declare function IntersectEllipse(el1: Ellipse, el2: Ellipse, type: IntersectOption): IntersectResult[];
//# sourceMappingURL=IntersectWith.d.ts.map