import type { PhaseData } from '../convex-hull/types'; import type { Vec2, Vec3 } from '../math'; import { type ChemPotDiagramConfig, type ChemPotDiagramData } from './types'; export declare function safe_energy_per_atom(entry: PhaseData): number; export declare function formula_key_from_composition(composition: Record): string; export declare function entry_elements(entries: PhaseData[]): string[]; export declare function get_min_entries_and_el_refs(entries: PhaseData[]): { min_entries: PhaseData[]; el_refs: Record; }; export declare function best_form_energy_for_formula(entries: PhaseData[], formula: string, el_refs: Record): number | undefined; export interface FormulaEnergyStats { matching_entry_count: number; min_energy_per_atom: number | null; max_energy_per_atom: number | null; } export declare function get_energy_stats_by_formula(entries: PhaseData[]): Map; export declare const renormalize_entries: (entries: PhaseData[], el_refs: Record, elements: string[]) => PhaseData[]; export declare function build_hyperplanes(min_entries: PhaseData[], el_refs: Record, elements: string[]): { hyperplanes: number[][]; hyperplane_entries: PhaseData[]; }; export declare function build_border_hyperplanes(lims: Vec2[]): number[][]; export declare function chebyshev_centre(entry_hs: number[][], lims: Vec2[]): { centre: number[]; radius: number; }; export declare function compute_domains(hyperplanes: number[][], lims: Vec2[], hyperplane_entries: PhaseData[]): Record; export declare function apply_element_padding(domains: Record, elem_indices: number[], padding: number, default_min_limit: number): number[]; export declare function pad_domain_points(pts: number[][], elem_indices: number[], new_lims: number[], default_min_limit: number, padding: number): number[][]; export declare function build_axis_ranges(points: number[][], elements: string[]): { element: string; min_val: number; max_val: number; }[]; export declare function simple_pca(data: number[][], k?: number): { scores: number[][]; eigenvectors: number[][]; means: number[]; }; export declare function orthonormal_2d(line_pts: number[][]): Vec2; export declare function dedup_points(pts: number[][], tol?: number): { unique: number[][]; orig_indices: number[]; }; export declare function get_3d_domain_simplexes_and_ann_loc(points_3d: number[][]): { simplex_indices: number[][]; ann_loc: number[]; is_planar: boolean; }; export declare function bbox_diagonal(points: number[][]): number; export declare function scale_to_font_range(sizes: number[], min_font: number, max_font: number): number[]; export declare const swizzle_to_render: (scale: Vec3) => (d0: number, d1: number, d2: number) => Vec3; export interface VisibleDomainLabel { formula: string; position: [number, number, number]; label_font_size: number; } export declare function get_visible_domain_labels(face_positions: ArrayLike, face_domain_map: string[], label_font_size_by_formula: ReadonlyMap, pinned_labels?: VisibleDomainLabel[]): VisibleDomainLabel[]; export declare const get_ternary_combinations: (elements: string[]) => string[][]; export declare function build_chempot_hyperplanes(entries: PhaseData[], elements: string[], formal_chempots: boolean): { min_entries: PhaseData[]; el_refs: Record; hyperplanes: number[][]; hyperplane_entries: PhaseData[]; }; export declare function compute_chempot_diagram(entries: PhaseData[], config?: ChemPotDiagramConfig): ChemPotDiagramData;