import type { ElementSymbol } from '../element'; import type { Vec3 } from '../math'; import type { AnyStructure, BondPair } from './'; export type PolyhedraColorMode = `vertex` | `center` | `uniform`; interface PolyhedraOptions { min_neighbors?: number; max_neighbors?: number; excluded_center_elements?: readonly string[]; included_center_elements?: readonly string[]; electronegativity_margin?: number; } interface ConvexHullResult { vertices: Vec3[]; input_idxs: number[]; faces: [number, number, number][]; volume: number; } export interface Polyhedron { center_site_idx: number; center_orig_idx: number; center_element: ElementSymbol; vertices: Vec3[]; vertex_site_idxs: number[]; faces: [number, number, number][]; volume: number; } interface MergedPolyhedraBuffers { positions: Float32Array; colors: Float32Array; edge_positions: Float32Array; triangle_count: number; edge_count: number; } export declare function convex_hull_3d(points: readonly Vec3[], eps_scale?: number): ConvexHullResult; interface PolyhedronNeighbor { site_idx: number; offset: Vec3 | null; } export declare function build_adjacency(bonds: readonly BondPair[]): Map; export declare function compute_polyhedra(structure: AnyStructure, bonds: readonly BondPair[], options?: PolyhedraOptions): Polyhedron[]; export declare function merge_polyhedra_buffers(polyhedra: readonly Polyhedron[], get_vertex_color: (poly: Polyhedron, vertex_idx: number) => string, coplanar_tol?: number): MergedPolyhedraBuffers; export {};