import { type D3InterpolateName } from '../colors'; import type { EnergyModeInfo } from './'; import type { ElementSymbol } from '../element'; import type { AnyStructure } from '../structure'; import type { ConvexHullConfig, EntryCategoryConfig, GasAnalysis, GasThermodynamicsConfig, HighlightStyle, MarkerSymbol, PhaseData } from './types'; import { DEFAULT_GAS_TEMP } from './types'; export { DEFAULT_GAS_TEMP }; export declare const HULL_STABILITY_TOL = 0.000001; export declare function compute_hull_stability(raw_distance: number, exclude_from_hull?: boolean, tol?: number): { e_above_hull: number; is_stable: boolean; }; type StabilityEntry = { is_stable?: boolean; e_above_hull?: number; }; export declare const extract_structure_from_entry: (entries: PhaseData[], entry: { entry_id?: string; }) => AnyStructure | null; export declare const hull_distance_range: (entries: PhaseData[]) => [number, number]; export declare const entry_is_stable: (entry: StabilityEntry, tol?: number) => boolean; export declare const is_on_hull: (entry: PhaseData, tol?: number) => boolean; export declare const get_arity: (entry: PhaseData) => number; export declare const is_unary_entry: (entry: PhaseData) => boolean; export declare const entry_is_unstable: (entry: StabilityEntry) => boolean; type CategorySource = Pick; export declare function get_entry_category(entry: CategorySource, config: EntryCategoryConfig | null | undefined): string | null; export declare function apply_category_markers(entries: (PhaseData & { marker?: MarkerSymbol; })[], config: EntryCategoryConfig | null | undefined): (PhaseData & { marker?: MarkerSymbol; })[]; export declare const entry_is_visible: (entry: StabilityEntry & CategorySource, show_stable: boolean, show_unstable: boolean, category?: EntryCategoryConfig | null, hidden_categories?: readonly string[]) => boolean; export declare const visible_entries: (entries: readonly Entry[], show_stable: boolean, show_unstable: boolean, category?: EntryCategoryConfig | null, hidden_categories?: readonly string[]) => Entry[]; export declare function get_energy_color_scale(color_mode: `stability` | `energy`, color_scale: D3InterpolateName, plot_entries: { e_above_hull?: number; }[]): ((value: number) => string) | null; export declare function get_point_color_for_entry(entry: { is_stable?: boolean; e_above_hull?: number; }, color_mode: `stability` | `energy`, colors: ConvexHullConfig[`colors`] | undefined, energy_scale: ((value: number) => string) | null): string; export declare function parse_hull_entries_from_drop(event: DragEvent): Promise; export declare function calc_max_hull_dist_in_data(processed_entries: PhaseData[]): number; export declare function compute_auto_hull_dist_threshold(n_entries: number, max_hull_dist_in_data: number, static_default: number): number; export declare function auto_threshold_reset(default_threshold: number): (next_source: unknown, current_threshold: number, next_auto_threshold: number) => number | undefined; export declare function current_entry(entry: Entry | null | undefined, entries: readonly Entry[]): Entry | null; export declare function same_entry(a: Entry | null | undefined, b: Entry | null | undefined): boolean; export declare function build_entry_tooltip_text(entry: PhaseData, category?: EntryCategoryConfig | null): string; export declare function find_hull_entry_at_mouse(canvas: HTMLCanvasElement | undefined, event: MouseEvent, plot_entries: T[], project_point: (x: number, y: number, z: number) => { x: number; y: number; }): T | null; export declare const hull_style_css: (colors: ConvexHullConfig[`colors`] | undefined) => string; export declare function calculate_modal_side(wrapper: HTMLDivElement | undefined): boolean; export declare function compute_energy_mode_info(entries: PhaseData[], // Array of phase entries to analyze find_lowest_energy_unary_refs_fn: (entries: PhaseData[]) => Record, // Function to find unary references energy_source_mode: `precomputed` | `on-the-fly`): EnergyModeInfo; export declare function get_effective_entries(entries: PhaseData[], // Original phase entries energy_mode: `precomputed` | `on-the-fly`, // Energy source mode (precomputed or on-the-fly) unary_refs: Record, // Unary reference entries for energy computation compute_e_form_fn: (entry: PhaseData, unary_refs: Record) => number | null): PhaseData[]; export declare function copy_entry_to_clipboard(entry: PhaseData, position: { x: number; y: number; }, on_feedback: (visible: boolean, pos: { x: number; y: number; }) => void, category?: EntryCategoryConfig | null): Promise; export declare const DEFAULT_HIGHLIGHT_STYLE: Required; export declare const merge_highlight_style: (custom_style: HighlightStyle | undefined) => Required; export declare function is_entry_highlighted(entry: T, highlighted_list: (string | T)[]): boolean; export declare function get_fractional_composition(composition: Record): Record; export interface PolymorphStats { total: number; higher: number; lower: number; equal: number; } export declare function get_composition_label_entries(entries: Iterable): T[]; export declare function compute_all_polymorph_stats(all_entries: PhaseData[]): Map; export declare function draw_highlight_effect(ctx: CanvasRenderingContext2D, projected: { x: number; y: number; }, size: number, container_scale: number, pulse_time: number, style: Required): void; export declare function draw_selection_highlight(ctx: CanvasRenderingContext2D, projected: { x: number; y: number; }, base_size: number, container_scale: number, pulse_time: number, pulse_opacity: number): void; export declare function get_canvas_text_color(dark_mode: boolean, element?: HTMLElement | null): string; export declare function draw_hull_points(ctx: CanvasRenderingContext2D, sorted_points: { entry: Entry; projected: { x: number; y: number; }; }[], opts: { scale: number; shadow_factor: number; selected_entry: Entry | null; is_highlighted: (entry: Entry) => boolean; get_point_color: (entry: Entry) => string; highlight_style: Required; pulse_time: number; pulse_opacity: number; }): void; export declare function marker_path_data(radius: number, marker: MarkerSymbol): string | null; export declare function create_marker_path(size: number, marker?: MarkerSymbol): Path2D; export interface TemperatureAnalysis { has_temp_data: boolean; available_temperatures: number[]; } export declare function analyze_temperature_data(entries: PhaseData[]): TemperatureAnalysis; export declare const entry_has_temperature: (entry: PhaseData, T: number) => boolean; export declare function get_energy_at_temperature(entry: PhaseData, T: number): number; export declare function can_interpolate_at_temperature(entry: PhaseData, T: number, max_gap: number): boolean; export declare function interpolate_energy_at_temperature(entry: PhaseData, T: number, max_gap: number): number | null; export interface TemperatureFilterOptions { interpolate?: boolean; max_interpolation_gap?: number; } export declare function filter_entries_at_temperature(entries: PhaseData[], T: number, options?: TemperatureFilterOptions): PhaseData[]; export declare function get_gas_corrected_entries(entries: PhaseData[], gas_config: GasThermodynamicsConfig | undefined, gas_pressures: Partial>, temperature: number): { entries: PhaseData[]; analysis: GasAnalysis; merged_config: GasThermodynamicsConfig | undefined; }; export declare function get_entry_label(entry: { reduced_formula?: string; name?: string; composition: Record; }, elements?: ElementSymbol[]): string;