import { Point, Rectangle, LineSegment, Polyline } from '../../../math/geometry'; import { RectangleNode } from '../../../math/geometry/RTree/rectangleNode'; import { BinaryRTree } from '../../../math/geometry/RTree/rTree'; import { Path } from './Path'; import { SegWithIndex } from './SegWithIndex'; export declare class StaircaseRemover { Paths: Array; HierarchyOfObstacles: BinaryRTree; segTree: BinaryRTree; crossedOutPaths: Set; constructor(paths: Array, hierarchyOfObstacles: RectangleNode); static RemoveStaircases(paths: Array, hierarchyOfObstacles: RectangleNode): void; Calculate(): void; ProcessPath(path: Path): boolean; ProcessPoints(t: { pts: Point[]; canHaveStaircase: boolean; }): boolean; FindStaircaseStart(t: { pts: Point[]; canHaveStaircase: boolean; }): number; static GetFlippedPoint(pts: Point[], offset: number): Point; Crossing(a: Point, b: Point, segsToIgnore: SegWithIndex[]): boolean; static IsCrossing(ls: LineSegment, rTree: BinaryRTree, segsToIgnore: SegWithIndex[]): boolean; IntersectObstacleHierarchyPPP(a: Point, b: Point, c: Point): boolean; IntersectObstacleHierarchyL(ls: LineSegment): boolean; IsStaircase(pts: Point[], offset: number, segsToIgnore: SegWithIndex[], w: { canHaveStaircaseAtI: boolean; }): boolean; RemoveStaircasePN(pts: Point[], staircaseStart: number): Point[]; RemoveStaircasePNB(pts: Point[], staircaseStart: number, horiz: boolean): Point[]; RemoveSegs(pts: Point[]): void; RemoveSeg(seg: SegWithIndex): void; InsertNewSegs(pts: Point[], staircaseStart: number): void; InitHierarchies(): void; InsertPathSegs(path: Path): void; InsertSegs(pts: Point[]): void; InsSeg(pts: Point[], i: number): void; static Rect(seg: SegWithIndex): Rectangle; }