import { VerifyAssertion, VerifyMeasurements } from './report.js'; export interface ExpectedBounds { xMin?: number; xMax?: number; yMin?: number; yMax?: number; zMin?: number; zMax?: number; } /** Asserted dimensions a part may `export const expected` to gate its own verification. */ export interface ExpectedDims { volume?: number; area?: number; bounds?: ExpectedBounds; /** Allowed percent deviation for each numeric comparison; defaults to 0.5%. */ tolerancePct?: number; } export declare const DEFAULT_TOLERANCE_PCT = 0.5; /** * Absolute slack (mm / mm² / mm³) below which a deviation always passes, independent of * percent tolerance. Kernel coordinates carry sub-nanometer float noise (e.g. a loft base * lands at z = -1e-7, not 0), so a percent comparison against an expected `0` — where any * nonzero deviation is infinite percent — would make a zero-valued bound or measurement * impossible to assert. 1e-6 is far above that noise and far below any real feature size. */ export declare const ABS_EPSILON = 0.000001; /** Percent deviation of `actual` from `expected`; 0 expected matches only 0 actual. */ export declare function pctDelta(actual: number, expected: number): number; /** * Keys in an `expected` block that the CLI does not understand and would silently ignore — a * `{ min: [...], max: [...] }` or `{ x: [...] }` bounds shape, or a misspelled top-level field. * Surfaced as an error (not dropped) so a wrong `expected` shape fails loud instead of passing * vacuously with the intended assertion never run. */ export declare function unknownExpectedKeys(expected: object): string[]; export declare function isExpectedDims(v: unknown): v is ExpectedDims; /** * Compare measured dimensions against a part's `expected` export. Each declared field becomes one * assertion; a missing measurement for a declared expectation is a failing assertion (`actual:null`). */ export declare function evaluateExpected(expected: ExpectedDims, measurements: VerifyMeasurements): VerifyAssertion[];