import type { FieldEvaluation4, RepresentationHitN } from '@holotope/core'; import type { Vector3 } from 'three'; import type { ProjectedEdges3D } from './projected-edges.js'; import type { ProjectedSurface3D } from './projected-surface.js'; import type { SampledSlicedField3D } from './sampled-sliced-field.js'; import type { SectionChart3D } from './section-chart.js'; import type { SlicedComplex3D } from './sliced-complex.js'; /** * Minimal Three.js intersection surface consumed by provenance adapters. * * The optional members admit `undefined` explicitly so a Three `Intersection` * is structurally assignable under `exactOptionalPropertyTypes`. Three declares * `faceIndex?: number`, this adapter distinguishes an absent index from a null * one, and without the explicit `| undefined` the two are not compatible. */ export interface RepresentationIntersection3D { readonly point: Vector3; readonly faceIndex?: number | null | undefined; readonly index?: number | undefined; } /** Map a picked projected line segment to its exact source edge vertices. */ export declare function representationHitFromProjectedEdge(product: ProjectedEdges3D, intersection: RepresentationIntersection3D): RepresentationHitN; /** Map a picked projected triangle to its exact source face and vertices. */ export declare function representationHitFromProjectedSurface(product: ProjectedSurface3D, intersection: RepresentationIntersection3D): RepresentationHitN; /** * Map a picked section triangle to its source tetrahedron. An unprojected * slice is an affine coordinate chart and therefore also yields an exact R4 * point in the **posed ambient source frame used for the latest update**. It * is not already transformed back into the complex's unposed local frame. A * section rendered through a projection retains only source identity. */ export declare function representationHitFromSlicedComplex(product: SlicedComplex3D, intersection: RepresentationIntersection3D): RepresentationHitN; /** * Map a picked RN section primitive to its parent source cell and ancestry. * * The chart is injective — a section names its source, so `ambiguity` is * `'none'` — but the picked point travelled through Float32 display buffers * and barycentric interpolation, so its embedded ambient point is reported as * `'approximate'`, never upgraded to `'exact'`. Source **identity** is exact: * the parent cell index comes from the section's own `parentCells`, and each * corner's original-source affine ancestry rides along in the details, which * is what survives a chained section. * * Points and segments report through `intersection.index`; triangles through * `intersection.faceIndex` — the same convention as the other adapters. */ export declare function representationHitFromSectionChart(product: SectionChart3D, intersection: RepresentationIntersection3D): RepresentationHitN; /** Map an approximate extracted field triangle to its exact source grid cell. */ export declare function representationHitFromSampledSlicedField(product: SampledSlicedField3D, intersection: RepresentationIntersection3D): RepresentationHitN; //# sourceMappingURL=representation-hit.d.ts.map