import '../../../globals.js';
/**
 * Represents a half-edge (directed line segment) with rational coordinates.
 *
 * TODO: add a flag to note "removed half edge"?
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 */
import Matrix3 from '../../../dot/js/Matrix3.js';
import Vector2 from '../../../dot/js/Vector2.js';
import { BigRational, BigRationalVector2, ClippableFaceAccumulator, RationalBoundary, RationalFace, WindingMap } from '../imports.js';
export default class RationalHalfEdge {
    readonly edgeId: number;
    readonly p0: BigRationalVector2;
    readonly p1: BigRationalVector2;
    face: RationalFace | null;
    nextEdge: RationalHalfEdge | null;
    previousEdge: RationalHalfEdge | null;
    boundary: RationalBoundary | null;
    reversed: RationalHalfEdge;
    windingMap: WindingMap;
    discriminator: number;
    slope: BigRational;
    p0float: Vector2;
    p1float: Vector2;
    processed: boolean;
    constructor(edgeId: number, p0: BigRationalVector2, p1: BigRationalVector2);
    private leftComparison;
    windingContribution(x: BigRational, y: BigRational): number;
    static compareBigInt(a: bigint, b: bigint): number;
    static quickCompareBigRational(a: BigRational, b: BigRational): number;
    static quickCompareBigRationalVector2(a: BigRationalVector2, b: BigRationalVector2): number;
    addWindingFrom(other: RationalHalfEdge): void;
    compare(other: RationalHalfEdge): number;
    addTransformedToAccumulator(accumulator: ClippableFaceAccumulator, fromIntegerMatrix: Matrix3): void;
    static filterAndConnectHalfEdges(rationalHalfEdges: RationalHalfEdge[]): RationalHalfEdge[];
}
//# sourceMappingURL=RationalHalfEdge.d.ts.map