import type { Matrix3x3, Vec2, Vec3 } from '../math'; import type { FrequencyUnit } from './frequency-units'; import type * as types from './types'; export declare const are_qpoints_equivalent: (first: Vec3, second: Vec3, tolerance?: number) => boolean; export declare const phonon_explorer_views: (data: types.PhononModeData, spectrum?: types.VibrationalSpectrum) => types.PhononExplorerView[]; export declare const IMAGINARY_MODE_NOISE_THRESHOLD = 0.005; export declare function pretty_sym_point(symbol: string): string; export declare function branch_segment_keys(band_struct: types.BaseBandStructure): string[]; export declare const is_discontinuity_branch: (branch: types.Branch) => boolean; export declare function scale_segment_distances(segment_distances: number[], x_start: number, x_end: number): number[]; export declare function normalize_densities(densities: number[], freqs_or_energies: number[], mode: types.NormalizationMode): number[]; export declare function apply_gaussian_smearing(freqs_or_energies: number[], densities: number[], sigma: number): number[]; export declare function extract_spin_channels(data: unknown): { up: T; down: T | null; } | null; export declare function normalize_band_structure(band_struct: unknown): types.BaseBandStructure | null; export declare function normalize_dos(dos: unknown): types.DosData | null; export declare function extract_k_path_points(band_struct: types.BaseBandStructure, recip_lattice_matrix: Matrix3x3, options?: { wrap_to_bz?: boolean; }): Vec3[]; export declare function qpoint_x_position(band_struct: types.BaseBandStructure, qpoint_index: number, x_positions: Record): number | null; export declare function find_qpoint_at_rescaled_x(band_struct: types.BaseBandStructure, rescaled_x: number, x_positions: Record): number | null; type SpinDensities = Record; interface PymatgenDos { '@class'?: string; '@module'?: string; energies: number[]; densities: SpinDensities | number[]; efermi: number; } export interface PymatgenCompleteDos extends PymatgenDos { '@class'?: `CompleteDos` | `LobsterCompleteDos`; structure?: Record; pdos?: Record[]; atom_dos?: Record; spd_dos?: Record; } export declare function extract_pdos(dos: unknown, pdos_type: types.PdosType, filter_keys?: string[]): Record | null; export declare function shift_to_fermi(dos: PymatgenCompleteDos): PymatgenCompleteDos; export declare function generate_ribbon_path(x_values: number[], y_values: number[], width_values: number[], x_scale_fn: (x: number) => number, y_scale_fn: (y: number) => number, max_width_px: number, scale?: number): string; export declare const closed_edge_path: (upper_points: string[], lower_points: string[]) => string; export declare function extract_efermi(data: unknown): number | undefined; export declare function negative_fraction(values: number[]): number; export declare function is_electronic_band_struct(band_struct: unknown): boolean; export declare const band_struct_entries: (input: unknown) => [label: string, value: unknown][]; export declare const dos_entries: (input: unknown) => [label: string, value: unknown][]; export declare function padded_frequency_range(values: readonly number[], is_phonon: boolean, padding_factor?: number): Vec2 | undefined; export declare function compute_frequency_range(band_structs: unknown, doses: unknown, padding_factor?: number): Vec2 | undefined; export declare function parse_axis_label(label: string): { name: string; unit?: string; }; export declare function format_dos_tooltip(opts: { x_formatted: string; y_formatted: string; label: string | null; is_horizontal: boolean; is_phonon: boolean; units: FrequencyUnit; x_axis_label: string; y_axis_label: string; num_series: number; }): { title?: string; lines: string[]; }; export declare const SPIN_MODES: readonly [{ readonly value: "mirror"; readonly label: "↕"; readonly title: "Mirror: spin-up above, spin-down below zero"; }, { readonly value: "overlay"; readonly label: "≡"; readonly title: "Overlay: both spins on same axis"; }, { readonly value: "up_only"; readonly label: "↑"; readonly title: "Show spin-up only"; }, { readonly value: "down_only"; readonly label: "↓"; readonly title: "Show spin-down only"; }]; export declare const NORMALIZATION_MODES: readonly [{ readonly value: null; readonly label: "None"; }, { readonly value: "max"; readonly label: "Max=1"; }, { readonly value: "sum"; readonly label: "Sum=1"; }, { readonly value: "integral"; readonly label: "∫=1"; }]; export declare function format_sigma(val: number): string; export declare const validate_sigma_range: ([min, max]: Vec2) => Vec2; export declare function calculate_sigma_step(range: Vec2): number; export interface BandPointMeta extends Record { aria_label: string; band_idx: number; qpoint_idx: number; spin: `up` | `down`; is_acoustic: boolean | null; nb_bands: number; frac_coords: Vec3 | null; qpoint_label: string | null; band_width: number | null; slope: number | null; } export declare const is_gamma_point: (frac_coords: Vec3) => boolean; export declare const find_gamma_indices: (bs: types.BaseBandStructure) => number[]; export declare const ACOUSTIC_FREQ_THRESHOLD = 0.5; export declare function classify_acoustic(bs: types.BaseBandStructure, band_idx: number, gamma_indices: number[], threshold?: number): boolean | null; export declare function build_point_metadata(opts: { x_vals: number[]; y_vals: number[]; band_idx: number; spin: `up` | `down`; is_acoustic: boolean | null; bs: types.BaseBandStructure; start_idx: number; }): BandPointMeta[]; export {};