import type { Curve } from 'flo-boolean'; /** @internal */ interface Debug { /** Generated by debug object for later inspection */ elems: Elems; timing: Timing; /** * These functions are meant to be used in the console, e.g. in the * console try typing d.fs.twoProng.traceConvergence(0); */ fs: {}; directives: Directives; } /** * Elements generated during `findMats` for later inspection (only available * if debug has been enabled via `enableDebugForMat(true)`). * * The arrays are reset at the start of each `findMats` call and accumulate * over all MATs found in that call, one entry per boundary bezier curve in the * order the curves are encountered. */ interface Elems { /** The loose (axis-aligned) bounding box of each boundary bezier curve */ readonly looseBoundingBoxes: number[][][]; /** The tight (rotated) bounding box of each boundary bezier curve */ readonly tightBoundingBoxes: number[][][]; /** The bounding hull of each boundary bezier curve */ readonly boundingHulls: number[][][]; /** The curves whose end point forms a quite sharp corner with the next curve */ readonly sharpCorners: Curve[]; /** The curves whose end point forms a quite dull corner with the next curve */ readonly dullCorners: Curve[]; } /** @internal */ interface Timing { holeClosers: number; oneAnd2Prongs: number; threeProngs: number; sats: number; simplifyMat: number; } /** @internal */ interface Directives { stopAfterHoleClosers: boolean; stopAfterHoleClosersNum: number; stopAfterTwoProngs: boolean; stopAfterTwoProngsNum: number; stopAfterThreeProngs: boolean; stopAfterThreeProngsNum: number; } /** Returns a fresh (empty) set of debug `Elems`. */ declare function createEmptyElems(): Elems; declare function enableDebugForMat(debugOn: boolean): void; export type { Debug, Elems, Timing, Directives }; export { enableDebugForMat, createEmptyElems };