import type { ElementSymbol } from '../element'; import type { Vec3 } from '../math'; import type { AnyStructure, BondPair } from './'; export type PolyhedraColorMode = `vertex` | `center` | `uniform`; export interface PolyhedraOptions { min_neighbors?: number; max_neighbors?: number; excluded_center_elements?: readonly string[]; included_center_elements?: readonly string[]; electronegativity_margin?: number; distance_factor?: number; weak_bond_norm?: number; volume_eps?: number; } export 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; } export 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; export declare function build_adjacency(bonds: readonly BondPair[]): Map>; export declare const is_spectator_center: (element: string) => boolean; 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;